*digraph.txt*   For Vim version 7.0aa.  Last change: 2005 Sep 11


		  VIM REFERENCE MANUAL    by Bram Moolenaar


Digraphs						*digraphs* *Digraphs*

Digraphs are used to enter characters that normally cannot be entered by
an ordinary keyboard.  These are mostly accented characters which have the
eighth bit set.  The digraphs are easier to remember than the decimal number
that can be entered with CTRL-V (see |i_CTRL-V|).

There is a brief introduction on digraphs in the user manual: |24.9|
An alternative is using the 'keymap' option.

1. Defining digraphs	|digraphs-define|
2. Using digraphs	|digraphs-use|
3. Default digraphs	|digraphs-default|

{Vi does not have any of these commands}

==============================================================================
1. Defining digraphs					*digraphs-define*

						*:dig* *:digraphs*
:dig[raphs]		show currently defined digraphs.
							*E104* *E39*
:dig[raphs] {char1}{char2} {number} ...
			Add digraph {char1}{char2} to the list.  {number} is
			the decimal representation of the character.  Normally
			it is the Unicode character, see |digraph-encoding|.
			Example: >
	:digr e: 235 a: 228
<			Avoid defining a digraph with '_' (underscore) as the
			first character, it has a special meaning in the
			future.

Vim is normally compiled with the |+digraphs| feature.  If the feature is
disabled, the ":digraph" command will display an error message.

Example of the output of ":digraphs": >
 TH   222  ss   223  a!   224  a'   225  a>   226  a?   227  a:   228

The first two characters in each column are the characters you have to type to
enter the digraph.

In the middle of each column is the resulting character.  This may be mangled
if you look at it on a system that does not support digraphs or if you print
this file.

							*digraph-encoding*
The decimal number normally is the Unicode number of the character.  Note that
the meaning doesn't change when 'encoding' changes.  The character will be
converted from Unicode to 'encoding' when needed.  This does require the
conversion to be available, it might fail.

When Vim was compiled without the +multi_byte feature, you need to specify the
character in the encoding given with 'encoding'.  You might want to use
something like this: >

	if has("multi_byte")
		digraph oe 339
	elseif &encoding == "iso-8859-15"
		digraph oe 189
	endif

This defines the "oe" digraph for a character that is number 339 in Unicode
and 189 in latin9 (iso-8859-15).

==============================================================================
2. Using digraphs					*digraphs-use*

There are two methods to enter digraphs:			*i_digraph*
	CTRL-K {char1} {char2}		or
	{char1} <BS> {char2}
The first is always available; the second only when the 'digraph' option is
set.

If a digraph with {char1}{char2} does not exist, Vim searches for a digraph
{char2}{char1}.  This helps when you don't remember which character comes
first.

Note that when you enter CTRL-K {char1}, where {char1} is a special key, Vim
enters the code for that special key.  This is not a digraph.

Once you have entered the digraph, Vim treats the character like a normal
character that occupies only one character in the file and on the screen.
Example: >
	'B' <BS> 'B'	will enter the broken '|' character (166)
	'a' <BS> '>'	will enter an 'a' with a circumflex (226)
	CTRL-K '-' '-'	will enter a soft hyphen (173)

The current digraphs are listed with the ":digraphs" command.  Some of the
default ones are listed below |digraph-table|.

For CTRL-K, there is one general digraph: CTRL-K <Space> {char} will enter
{char} with the highest bit set.  You can use this to enter meta-characters.

The <Esc> character cannot be part of a digraph.  When hitting <Esc>, Vim
stops digraph entry and ends Insert mode or Command-line mode, just like
hitting an <Esc> out of digraph context.  Use CTRL-V 155 to enter meta-ESC
(CSI).

If you accidentally typed an 'a' that should be an 'e', you will type 'a' <BS>
'e'.  But that is a digraph, so you will not get what you want.  To correct
this, you will have to type <BS> e again.  To avoid this don't set the
'digraph' option and use CTRL-K to enter digraphs.

