Вім дуже поступливий, коли справа доходить до вкладки Vs. просторові уподобання. Як я розумію, tabstop
параметр вказує ширину символу табуляції. У shiftwidth
параметр визначає , скільки стовпців для збільшення / зменшення при використанні <<і >>команди, в той час як softtabstop
настройка впливає на кількість прогалин , які будуть вставлені при натисканні Tabклавіші в режимі вставки. Якщо expandtab
увімкнено, клавіша табуляції вставляє softtabstop
кількість пробілів. Тоді як при expandtab
вимкненому, натискання Tabклавіші вставляє найменшу можливу кількість символів табуляції та пробілу, що відповідає softtabstop
. (Будь ласка, виправте мене, якщо я помиляюся.)
Цей останній момент змушує мене задуматися: чи є практичний випадок, коли ви не хотіли б shiftwidth == tabstop && tabstop == softtabstop
? Я не можу придумати жодного. Що стосується мене, то було б найзручніше, якби я міг встановити для всіх 3-х однакове значення в одному присвоєнні. наприклад дзвінок:
:set stab=4
що було б еквівалентно запуску:
:set tabstop=4 softtabstop=4 shiftwidth=4
Хтось може підказати, як це можна зробити?
ОНОВЛЕННЯ
Дякую за відповіді поки що не надто багато php , hobbs та kaiser.se . Замість того, щоб відповідати кожному окремо, я оновлюю питання тут.
Softtabstop з вимкненою функцією розширення
Вище я сказав, що при вимкненому розширенні tab, натискання клавіші 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
до того ж значенням за допомогою однієї команди.
Чи розширювальна вкладка робить softtabstop зайвим?
tabstop=4 softtabstop=0 shiftwidth=4 expandtab
У режимі вставки натисканням клавіші табуляції вставляється 4 пробіли. Натискання клавіші видалення призводить до видалення єдиного пробілу - тому вам доведеться повернутись 4 рази назад, якщо ви випадково натиснете клавішу табуляції.
tabstop=4 softtabstop=4 shiftwidth=4 expandtab
У режимі вставки натисканням клавіші табуляції вставляється 4 пробіли. Натисканням клавіші зворотного простору видаляються 4 пробіли.
Якщо я працюю з expandtab
увімкненим, я віддаю перевагу клавіші видалення, щоб видалити ту ж кількість пробілів, що і вставки клавіші табуляції. Так що в цьому випадку теж, я вважаю , що було б корисно , щоб мати можливість привласнити однакове значення tabstop
, softtabstop
і shiftwidth
одночасно.
Ярлик все одно буде корисним
Чудово, що Vim надає таку гнучкість, але я не бачу, щоб я це потребував. Я просто хочу мати можливість вибрати ширину вкладки, а також "жорстку" вкладку (з використанням символу табуляції) або "м'яку" вкладку (складається з пробілів). Перемикання між жорсткою та м'якою вкладками досить легко ( :set expandtab!
), але я хотів би, щоб було простіше встановити ширину вкладки, не маючи при цьому возитися з 3 різними параметрами.
Тож пропонована мною пропозиція щодо чогось подібного :set stab=4
мені все ще звучить добре.