Как вставить символ табуляции, если в Vim включен параметр расширения

352

Когда я нахожусь в режиме вставки и у меня expandtabвключена опция, нажатие Tab ↹приводит к вставке настроенного количества пробелов.

Но иногда я хочу вставить фактический символ табуляции.

Ты знаешь как это сделать?

devemouse
источник

Ответы:

516

Вы можете использовать <CTRL-V><Tab>в «режиме вставки». В режиме <CTRL-V>вставки вставляет буквальную копию вашего следующего символа.

Если вам нужно делать это часто, @ Dee`Kej предложил (в комментариях) установить Shift+, Tabчтобы вставить реальную вкладку с этим отображением:

:inoremap <S-Tab> <C-V><Tab>

Кроме того, как отмечает @feedbackloop, в Windows вам может потребоваться нажать <CTRL-Q>вместо <CTRL-V>.

Майкл Андерсон
источник
33
А затем используйте, .чтобы повторить последнюю команду, если вы хотите вставить несколько вкладок.
Ксавье Т.
10
У меня были некоторые проблемы с использованием этой комбинации, потому что я был в командном режиме. Убедитесь, что вы выполнили эту команду в режиме РЕДАКТИРОВАНИЯ.
мгфернан
11
Режим INSERT, технически.
mkmurray
2
Примечание. Если вы используете gVim в Windows, вам, скорее всего, придется использовать вместо него CTRL+ Q- см. Stackoverflow.com/questions/6951672/…
feedbackloop
8
У меня есть простой ярлык для этого случая, и он работает (не ломая ничего): inoremap <S-Tab> <C-V><Tab>- Вы можете поместить его в свой ~/.vimrcфайл.
Ди'Кей,
34

Вы можете отключить функцию расширения в Vim, как показано ниже:

:set expandtab!

или

:set noet

PS: И установите его обратно, когда закончите вставку вкладки, с помощью «set expandtab» или «set et»

PS: Если у вас есть набор вкладок, эквивалентный 4 пробелам в .vimrc (softtabstop), вы также можете установить его на 8 пробелов, чтобы можно было вставлять вкладку, нажимая клавишу табуляции один раз вместо двух (set softtabstop = 8 ).

Джаханзеб Фарук
источник
Короче: set etи set noetпереключаться tabи по spaceмере необходимости.
Эрик Ван
Ctrl + V вызвал вставку, и у меня не было времени настроить привязки клавиш. Это помогло
Шириш Хирекоди
2

Из документации по expandtab:

Чтобы вставить реальную вкладку, когда expandtabона включена, используйте . Смотрите также и ins-expandtab . Эта опция сбрасывается, когда опция установлена, и восстанавливается, когда опция сбрасывается.CTRL-V<Tab>:retab
pastepaste

Так что если у вас есть отображение для переключения pasteопции, например

set pastetoggle=<F2>

Вы могли бы также сделать <F2>Tab<F2>.

Евгений Ярмаш
источник