Как вставить символ Tab, когда опция expandtab включена в VIM

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

Но иногда я хочу вставить сам символ вкладки.

Вы знаете, как это сделать?

Ответ 1

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

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

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

Также, как отмечено @feedbackloop, в окнах вам может понадобиться нажать <CTRL-Q>, а не <CTRL-V>.

Ответ 2

Вы можете отключить опцию expandtab из Vim, как показано ниже:

:set expandtab!

или

:set noet

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

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

Ответ 3

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

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

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

set pastetoggle=<F2>

вы также можете сделать <F2>Tab<F2>.