Как я могу вставить реальный символ табуляции в Vim?
Когда у меня есть мой vimrc здесь:
set tabstop=2
set shiftwidth=2
set softtabstop=2
set expandtab
set smarttab
И у меня установлен плагин supertab. Всякий раз, когда я нахожусь в режиме вставки, я нажимаю клавишу табуляции, она показывает автоматическое завершение, но иногда я хотел бы вставить настоящий символ табуляции в строковый литерал, например. Так что я имею в виду всякий раз, когда я нажимаю клавишу tab в строковом литерале в двойных кавычках, мы должны ввести настоящий символ табуляции.
2 ответа
Находясь в режиме вставки или командном режиме (:
в нижней части редактора), нажмите CTRL + V, затем нажмите TAB.
Использование CTRL + V сигнализирует Vim, что следующий символ должен быть буквальным. Даже в режиме вставки.
ОБНОВИТЬ:
Как отметил Герберт Ситц, если gVim находится в режиме Windows (по умолчанию), вы должны использовать CRTL + Q вместо CTRL + V.
@Samnang: у меня есть такая же настройка, как у вас; к сожалению, ответ Джейсона не сработал для меня.
Это обходной путь:
- Замените какой-либо символ (например, обратный тик: `) или символы (например, уникальную буквенно-цифровую строку: zzz), где вы хотите, чтобы ваши вкладки
Выберите текст (визуальный режим) и выполните поиск / замену,
: 'S /' /\ т / г
Обновленный ответ, вдохновленный комментариями @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
Ссылки (Stackru):
- Замените символ в определенной позиции другим символом, используя регулярное выражение Vim
- Как добавить символ в определенном положении в строке?
Рекомендации (другие):