vim - установить автоматический отступ, чтобы заполнить ведущее пространство пробелом или табуляцией

StackOverflow https://stackoverflow.com/questions/5878009

  •  28-10-2019
  •  | 
  •  

Вопрос

Похоже, что если мы включим 'ai', vim заполнит начальное пространство табуляцией. Я могу заполнить его просто пробелом с помощью "et".Мне не нравится C-файл, в котором есть пробелы и табуляция.

Мой vimrc:

родовое слово

Однако в некоторых случаях мне действительно нужно вводить табуляцию, когда я нажимаю «TAB» на клавиатуре, например, в make-файле и некоторых других. Команда autocmd FileType не подходит: я не могу добавить все типы файлов в vimrc.

Я хочу просто :

  1. автоотступ для заполнения ведущей области пробел;
  2. при нажатии "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 для просмотра информации о символе, на котором находится ваш курсор.

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

Если вам действительно нужна вкладка каждый раз, когда вы нажимаете клавишу табуляции, вы можете просто использовать это:

родовое слово

Но я не вижу в этом смысла, с этой версией вы никогда не сможете вручную отступать из режима вставки.

Один из способов сделать это

  1. : установите sw= 4 (или как хотите)
  2. : установите ts= 46 (или какое-то большое число).

Тогда автоотступ не будет вставлять табуляции, пока вы не достигнете 46 пробелов, и в этом случае вы можете ввести большее число.

Только перетащите это, если кто-то другой использует вкладки, тогда вам нужно сбросить ts, чтобы согласиться с файлом, который вы редактируете.С другой стороны, это сделает вкладки сразу очевидными, что тоже может быть желательно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top