Настройки Tab Vs Space в Vim

Vim очень любезен, когда дело доходит до вкладки Vs. космические предпочтения. Насколько я понимаю,tabstop настройка указывает ширину символа табуляции.shiftwidth Параметр указывает, сколько столбцов будет увеличиваться / уменьшаться при использовании<< а также>> команды, тогда какsofttabstop настройка влияет на количество пробелов, которые будут вставлены при нажатии кнопкитабуляция ключ в режиме вставки. Еслиexpandtab включено, клавиша табуляции вставляетsofttabstop количество пробелов Тогда как сexpandtab выключен, нажавтабуляция клавиша вставляет наименьшее возможное количество символов табуляции + пробела, которое соответствуетsofttabstop, (Пожалуйста, поправьте меня, если я ошибаюсь.)

Этот последний пункт заставляет меня задуматься: есть ли практический случай, когда вы не захотитеshiftwidth == tabstop && tabstop == softtabstop? Я не могу думать об одном. Насколько мне известно, было бы наиболее удобно, если бы я мог установить все 3 из них на одно и то же значение в одном назначении. например призвание:

:set stab=4

что будет эквивалентно выполнению:

:set tabstop=4 softtabstop=4 shiftwidth=4 

Кто-нибудь может подсказать, как это можно сделать?

ОБНОВИТЬ

Спасибо за ответы так далеко отслишком много PHP, Hobbs а такжеkaiser.se, Вместо того, чтобы отвечать каждому по отдельности, я обновляю вопрос здесь.

Softtabstop с расширением вкладки выключен

Я уже говорил выше, что при отключенной функции расширения вкладки нажатие клавиши Tab вставляет наименьшее возможное количество символов табуляции + пробела, соответствующихsofttabstop, Я поддерживаю это, но я думаю, что мне нужно объяснить, что я имел в виду. Я попытаюсь сделать это на нескольких примерах. Чтобы следовать, бежать:set list так что вы можете видеть символы табуляции.

tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab

В режиме вставки нажатие клавиши табуляции вставляет 2 пробела. Нажмите клавишу табуляции второй раз, и вместо вставки еще двух пробелов (всего 4 пробела) она заменяет предыдущие 2 пробела одним символом табуляции. Tabstop установлен на 4, поэтому один символ табуляции имеет ту же ширину, что и 4 пробела.

tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab

В режиме вставки нажатие клавиши табуляции вставляет 1 символ табуляции плюс 2 пробела. Ширина символа табуляции равна 4, поэтому общая ширина равна 6, и это достигается с помощью 3 символов. При повторном нажатии клавиши табуляции вставляются два символа табуляции и удаляются два пробела, которые были вставлены ранее. Общая ширина составляет 12, и это достигается с помощью 3 символов.

В обоих этих примерах Vim вставляет минимально возможное количество символов табуляции + пробела, которое соответствует softtabstop.

Если я работаю с отключенной функцией расширения, я не вижу, что мне нужно дополнительное детальное управление, которое может быть достигнуто путем установки для softtabstop значения, отличного от tabstop. Мне все еще было бы полезно установитьtabstop, softtabstop а такжеshiftwidth к тому же значению с помощью одной команды.

Делает ли expandtab избыточной softtabstop?

tabstop=4 softtabstop=0 shiftwidth=4 expandtab

В режиме вставки нажатие клавиши табуляции вставляет 4 пробела. Нажатие клавиши удаления удаляет один пробел - таким образом, вам придется вернуться на 4 раза, если вы случайно нажали клавишу Tab.

tabstop=4 softtabstop=4 shiftwidth=4 expandtab

В режиме вставки нажатие клавиши табуляции вставляет 4 пробела. Нажатие клавиши Backspace удаляет 4 пробела.

Если я работаю сexpandtab включен, я бы предпочел, чтобы клавиша удаления удаляла то же количество пробелов, что и клавиша Tab. Так что и в этом случае я чувствую, что было бы полезно иметь возможность присвоить одно и то же значениеtabstop, softtabstop а такжеshiftwidth одновременно.

Ярлык все равно будет полезен

Здорово, что Vim обеспечивает такую гибкость, но я не вижу в этом необходимости. Я просто хочу иметь возможность выбрать ширину вкладки, и является ли она «жесткой» вкладкой (используя символ табуляции) или «мягкой» вкладкой (состоящей из пробелов). Переключаться между жесткими и мягкими вкладками достаточно просто (:set expandtab!), но мне бы хотелось, чтобы было проще установить ширину вкладки, не прибегая к 3 различным параметрам.

Так что мое предложенное предложение для чего-то вроде:set stab=4 все еще звучит хорошо для меня.

Ответы на вопрос(7)

Ваш ответ на вопрос