vim - установить автоматический отступ, чтобы заполнить ведущее пространство пробелом или табуляцией
-
28-10-2019 - |
Вопрос
Похоже, что если мы включим 'ai', vim заполнит начальное пространство табуляцией. Я могу заполнить его просто пробелом с помощью "et".Мне не нравится C-файл, в котором есть пробелы и табуляция.
Мой vimrc:
родовое словоОднако в некоторых случаях мне действительно нужно вводить табуляцию, когда я нажимаю «TAB» на клавиатуре, например, в make-файле и некоторых других. Команда autocmd FileType не подходит: я не могу добавить все типы файлов в vimrc.
Я хочу просто :
- автоотступ для заполнения ведущей области пробел;
- при нажатии "TAB" на клавиатуре, табуляция ввод, а не пробел (так что нет "et")
Как это сделать?
Решение
Если я правильно прочитал, он делает то же самое, что и ответ @Lynch.
Вы также можете использовать <C-v><Tab>
: это вставит код <Tab>
без вызова каких-либо сопоставлений и игнорирует expandtab, если вы по какой-либо причине не переназначили <C-v>
или <C-v><Tab>
.
Если вы хотите просто вставить вкладку, сделайте
родовое словоПараметр expandtab игнорируется.
Другие советы
Я сделал это с помощью функции. Я тестировал его, но, возможно, в каком-то конкретном случае вам придется исправить некоторые ошибки. Попробуйте добавить это в свой vimrc:
родовое словоПо сути, он переназначает ваш ключ в визуальном режиме на функцию Inserttab (). Также обратите внимание, что если вы измените ts на что-то другое, кроме 4, он все равно будет выводить 4 пробела вместо двух, потому что значение жестко закодировано.
Также я не очень знаком со скриптами vim, но думаю, что все используемые переменные будут глобальными, что плохо.
Я забыл упомянуть, что чтобы «увидеть» пробелы, вы можете использовать set list
. Вы отключаете это с помощью set nolist
. Также в обычном режиме вы можете использовать ga
для просмотра информации о символе, на котором находится ваш курсор.
Изменить Я понимаю, что вы можете захотеть вставить табуляцию в начале строки. Мой скрипт вставляет пробел в начале и табуляцию где-нибудь еще.
Если вам действительно нужна вкладка каждый раз, когда вы нажимаете клавишу табуляции, вы можете просто использовать это:
родовое словоНо я не вижу в этом смысла, с этой версией вы никогда не сможете вручную отступать из режима вставки.
Один из способов сделать это
- : установите sw= 4 (или как хотите)
- : установите ts= 46 (или какое-то большое число).
Тогда автоотступ не будет вставлять табуляции, пока вы не достигнете 46 пробелов, и в этом случае вы можете ввести большее число.
Только перетащите это, если кто-то другой использует вкладки, тогда вам нужно сбросить ts, чтобы согласиться с файлом, который вы редактируете.С другой стороны, это сделает вкладки сразу очевидными, что тоже может быть желательно.