Что делает CTRL + V в vim?

12

В режиме vim, находясь в insertрежиме, если я нажимаю CTRL + V, меня бросает в то, что известно как, x mode (^[,^D...)и когда я нажимаю клавишу (например, клавишу escape), я получаю ^[или что-то еще, что начинается с ^. Это также становится зеленым в моем редакторе.

Что это такое и для чего оно используется?

leeand00
источник
Ты уверен, что это Вим? Ctrl+V(без сдвига) имеет это значение в нескольких терминальных эмуляторах. Возможно, расскажите нам, какой терминал вы используете.
grochmal
@grochmal Это vim в Ubuntu 16.04
leeand00

Ответы:

15

С :h i_CTRL-V( i_указывает на режим вставки):

                                                i_CTRL-V
CTRL-V          Insert next non-digit literally.  For special keys, the
                terminal code is inserted.  It's also possible to enter the
                decimal, octal or hexadecimal value of a character
                i_CTRL-V_digit.
                The characters typed right after CTRL-V are not considered for
                mapping.  {Vi: no decimal byte entry}
                Note: When CTRL-V is mapped (e.g., to paste text) you can
                often use CTRL-Q instead i_CTRL-Q.

Поэтому, когда вы это делаете ^v Esc, вы буквально вводите Escперсонажа в текст - Vim не будет делать то, что обычно делает. EscХарактер, как правило , представляется в виде ^[, в ^существо Ctrl, и нажатие Ctrl[будет обычно вам эквивалент нажатия Esc.

ASCII Ubuntu страница руководства является полезным в визуализации отображения:

010   8     08    BS  '\b' (backspace)        110   72    48    H
011   9     09    HT  '\t' (horizontal tab)   111   73    49    I
012   10    0A    LF  '\n' (new line)         112   74    4A    J
013   11    0B    VT  '\v' (vertical tab)     113   75    4B    K
014   12    0C    FF  '\f' (form feed)        114   76    4C    L
015   13    0D    CR  '\r' (carriage ret)     115   77    4D    M
...
033   27    1B    ESC (escape)                133   91    5B    [

В Shiftэтом случае ничего не происходит, Vim видит то же самое, что и при нажатии CtrlV. Попробуйте CtrlVCtrlVи CtrlVCtrlShiftV.

Мур
источник