VIM输入特殊字符
二合字母
digraph
digraphs
Digraphs
二合字母用来输入不能用普通键盘输入的字符。它们通常是可显示的非 ASCII 字符。二
合字母比用 CTRL-V 输入十进制编码更方便记忆 (见 |i_CTRL-V|)。
用户手册 |24.9| 有二合字母的简短介绍。一个替代方案是用 ‘keymap’ 选项。
- 定义二合字母 |digraphs-define|
- 使用二合字母 |digraphs-use|
- 缺省的二合字母 |digraphs-default|
{Vi 没有这些命令}
-
定义二合字母
digraphs-define
:dig
:digraphs
:dig[raphs] 显示当前定义的二合字母。
E104
E39
:dig[raphs] {char1}{char2} {number} …
把二合字母 {char1}{char2} 加入列表。{number} 是字符的
十进制表示形式。例如:
:digr e: 235 a: 228
避免定义 ‘_’ (下划线) 开头的二合字母,将来它会有特殊的
含义。
Vim 通常编译时带有 |+digraphs| 特性。如果没有,”:digraph” 命令会显示错误信息。
“:digraphs” 输出的例子:
TH T 222 ss ? 223 a! à 224 a’ á 225 a> a 226 a? ? 227 a: ? 228
每列 (译者注: “TH T 222” 称为一列) 前两个字符是你用来输入二合字母的两个字符。
每列的中间是产生的字符。如果你用不支持二合字母的系统察看或者打印,它们可能是乱
码。
digraph-encoding
通常,十进制表示形式是字符的 Unicode 数值。注意 ‘encoding’ 改变的时候该数值并
不改变。如果需要,字符从 Unicode 转换为 ‘encoding’。这需要该转换确实能实现,有
时并非如此。NUL 字符会显示为 “10”,这是因为 NUL 字符内部用 NL 字符表示。写回文
件时它会还原为 NUL 字符的。
如果 Vim 编译时没有 +multi_byte 特性,你需要指定该字符在 ‘encoding’ 里的编码。
可以这样使用:
if has(“multi_byte”)
digraph oe 339
elseif &encoding == “iso-8859-15”
digraph oe 189
endif
这样,“oe” 二合字母在 Unicode 里使用数值 339,而在 latin9 (iso-8859-15) 里使用
数值 189。
2. 使用二合字母
digraphs-use
有两个方法输入二合字母:
i_digraph
CTRL-K {char1} {char2} 或
{char1} {char2}
第一个方法总是可以用的;第二个方法只有在 ‘digraph’ 选项置位的时候才可用。
如果二合字母 {char1}{char2} 不存在,Vim 会搜索二合字母 {char2}{char1}。这样,
即使你不记得何者在前,也能输入。
注意 如果输入 CTRL-K {char1} 时,{char1} 是特殊键,Vim 只会输入该键的编码。这
就不是输入二合字母了。
一旦你输入了二合字母,Vim 把该字符当成占据文件和屏幕的一个正常字符。示例:
‘B’ ‘B’ 会输入中间断开的 ‘|’ 字符 (166)
‘a’ ‘>’ 会输入带 circumflex 重音的 ‘a’ (226)
CTRL-K ‘-’ ‘-’ 会输入软的破折号 (173)
“:digraphs” 列出当前的二合字母。一些缺省的二合字母列在下面的 |digraph-table|
里。
对 CTRL-K 而言,有一个通用的二合字母: CTRL-K {char} 会输入 {char},并
设置最高位。你可以用这个方法来输入带 meta 的字符。
二合字母里不能有 字符。按 的时候,Vim 停止二合字母的输入并回到插入
或命令行模式,这也可以理解为 退出了二合字母的上下文。用 CTRL-V 155 输入
meta-ESC (CSI)。
如果你本来想输入 ‘e’ 但不小心输入了 ‘a’,你也许会键入 ‘a’ ‘e’。但是这个序
列成了二合字母。这也许不是你想要的。要纠正这个错误,你需要再按一次 e。要
避免这一点,不要置位 ‘digraph’ 选项,只用 CTRL-K 输入二合字母。
Vim 里使用值高于 128 的字符可能会有问题。例如: 你输入 ue (u-umlaut) 而编辑器在
插入模式回显 \334。离开插入模式一切就正常了。注意 fmt 删除待排版的文本里所有值
高于 128 的字符。有的 Unix 系统上,解决方法是定义 LC_CTYPE。如果你使用 csh,把
这行放入 .cshrc:
setenv LC_CTYPE iso_8859_1
3. 缺省的二合字母
digraphs-default
Vim 缺省提供了一些二合字母。”:digraphs” 的输出列出这些二合字母。
Vim 在大多数系统中使用相同二合字母。它们适用于 Unicode 和 ISO-8859-1 字符集。
缺省的二合字母是 RFC1345 提供的助记符。为了方便记住这些助记符,第二个字符有一
个标准的含义:
字符名 字符 含义
Exclamation mark ! Grave (钝音符号)
Apostrophe ’ Acute (锐音符号)
Greater-Than sign > Circumflex (折音/抑扬符号)
Question Mark ? Tilde (腭化/鼻音化符号)
Hyphen-Minus – Macron (长音符号)
Left parenthesis ( Breve (短音符号)
Full Stop . 上带点 (Dot)
Colon : Diaeresis (分音符号)
Comma , Cedilla (软音符号)
Underline _ 带下划线 (Underline)
Solidus / 带短划线 (Stroke)
Quotation mark ” Double acute (双锐音符号)
Semicolon ; Ogonek (鼻音化符号)
Less-Than sign < Caron (楔形/倒折音符号)
Zero 0 上带圆圈 (Ring)
Two 2 上带钩 (Hook)
Nine 9 带角 (Horn)
Equals = 西里尔字母 (Cyrillic)
Asterisk * 希腊语
Percent sign % 特殊的希腊/西里尔字母
Plus + 小写: 阿拉伯语,大写: 希伯来语
Three 3 一些拉丁/希腊/西里尔字母
Four 4 注音符号
Five 5 平假名
Six 6 片假名
示例: a: 是 ? 而 o: 是 ?
下面列出 RFC1345 定义的单字节二合字母。其他的二合字母见 “:digraphs”。高于 255
的字符只有在 Vim 编译的时候加上 |+multi_byte| 特性才能使用。
EURO
特例: RFC1345 没有指定欧元 (euro) 符号。Vim 里为此目的加入了二合字母 =e。注意
以下区别: latin1 里,二合字母 Cu 用于货币符号,而 latin9 (iso-8859-15) 里二合
字母 =e 用于欧元符号,尽管两者都代表字符 164,0xa4。为了和 zsh 兼容,Eu 也用于
欧元符号。
digraph-table
字符 二合字母 十六进 十进制 正式名字
^@ 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)//先键击Ctrl键不要放手,然后依次键击字母V和字符H,完成输入
^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 SYNCHRONOUS 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)
1
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 -a 0xaa 170 FEMININE ORDINAL INDICATOR
? << 0xab 171 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
? NO 0xac 172 NOT SIGN
– 0xad 173 SOFT HYPHEN
? Rg 0xae 174 REGISTERED SIGN
ˉ ‘m 0xaf 175 MACRON
° DG 0xb0 176 DEGREE SIGN
± ± 0xb1 177 PLUS-MINUS SIGN
2 2S 0xb2 178 SUPERSCRIPT TWO
3 3S 0xb3 179 SUPERSCRIPT THREE
′ ‘’ 0xb4 180 ACUTE ACCENT
μ My 0xb5 181 MICRO SIGN
? PI 0xb6 182 PILCROW SIGN
· .M 0xb7 183 MIDDLE DOT
? ‘, 0xb8 184 CEDILLA
1 1S 0xb9 185 SUPERSCRIPT ONE
o -o 0xba 186 MASCULINE ORDINAL INDICATOR
? >> 0xbb 187 RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
? 14 0xbc 188 VULGAR FRACTION ONE QUARTER
? 12 0xbd 189 VULGAR FRACTION ONE HALF
? 34 0xbe 190 VULGAR FRACTION THREE QUARTERS
? ?I 0xbf 191 INVERTED QUESTION MARK
à A! 0xc0 192 LATIN CAPITAL LETTER A WITH GRAVE
á A’ 0xc1 193 LATIN CAPITAL LETTER A WITH ACUTE
? A> 0xc2 194 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
? A? 0xc3 195 LATIN CAPITAL LETTER A WITH TILDE
? A: 0xc4 196 LATIN CAPITAL LETTER A WITH DIAERESIS
? AA 0xc5 197 LATIN CAPITAL LETTER A WITH RING ABOVE
? AE 0xc6 198 LATIN CAPITAL LETTER AE
? C, 0xc7 199 LATIN CAPITAL LETTER C WITH CEDILLA
è E! 0xc8 200 LATIN CAPITAL LETTER E WITH GRAVE
é E’ 0xc9 201 LATIN CAPITAL LETTER E WITH ACUTE
ê E> 0xca 202 LATIN CAPITAL LETTER E WITH CIRCUMFLEX
? E: 0xcb 203 LATIN CAPITAL LETTER E WITH DIAERESIS
ì I! 0xcc 204 LATIN CAPITAL LETTER I WITH GRAVE
í I’ 0xcd 205 LATIN CAPITAL LETTER I WITH ACUTE
? I> 0xce 206 LATIN CAPITAL LETTER I WITH CIRCUMFLEX
? I: 0xcf 207 LATIN CAPITAL LETTER I WITH DIAERESIS
D D- 0xd0 208 LATIN CAPITAL LETTER ETH (Icelandic)
? N? 0xd1 209 LATIN CAPITAL LETTER N WITH TILDE
ò O! 0xd2 210 LATIN CAPITAL LETTER O WITH GRAVE
ó O’ 0xd3 211 LATIN CAPITAL LETTER O WITH ACUTE
? O> 0xd4 212 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
? O? 0xd5 213 LATIN CAPITAL LETTER O WITH TILDE
? O: 0xd6 214 LATIN CAPITAL LETTER O WITH DIAERESIS
× *X 0xd7 215 MULTIPLICATION SIGN
? O/ 0xd8 216 LATIN CAPITAL LETTER O WITH STROKE
ù U! 0xd9 217 LATIN CAPITAL LETTER U WITH GRAVE
ú U’ 0xda 218 LATIN CAPITAL LETTER U WITH ACUTE
? U> 0xdb 219 LATIN CAPITAL LETTER U WITH CIRCUMFLEX
ü U: 0xdc 220 LATIN CAPITAL LETTER U WITH DIAERESIS
Y Y’ 0xdd 221 LATIN CAPITAL LETTER Y WITH ACUTE
T TH 0xde 222 LATIN CAPITAL LETTER THORN (Icelandic)
? ss 0xdf 223 LATIN SMALL LETTER SHARP S (German)
à a! 0xe0 224 LATIN SMALL LETTER A WITH GRAVE
á a’ 0xe1 225 LATIN SMALL LETTER A WITH ACUTE
a a> 0xe2 226 LATIN SMALL LETTER A WITH CIRCUMFLEX
? a? 0xe3 227 LATIN SMALL LETTER A WITH TILDE
? a: 0xe4 228 LATIN SMALL LETTER A WITH DIAERESIS
? aa 0xe5 229 LATIN SMALL LETTER A WITH RING ABOVE
? ae 0xe6 230 LATIN SMALL LETTER AE
? c, 0xe7 231 LATIN SMALL LETTER C WITH CEDILLA
è e! 0xe8 232 LATIN SMALL LETTER E WITH GRAVE
é e’ 0xe9 233 LATIN SMALL LETTER E WITH ACUTE
ê e> 0xea 234 LATIN SMALL LETTER E WITH CIRCUMFLEX
? e: 0xeb 235 LATIN SMALL LETTER E WITH DIAERESIS
ì i! 0xec 236 LATIN SMALL LETTER I WITH GRAVE
í i’ 0xed 237 LATIN SMALL LETTER I WITH ACUTE
? i> 0xee 238 LATIN SMALL LETTER I WITH CIRCUMFLEX
? i: 0xef 239 LATIN SMALL LETTER I WITH DIAERESIS
e d- 0xf0 240 LATIN SMALL LETTER ETH (Icelandic)
? n? 0xf1 241 LATIN SMALL LETTER N WITH TILDE
ò o! 0xf2 242 LATIN SMALL LETTER O WITH GRAVE
ó o’ 0xf3 243 LATIN SMALL LETTER O WITH ACUTE
? o> 0xf4 244 LATIN SMALL LETTER O WITH CIRCUMFLEX
? o? 0xf5 245 LATIN SMALL LETTER O WITH TILDE
? o: 0xf6 246 LATIN SMALL LETTER O WITH DIAERESIS
÷ -: 0xf7 247 DIVISION SIGN
? o/ 0xf8 248 LATIN SMALL LETTER O WITH STROKE
ù u! 0xf9 249 LATIN SMALL LETTER U WITH GRAVE
ú u’ 0xfa 250 LATIN SMALL LETTER U WITH ACUTE
? u> 0xfb 251 LATIN SMALL LETTER U WITH CIRCUMFLEX
ü u: 0xfc 252 LATIN SMALL LETTER U WITH DIAERESIS
y y’ 0xfd 253 LATIN SMALL LETTER Y WITH ACUTE
t th 0xfe 254 LATIN SMALL LETTER THORN (Icelandic)
? y: 0xff 255 LATIN SMALL LETTER Y WITH DIAERESIS
vim:tw=78:ts=8:ft=help:norl:
Generated by vim2html on Mon Oct 6 16:25:06 UTC 2008
-
EC 0x1b 27 ESCAPE (ESC)
^\ FS 0x1c 28 FILE SEPARATOR (IS4)
^
↩︎