Czy ktoś mógłby mi wyjaśnić w prosty sposób najprostszy sposób zmiany zachowania wcięcia Vima w zależności od typu pliku? Na przykład, jeśli otworzę plik Python, powinien wciąć 2 spacje, ale jeśli otworzę skrypt Powershell, powinien użyć 4 spacji.
file
vim
settings
indentation
EBGreen
źródło
źródło
Odpowiedzi:
Możesz dodawać
.vim
pliki do wykonania, gdy vim przełączy się na określony typ pliku.Na przykład mam plik
~/.vim/after/ftplugin/html.vim
z tą zawartością:Co powoduje, że vim używa tabulacji o szerokości 2 znaków do wcięcia (
noexpandtab
opcja jest ustawiona globalnie gdzie indziej w mojej konfiguracji).Jest to opisane tutaj: http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4 , przewiń w dół do sekcji dotyczącej wtyczek typów plików.
źródło
~/.vim/after/ftplugin/html.vim
. Ale jak zauważyli inni, o wiele przyjemniej jest po prostu dodaćautocmd FileType html setlocal shiftwidth=2 tabstop=2
do swojego.vimrc
.autocmd FileType javascript setlocal shiftwidth=2 tabstop=2
)filetype plugin on
do swojego vimrc.Użyj ftplugins lub poleceń automatycznych, aby ustawić opcje.
ftplugin
W
~/.vim/ftplugin/python.vim:
I nie zapomnij włączyć ich w
~/.vimrc
:(
:h ftplugin
więcej informacji)autocommand
W
~/.vimrc
:Można zastąpić każdy z długich poleceń i ustawień z ich krótkimi wersjami:
autocmd
:au
setlocal
:setl
shiftwidth
:sw
tabstop
:ts
softtabstop
:sts
expandtab
:et
Sugerowałbym również poznanie różnicy między
tabstop
isofttabstop
. Wiele osób nie wie o tymsofttabstop
.źródło
sw
jest skrótemsoftwidth
,sts
jest skrótemsofttabstop
,et
jest skrótemexpandtab
,setl
jest skrótemsetlocal
iau
jest skrótemautocmd
. Możesz użyć długich formularzy zamiast krótkich formularzy.sw
żeshiftwidth
raczej się rozwijasoftwidth
.edytuj
~/.vimrc
i dodaj różne typy plików dla różnych wcięć, np. Chcęhtml/rb
wcięcia na 2 spacje ijs/coffee
pliki wcięcia na 4 spacje:zobacz: Ustawianie preferencji białych znaków Vima według rodzaju pliku
źródło
"
:)'
powoduje błąd na wszystkich wersjach mojego Linuxa. (7,3+, 8,0 ...)"
, co oznacza, że nie zamykaj go innym"
. Nie jestem pewien, dlaczego to skomentowałem.'
ale nie pozostawia"
bez prawej"
@. @Umieść polecenia autocmd na podstawie sufiksu pliku w ~ / .vimrc
Polecenia, których szukasz, to prawdopodobnie ts = i sw =
źródło
FileType
?Zwykle pracuję z
expandtab
setem, ale to źle wpływa na makefile. Ostatnio dodałem:do końca mojego pliku .vimrc i rozpoznaje Makefile, makefile i * .mk jako makefile i nie rozwija kart. Prawdopodobnie możesz to przedłużyć.
źródło
Osobiście używam tych ustawień w .vimrc:
źródło
Może to być znane większości z nas, ale tak czy inaczej (po raz pierwszy byłem zdziwiony): wykonanie
:set et
(:set
rozwinięcie kart) nie zmienia kart już istniejących w pliku, trzeba to zrobić:retab
. Na przykład:i zakładki w pliku są zastąpione wystarczającą ilością spacji. Aby przywrócić zakładki, po prostu wykonaj:
źródło
Dzisiaj możesz spróbować Editorconfig , jest też plugin vim . Dzięki temu możesz nie tylko zmienić rozmiar wcięcia w vimie, ale w wielu innych edytorach zachowaj spójne style kodowania.
Poniżej znajduje się prosta konfiguracja edytora, jak widać, pliki python będą miały 4 spacje dla wcięć, a pliki szablonów mopsów będą miały tylko 2.
źródło
Chociaż możesz skonfigurować wcięcie Vima w porządku za pomocą wtyczki wcięcia lub ręcznie za pomocą ustawień, zalecam użycie skryptu python o nazwie Vindect, który automatycznie ustawia odpowiednie ustawienia po otwarciu pliku python. Użyj tej wskazówki, aby korzystanie z Vindect było jeszcze bardziej skuteczne. Kiedy po raz pierwszy rozpocząłem edycję plików Pythona utworzonych przez innych z różnymi stylami wcięć (tabulator a spacja i liczba spacji), było to niezwykle frustrujące. Ale Vindect wraz z tym plikiem wcięcia
Polecam również:
źródło
Dla tych
autocmd
, którzy używają , najlepszą praktyką jest grupowanie ich razem. Jeśli grupa jest związana z wykrywaniem typu pliku, możesz mieć coś takiego:Grupowanie pomaga utrzymać
.vimrc
porządek, zwłaszcza gdy z typem pliku skojarzonych jest wiele reguł. W powyższym przykładzie zdefiniowano skrót komentarza specyficzny dla plików .c.Początkowe wywołanie
autocmd!
mówi vimowi, aby usunął wszelkie wcześniej zdefiniowane polecenia automatyczne we wspomnianym grupowaniu. Zapobiegnie to duplikowaniu definicji, jeśli.vimrc
zostanie ponownie pozyskane. Zobacz:help augroup
więcej informacji.źródło
Używam narzędzia, które napisałem w języku C o nazwie
autotab
. Analizuje pierwsze kilka tysięcy wierszy załadowanego pliku i określa wartości parametrów Vimashiftwidth
,tabstop
orazexpandtab
.Kompiluje się to na przykład za pomocą
gcc -O autotab.c -o autotab
. Instrukcje integracji z Vimem znajdują się w nagłówku komentarza u góry.Autotab jest dość sprytny, ale od czasu do czasu może się mylić, w szczególności przez to, że były niekonsekwentnie utrzymywane przy użyciu różnych stylów wcięcia.
Jeśli plik w oczywisty sposób używa tabulacji lub kombinacji tabulatorów i spacji do wcięcia, Autotab ustali, jaki rozmiar tabulacji jest używany, biorąc pod uwagę takie czynniki, jak wyrównanie elementów wewnętrznych wzdłuż kolejnych linii, takie jak komentarze.
Działa w różnych językach programowania i wybacza elementy „poza pasmem”, które nie są zgodne z przyrostami wcięć, takie jak dyrektywy C przetwarzania wstępnego, etykiety instrukcji C, nie wspominając o oczywistych pustych wierszach.
źródło