Когда я пытался использовать yml , он требует политики TAB, ONLY SPACE. Я понял, что мне нужны специальные настройки для этого.

Во всяком случае, я не могу жить без вкладок. Поэтому я хочу, чтобы мой VI вел себя так.

  • Когда я нажимаю клавишу табуляции , вводим много пробелов, выровненных по табуляциям.
  • Когда я нажимаю клавишу возврата , удаляю много пробелов, выровненных по символам табуляции.

Как я могу заархивировать эту функциональность?

2 ответа2

1

Оригинальный 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

0
:set et 

Вам придется отказаться от забоя и использовать <<вместо.

Возможно, вы сможете отобразить backspace на undentdent, но это может привести к нежелательным последствиям.

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