Moje obecne ustawienie zakłada 8 spacji; jak mogę to przedefiniować?
Moje obecne ustawienie zakłada 8 spacji; jak mogę to przedefiniować?
Odpowiedzi:
To zależy od tego, co masz na myśli. Chcesz rzeczywiste znaki tabulacji w pliku do pojawiają 4 spacje szerokie, lub „Tab” czy rzeczywiście oznacza wcięcie , generowany przez naciśnięcie klawisza TAB, co doprowadziłoby do pliku dosłownie zawierające (do) 4 znaków spacji dla każdą „kartę”, którą wpisujesz?
W zależności od odpowiedzi jeden z poniższych zestawów ustawień powinien działać dla Ciebie:
W przypadku znaków tabulacji o szerokości 4 spacji :
set tabstop=4
Jeśli używasz rzeczywistego znaku tabulacji w kodzie źródłowym, prawdopodobnie również chcesz te ustawienia (tak naprawdę są to ustawienia domyślne, ale możesz chcieć je ustawić obronnie):
set softtabstop=0 noexpandtab
Wreszcie, jeśli chcesz, aby wcięcie odpowiadało jednej karcie, powinieneś również użyć:
set shiftwidth=4
W przypadku wcięć składających się z 4 znaków spacji, ale wprowadzanych za pomocą klawisza tab:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
Aby powyższe ustawienia były trwałe, dodaj te linie do vimrc .
Jeśli chcesz wprowadzić zmiany lub po prostu chcesz zrozumieć, co oznaczają te wszystkie opcje, oto podział na poszczególne opcje:
tabstop
Szerokość twardego tabulatora mierzona w „spacjach” - w rzeczywistości (maksymalna) szerokość rzeczywistego znaku tabulacji.
shiftwidth
Rozmiar „wcięcia”. Jest również mierzony w odstępach, więc jeśli podstawa kodu wcina się znakami tabulacji, to chcesz
shiftwidth
równać się liczbie znaków tabulacjitabstop
. To jest również wykorzystywany przez takie rzeczy jak=
,>
i<
poleceń.
softtabstop
Ustawienie na niezerową wartość inną niż
tabstop
spowoduje, że klawisz tabulatora (w trybie wstawiania) wstawi kombinację spacji (i ewentualnie tabulatorów), aby zasymulować tabulatory na tej szerokości.
expandtab
Włączenie tego spowoduje, że klawisz tabulacji (w trybie wstawiania) wstawi spacje zamiast znaków tabulacji. Wpływa to również na zachowanie
retab
polecenia.
smarttab
Włączenie tego spowoduje, że klawisz tabulacji (w trybie wstawiania) wstawi spacje lub tabulatory, aby przejść do następnego wcięcia następnego tabstop, gdy kursor znajduje się na początku linii (tzn. Jedynymi poprzedzającymi znakami są białe znaki).
Aby uzyskać więcej informacji na temat któregokolwiek z nich zobacz vim (np. ):help 'optionname'
:help 'tabstop'
~/.vimrc
to ustawienia vim użytkownika. Większość osób pozostawia ustawienia systemu w spokoju i po prostu edytuje ustawienia użytkownika. Pamiętaj, że ~/.vimrc
nie będzie istniał, dopóki nie utworzysz go w większości systemów.
set softtabstop=4
funkcję! Jestem zmęczony próbą odczytania kodu za pomocą less
lub dowolnego innego edytora, z wyjątkiem tego vim
, aby zobaczyć dziwne wcięcia, ponieważ na nowo zdefiniowałeś tabulację, aby była dowolną liczbą spacji (nawet jeśli reszta systemu myśli inaczej)! :-)
tabstop=8
wcięć składających się z 4 spacji? Po przeczytaniu opisów różnych ustawień nie mogłem znaleźć przyczyny. Inna odpowiedź mówi o użyciu, tabstop=4
co ma dla mnie trochę więcej sensu.
tabstop
opcja kontroluje szerokość znaku tabulacji. Jeśli chcesz, aby wcięcia składały się z 4 znaków spacji, a nie pojedynczych znaków tabulacji o szerokości 4 znaków, szerokość znaku tabulacji nie ma znaczenia - w pewnym sensie . W praktyce prawdopodobnie chcesz, aby szerokość znaków tabulacji różniła się od szerokości wcięć, aby zmniejszyć prawdopodobieństwo, że tabulatory będą maskować się jako właściwe wcięcia. ( list
+ też expandtab
może tutaj pomóc). Również karty o szerokości 8 znaków są „standardowe” - twój terminal, Python i wiele innych narzędzi domyślnie mają karty o szerokości 8 znaków.
Aby zdefiniować to na stałe dla bieżącego użytkownika, utwórz (lub edytuj) .vimrc
plik:
$ vim ~/.vimrc
Następnie wklej poniższą konfigurację do pliku. Kiedy vim zostanie zrestartowany, ustawienia karty zostaną zastosowane.
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
:retab
przekonwertować istniejący tab
do spaces
. vim.wikia.com/wiki/Converting_tabs_to_spaces
Istnieje kilka ustawień, które określają, czy używać spacji, czy tabulatorów.
Oto przydatne funkcje, które można zdefiniować w ~/.vimrc
pliku:
function! UseTabs()
set tabstop=4 " Size of a hard tabstop (ts).
set shiftwidth=4 " Size of an indentation (sw).
set noexpandtab " Always uses tabs instead of space characters (noet).
set autoindent " Copy indent from current line when starting a new line (ai).
endfunction
function! UseSpaces()
set tabstop=2 " Size of a hard tabstop (ts).
set shiftwidth=2 " Size of an indentation (sw).
set expandtab " Always uses spaces instead of tab characters (et).
set softtabstop=0 " Number of spaces a <Tab> counts for. When 0, featuer is off (sts).
set autoindent " Copy indent from current line when starting a new line.
set smarttab " Inserts blanks on a <Tab> key (as per sw, ts and sts).
endfunction
Stosowanie:
:call UseTabs()
:call UseSpaces()
Aby użyć go dla rozszerzeń plików, można użyć (dodać do .vimrc
) następującej składni :
au! BufWrite,FileWritePre *.module,*.install call UseSpaces()
Zobacz także: Konwertowanie tabulatorów na spacje .
Oto kolejny fragment Wikii, którego można używać do przełączania między tabulatorami i spacjami :
" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
set expandtab
" allow toggling between local and default mode
function TabToggle()
if &expandtab
set shiftwidth=8
set softtabstop=0
set noexpandtab
else
set shiftwidth=4
set softtabstop=4
set expandtab
endif
endfunction
nmap <F9> mz:execute TabToggle()<CR>'z
Umożliwia użycie 4 spacji dla każdej karty i mapowanie w F9celu przełączania ustawień.
Skopiowałem i wkleiłem to do mojego pliku .vimrc:
" size of a hard tabstop
set tabstop=4
" always uses spaces instead of tab characters
set expandtab
" size of an "indent"
set shiftwidth=4
Pierwsze 2 ustawienia oznaczają, że kiedy naciskam Tab, dostaję 4 spacje. Trzecie ustawienie oznacza, że kiedy to zrobię V>
(tj. Wizualnie i wcięcie), dostaję również 4 spacje.
Nie jest tak wyczerpująca, jak zaakceptowana odpowiedź, ale może pomóc osobom, które chcą tylko coś skopiować i wkleić.
Umieść wybrane ustawienia w pliku ~ / .vimrc - poniżej znajdziesz wskazówki i najlepsze praktyki.
Istnieją cztery główne sposoby używania kart w Vimie:
Zawsze trzymaj „tabstop” na 8, ustaw „softtabstop” i „shiftwidth” na 4 (lub 3 lub cokolwiek wolisz) i używaj „noexpandtab”. Następnie Vim użyje kombinacji tabulatorów i spacji, ale pisanie i będzie zachowywać się tak, jakby tabulator pojawiał się co 4 (lub 3) znaki.
Uwaga: Ustawienie „tabstop” na wartość inną niż 8 może spowodować, że plik będzie wyglądał nieprawidłowo w wielu miejscach (np. Podczas drukowania).
Ustaw „tabstop” i „shiftwidth” na cokolwiek wolisz i użyj „expandtab”. W ten sposób zawsze wstawisz spacje. Formatowanie nigdy nie zostanie pomieszane, gdy zmieni się „tabstop”.
Ustaw „tabstop” i „shiftwidth” na cokolwiek wolisz i użyj | modeline | aby ustawić te wartości podczas ponownej edycji pliku. Działa tylko przy użyciu Vima do edycji pliku.
Zawsze ustaw „tabstop” i „shiftwidth” na tę samą wartość i „noexpandtab”. Powinno to następnie działać (tylko w przypadku wcięć początkowych) dla każdego ustawienia tabstop, którego używają ludzie. Przydałoby się jednak wstawianie tabulatorów po pierwszym niepustym wstawieniu spacji, jeśli to zrobisz. W przeciwnym razie wyrównane komentarze będą niepoprawne po zmianie „tabstop”.
Źródło:
:help tabstop
:help tabstop
w vimie.
Jeszcze jedno, użyj,
:retab
aby przekonwertować istniejące tab
na spaces
http://vim.wikia.com/wiki/Converting_tabs_to_spaces
:set sw=4
Zobacz: Opanowanie edytora VI
Dodaj wiersz
set ts=4
w
~/.vimrc
pliku dla użytkownika
lub
/etc/vimrc
plik dla całego systemu
Moje podstawowe ~ / .vimrc z komentarzem:
set number " show line number
set tabstop=2 " set display width of tab; 1 tab = x space with
set expandtab " transform tab to x space (x is tabstop)
set autoindent " auto indent; new line with number of space at the beginning same as previous
set shiftwidth=2 " number of space append to lines when type >>
Stały dla wszystkich użytkowników (gdy jesteś sam na serwerze):
# echo "set tabstop=4" >> /etc/vim/vimrc
Zwykle na nowym serwerze apt-get purge nano mc
i wszystkich innych, aby zaoszczędzić czas. W przeciwnym razie będzie przedefiniować redaktor git
, crontab
etc
F10
w nano
ale zawsze zrobić kilka sztuczek z save (być może F10
jest to rozwiązanie). czy to nie działa screen
? Nie pamiętam, po prostu go nienawidzę)