Как я могу вставить реальный символ табуляции в Vim? - PullRequest
56 голосов
/ 05 августа 2011

Когда у меня есть мой vimrc здесь:

set tabstop=2
set shiftwidth=2
set softtabstop=2
set expandtab
set smarttab

И у меня установлен плагин supertab.Всякий раз, когда я нахожусь в режиме вставки, я нажимаю клавишу табуляции, она показывает автоматическое завершение, но иногда я хотел бы вставить настоящий символ табуляции в строковый литерал, например.Итак, что я имею в виду, когда нажимаю клавишу табуляции в строковом литерале в двойных кавычках, мы должны ввести настоящий символ табуляции.

Ответы [ 2 ]

97 голосов
/ 05 августа 2011

В режиме вставки или командном режиме (подсказка : внизу редактора) введите CTRL + V , затем TAB .

Использование CTRL + V сигнализирует Vim, что следующий символ должен быть буквально принят.Даже в режиме вставки.

ОБНОВЛЕНИЕ:

Как отметил Герберт Ситц, если gVim находится в режиме Windows (по умолчанию), вы должны использовать CRTL + Q вместо CTRL + V .

0 голосов
/ 26 октября 2017

@ Самнанг: У меня такая же настройка, как и у вас; к сожалению, ответ Джейсона не сработал для меня.

Это обходной путь:

  • Замените некоторый символ (например, обратный тик: `) или символы (например, уникальную буквенно-цифровую строку: zzz), где вы хотите, чтобы ваши вкладки были
  • Выберите текст (Визуальный режим) и выполните поиск / замену,

    :'s/`/\t/g

Обновленный ответ, вдохновленный комментариями @ Cyryl1972.

Вставить вкладку в начале всех строк (обратите внимание также: нет необходимости выделять строки для любого из следующего кода, так как он включен в часть выражения, соответствующую строке):

:1,$s/^/\t\1/

Инертная вкладка после первых 10 символов во всех строках:

:1,$s/^\(.\{10}\)/\1\t/

Пояснение - первая часть:

:1,$      Match from line 1 to end of file
^(.{10}   Collect (preserve) all text from beginning of line to position 10
          (you need to escape the parentheses, \( and \), as well the FIRST
          (left) curly brace, only: \{ -- as it, { , appears to have special
          meaning in regex when used for this purpose

Пояснение - вторая часть:

/1        Add back the preserved text
\t        Insert a tab

... и автоматически восстанавливается остальная часть строки.

Текущая строка, только:

:s/^/\t\1/

Пример: вставить вкладку в позицию 10 (с индексами 0) в строках 2-4:

1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 

:2,4s/^\(.\{10}\)/\1\t/

1234567890abcdefghij 
1234567890  abcdefghij 
1234567890  abcdefghij 
1234567890  abcdefghij 
1234567890abcdefghij 

Ссылки (StackOverflow):

Ссылки (другие):

...