2

Я нажимаю «Tab, Tab, Tab, Left, Delete», чтобы получить требуемый отступ. После сохранения файла я вижу «^ I». Если я нажимаю "Пробел" 11 раз, вместо этого вижу «».

Как заставить vim прекратить вводить новые жесткие символы табуляции (без изменения воспринимаемого пользователем поведения отступов или искажения существующих жестких вкладок)?

Есть много запутанных смарт-таблиц, широты, табуляции и других опций. Как это сделать правильно?

2 ответа2

4

Если вы хотите, чтобы vim перевел любую из ваших вкладок в пробелы, используйте:

set expandtab                     " expand tabs!

Вы можете установить, на сколько "пробелов" вкладка переводится:

set softtabstop=4                 " if expandtab on, how many space a tab is

Если vim находит существующие вкладки и вы хотите, чтобы они были переведены в пробелы, установите это число пробелов, которое будет представлять вкладка

set tabstop=4                     " tab spacing of 4 for real tabs

(обратите внимание, что set tabstop не повлияет на существующие вкладки, только их отображение в редакторе).

РЕДАКТИРОВАТЬ Я бы также ознакомился с ответом Гариджона, чтобы получить гораздо более точный ответ об обработке существующих вкладок, а также о поведении при использовании команд перехода табуляции << >> . (Я действительно узнал некоторые вещи, которые я не знал о его поведении!) +1 к его ответу от меня!

2

Vim не будет искажать существующие вкладки, если вы

  • выполнить :retab или
  • измените отступ строки, используя команду, например << или >> .

Если вы изменяете отступ строки и устанавливаете 'expandtab', то Vim обычно заменяет все вкладки соответствующим количеством пробелов. Если вы измените отступ строки и установите noexpandtab, то Vim обычно заменяет столько пробелов, сколько может, на вкладки.

Это нормальное поведение можно изменить, чтобы попытаться сохранить структуру исходного отступа, установив параметр «preserveindent».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .