Оригинальный vi: не знает о et
, вы можете поэкспериментировать с различными значениями ts
(tabstop) и sw
(shiftwidth, т.е. количество <<
и >>
отступа для строки или блока текста). По сути, всякий раз, когда для sw задано значение, которое меньше (обычно доли) значения, назначенного для ts, для отступа будут использоваться пробелы вместо вкладок. Имейте в виду, что, когда несколько сдвигов в сумме приводят к полной табуляции, вкладка будет использоваться в этом месте.
Значение по умолчанию для обоих - 8, а также для ряда других команд (таких как раскрытие), основывающих свои предположения на этом, поэтому текст, написанный со смешанными табуляциями и пробелами, где ts был изменен, может быть выровнен при последующем просмотре с другой настройкой для вкладки.
Чтобы достичь своей цели, вы можете сначала использовать /bin/expand
чтобы заменить все табуляции с пробелами в существующем тексте, а затем перетащить текст в vi :set sw=4,ts=20
и попробовать, если эти настройки вам подходят. Если они это сделают, вы можете сделать их постоянными, записав их в свой .exrc
Другой способ, который позволил бы вам использовать табуляцию и backspace так, как вы предпочитаете (вместо сдвига с помощью <<
и >>
), состоял бы в том, чтобы позволить себе писать текст так, как вы предпочитаете, и передавать его через /bin/expand
до для обработки с помощью yml, как в вашей цепочке команд, так и внутри самого vi:
:1,$!expand
В vim: вы можете использовать настройку et
(expandtab), как уже предлагалось, и даже преобразовать все вкладки в пробелы, объединив встроенную функцию (которая имеет преимущество, зная ваши настройки табуляции, если вы настраиваете их без необходимости явного указания, как expand
надо).
:set et|retab
Другие интересные настройки включают в себя sts
(softtabstop) и smarttab
, причем все эти настройки адаптированы к вашим потребностям, даже ai
(autoindent) будет вести себя последовательно и выбрасывать пробелы вместо вкладок.
:set et
:set sw=3
:set sts=3
:set smarttab
:set ai
или в одну строку:
:set et sw=3 sts=3 smarttab ai
Опять же, как только вы согласитесь с этими настройками, поместите их в свой .vimrc