You may have problems using Vim with characters which have an ASCII value
above 128.  For example: You insert ue (u-umlaut) and the editor echoes \334
in Insert mode.  After leaving the Insert mode everything is fine.  Note that
fmt removes all characters with ASCII codes above 128 from the text being
formatted.  On some Unix systems this means you have to define the
environment-variable LC_CTYPE.  If you are using csh, then put the following
line in your .cshrc: >
	setenv LC_CTYPE iso_8859_1

==============================================================================
3. Default digraphs					*digraphs-default*

Vim comes with a set of default digraphs.  Check the output of ":digraphs" to
see them.

On most systems Vim uses the same digraphs.  They work for the Unicode and
ISO-8859-1 character sets.  These default digraphs are taken from the RFC1345
mnemonics.  To make it easy to remember the mnemonic, the second character has
a standard meaning:

	char name		char	meaning ~
	Exclamation mark	!	Grave
	Apostrophe		'	Acute accent
	Greater-Than sign	>	Circumflex accent
	Question Mark		?	tilde
	Hyphen-Minus		-	Macron
	Left parenthesis	(	Breve
	Full Stop		.	Dot Above
	Colon			:	Diaeresis
	Comma			,	Cedilla
	Underline		_	Underline
	Solidus			/	Stroke
	Quotation mark		"	Double acute accent
	Semicolon		;	Ogonek
	Less-Than sign		<	Caron
	Zero			0	Ring above
	Two			2	Hook
	Nine			9	Horn

	Equals			=	Cyrillic
	Asterisk		*	Greek
	Percent sign		%	Greek/Cyrillic special
	Plus			+	smalls: Arabic, capitals: Hebrew
	Three			3	some Latin/Greek/Cyrillic letters
	Four			4	Bopomofo
	Five			5	Hiragana
	Six			6	Katakana

Example: a: is   and o: is 

These are the RFC1345 digraphs for the one-byte characters.  See the output of
":digraphs" for the others.  The characters above 255 are only available when
Vim was compiled with the |+multi_byte| feature.

EURO

Exception: RFC1345 doesn't specify the euro sign.  In Vim the digraph =e was
added for this.  Note the difference between latin1, where the digraph Cu is
used for the currency sign, and latin9 (iso-8859-15), where the digraph =e is
used for the euro sign, while both of them are the character 164, 0xa4.  For
compatibility with zsh Eu can also be used for the euro sign.

							*digraph-table*
char  digraph	hex	dec	official name ~
^@	NU	0x00	  0	NULL (NUL)
^A	SH	0x01	  1	START OF HEADING (SOH)
^B	SX	0x02	  2	START OF TEXT (STX)
^C	EX	0x03	  3	END OF TEXT (ETX)
^D	ET	0x04	  4	END OF TRANSMISSION (EOT)
^E	EQ	0x05	  5	ENQUIRY (ENQ)
^F	AK	0x06	  6	ACKNOWLEDGE (ACK)
^G	BL	0x07	  7	BELL (BEL)
^H	BS	0x08	  8	BACKSPACE (BS)
^I	HT	0x09	  9	CHARACTER TABULATION (HT)
^@	LF	0x0a	 10	LINE FEED (LF)
^K	VT	0x0b	 11	LINE TABULATION (VT)
^L	FF	0x0c	 12	FORM FEED (FF)
^M	CR	0x0d	 13	CARRIAGE RETURN (CR)
^N	SO	0x0e	 14	SHIFT OUT (SO)
^O	SI	0x0f	 15	SHIFT IN (SI)
^P	DL	0x10	 16	DATALINK ESCAPE (DLE)
^Q	D1	0x11	 17	DEVICE CONTROL ONE (DC1)
^R	D2	0x12	 18	DEVICE CONTROL TWO (DC2)
^S	D3	0x13	 19	DEVICE CONTROL THREE (DC3)
^T	D4	0x14	 20	DEVICE CONTROL FOUR (DC4)
^U	NK	0x15	 21	NEGATIVE ACKNOWLEDGE (NAK)
^V	SY	0x16	 22	SYNCRONOUS IDLE (SYN)
^W	EB	0x17	 23	END OF TRANSMISSION BLOCK (ETB)
^X	CN	0x18	 24	CANCEL (CAN)
^Y	EM	0x19	 25	END OF MEDIUM (EM)
^Z	SB	0x1a	 26	SUBSTITUTE (SUB)
^[	EC	0x1b	 27	ESCAPE (ESC)
^\	FS	0x1c	 28	FILE SEPARATOR (IS4)
^]	GS	0x1d	 29	GROUP SEPARATOR (IS3)
^^	RS	0x1e	 30	RECORD SEPARATOR (IS2)
^_	US	0x1f	 31	UNIT SEPARATOR (IS1)
	SP	0x20	 32	SPACE
#	Nb	0x23	 35	NUMBER SIGN
$	DO	0x24	 36	DOLLAR SIGN
@	At	0x40	 64	COMMERCIAL AT
[	<(	0x5b	 91	LEFT SQUARE BRACKET
\	//	0x5c	 92	REVERSE SOLIDUS
]	)>	0x5d	 93	RIGHT SQUARE BRACKET
^	'>	0x5e	 94	CIRCUMFLEX ACCENT
`	'!	0x60	 96	GRAVE ACCENT
{	(!	0x7b	123	LEFT CURLY BRACKET
|	!!	0x7c	124	VERTICAL LINE
}	!)	0x7d	125	RIGHT CURLY BRACKET
~	'?	0x7e	126	TILDE
^?	DT	0x7f	127	DELETE (DEL)
~@	PA	0x80	128	PADDING CHARACTER (PAD)
~A	HO	0x81	129	HIGH OCTET PRESET (HOP)
~B	BH	0x82	130	BREAK PERMITTED HERE (BPH)
~C	NH	0x83	131	NO BREAK HERE (NBH)
~D	IN	0x84	132	INDEX (IND)
~E	NL	0x85	133	NEXT LINE (NEL)
~F	SA	0x86	134	START OF SELECTED AREA (SSA)
~G	ES	0x87	135	END OF SELECTED AREA (ESA)
~H	HS	0x88	136	CHARACTER TABULATION SET (HTS)
~I	HJ	0x89	137	CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
~J	VS	0x8a	138	LINE TABULATION SET (VTS)
~K	PD	0x8b	139	PARTIAL LINE FORWARD (PLD)
~L	PU	0x8c	140	PARTIAL LINE BACKWARD (PLU)
~M	RI	0x8d	141	REVERSE LINE FEED (RI)
~N	S2	0x8e	142	SINGLE-SHIFT TWO (SS2)
~O	S3	0x8f	143	SINGLE-SHIFT THREE (SS3)
~P	DC	0x90	144	DEVICE CONTROL STRING (DCS)
~Q	P1	0x91	145	PRIVATE USE ONE (PU1)
~R	P2	0x92	146	PRIVATE USE TWO (PU2)
~S	TS	0x93	147	SET TRANSMIT STATE (STS)
~T	CC	0x94	148	CANCEL CHARACTER (CCH)
~U	MW	0x95	149	MESSAGE WAITING (MW)
~V	SG	0x96	150	START OF GUARDED AREA (SPA)
~W	EG	0x97	151	END OF GUARDED AREA (EPA)
~X	SS	0x98	152	START OF STRING (SOS)
~Y	GC	0x99	153	SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
~Z	SC	0x9a	154	SINGLE CHARACTER INTRODUCER (SCI)
~[	CI	0x9b	155	CONTROL SEQUENCE INTRODUCER (CSI)
~\	ST	0x9c	156	STRING TERMINATOR (ST)
~]	OC	0x9d	157	OPERATING SYSTEM COMMAND (OSC)
~^	PM	0x9e	158	PRIVACY MESSAGE (PM)
~_	AC	0x9f	159	APPLICATION PROGRAM COMMAND (APC)
|	NS	0xa0	160	NO-BREAK SPACE
	!I	0xa1	161	INVERTED EXCLAMATION MARK
	Ct	0xa2	162	CENT SIGN
	Pd	0xa3	163	POUND SIGN
	Cu	0xa4	164	CURRENCY SIGN
	Ye	0xa5	165	YEN SIGN
	BB	0xa6	166	BROKEN BAR
	SE	0xa7	167	SECTION SIGN
	':	0xa8	168	DIAERESIS
	Co	0xa9	169	COPYRIGHT SIGN
	-a	0xaa	170	FEMININE ORDINAL INDICATOR
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               