Настоящата ми настройка предполага 8 интервала; как мога да я променя?
Зависи какво имате предвид. Искате ли действителните знаци за табулация във вашия файл да се появяват с ширина 4 интервала или под "табулация" всъщност имате предвид инденция, генерирана от натискането на клавиша tab, в резултат на което файлът буквално ще съдържа (до) 4 символа за интервал за всяка "табулация", която въвеждате?
В зависимост от отговора ви, един от следните набори от би следвало да работят за вас:
За знаци табулатори, които се появяват с ширина 4 интервала:
задайте tabstop=4
Ако в изходния си код използвате действителни знаци табулация, вероятно също искате да зададете тези настройки (всъщност това са настройките по подразбиране, но може да искате да ги зададете защитно):
set softtabstop=0 noexpandtab
И накрая, ако искате отстъплението да съответства на един табулатор, трябва също да използвате:
set shiftwidth=4
За отстъпи, които се състоят от 4 символа интервал, но се въвеждат с клавиша tab:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
За да направите горните настройки постоянни, добавете тези редове към вашия vimrc.
В случай, че се налага да направите корекции или просто искате да разберете какво означават всички тези опции, ето разбивка на значението на всяка опция:
tabstop
Широчината на твърдия табулатор, измерена в "интервали" -- ефективно (максималната) широчина на действителния табулаторен символ.
shiftwidth
Размерът на "отстъпа". Той също се измерва в интервали, така че ако вашата база от кодове прави отстъпи със знаци табулация, тогава искате
shiftwidth
да е равен на броя на знаците табулация, умножен поtabstop
. Това се използва и от такива неща като командите=
,>
и<
.
softtabstop
Задаването на тази стойност на ненулева стойност, различна от
tabstop
, ще накара клавиша tab (в режим на вмъкване) вмъкне комбинация от интервали (и евентуално табулатори), за да симулира табулационни стопове с тази ширина.
expandtab
Активирането на тази опция ще накара клавиша за табулация (в режим на вмъкване) да вмъква интервали вместо знаци за табулация. Това се отразява и на поведението на командата
retab
.
smarttab
Активирането на тази опция ще накара клавиша tab (в режим на вмъкване) да вмъква интервали или табулации към преминаване към следващото тире на следващия табулаторен ограничител, когато курсорът е в началото на реда (т.е. само предшестващите символи са бели символи).
За повече подробности по всеки от тези въпроси вижте :help 'име на опция'
във vim (например :help 'tabstop'
)
За да определите това за постоянно за текущия потребител, създайте (или редактирайте) файла .vimrc
:
$ vim ~/.vimrc
След това поставете конфигурацията по-долу във файла. След като vim се рестартира, настройките на раздела ще се приложат.
set tabstop=4 " The width of a TAB is set to 4.
" Still it is a \t. It is just that
" Vim will interpret it to be having
" a width of 4.
set shiftwidth=4 " Indents will have a width of 4
set softtabstop=4 " Sets the number of columns for a TAB
set expandtab " Expand TABs to spaces
:set sw=4