@ heinrich5991 Nie rozumiem. Nie potrzebuję 8 spacji, aby uświadomić sobie, że linia jest wcięta, a więcej niż to konieczne oznacza ograniczenie znaków, które można wyświetlić w długim wierszu tekstu (przynajmniej przed zawijaniem). Ale każdemu jego. :)
weberc2
40
@ heinrich5991 Moim argumentem jest: „używaj jak najmniej, aby łatwo zidentyfikować wcięcie”. Według moich szacunków, zdolność do łatwej identyfikacji wcięcia spada gwałtownie na <3 spacje i przestaje rosnąć na 4 spacjach. Dlatego wcięcie, które przekracza 4 spacje, jest z mojego doświadczenia marnotrawstwem.
weberc2
7
@ weberc2 Nie mogłem więcej zgodzić się, kolego. Dlatego czuję się tak cholernie klaustrofobicznie, czytając Ruby lub „współczesny JavaScript”, z których każda używa wcięć z 2 spacjami. Słusznie męczy mnie wzrok, gdy próbuję podążać za mocno zagnieżdżonymi strukturami. Twarde karty do cholernej wygranej.
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 shiftwidthrównać się liczbie znaków tabulacji tabstop. To jest również wykorzystywany przez takie rzeczy jak =, >i <poleceń.
softtabstop
Ustawienie na niezerową wartość inną niż tabstopspowoduje, ż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 retabpolecenia.
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'
Ważne jest również, aby upewnić się, że pliki Makefile zawsze używają znaków tabulacji, w przeciwnym razie kompilacje zakończą się niepowodzeniem! Pokazałem, jak to zrobić, na stackoverflow.com/questions/234564/…
Shervin Emami
29
@ Niezdefiniowane To są ustawienia systemu vim. ~/.vimrcto ustawienia vim użytkownika. Większość osób pozostawia ustawienia systemu w spokoju i po prostu edytuje ustawienia użytkownika. Pamiętaj, że ~/.vimrcnie będzie istniał, dopóki nie utworzysz go w większości systemów.
Laurence Gonsalves
4
Użytkownicy Vima zwracają uwagę na tę set softtabstop=4funkcję! Jestem zmęczony próbą odczytania kodu za pomocą lesslub 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)! :-)
Ogre Psalm33
6
Czy ktoś może mi pomóc zrozumieć, dlaczego ta odpowiedź mówi o używaniu tabstop=8wcięć 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=4co ma dla mnie trochę więcej sensu.
Kodos Johnson
5
@KodosJohnson Ta tabstopopcja 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ż expandtabmoż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.
Laurence Gonsalves
744
Aby zdefiniować to na stałe dla bieżącego użytkownika, utwórz (lub edytuj) .vimrcplik:
$ 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
Jeśli nie masz ~ / .vimrc, spróbuj z / etc / vim / vimrc. W moim przypadku na Ubuntu 16.04 plik konfiguracyjny jest tam. Pamiętaj jednak, że zmiana tego pliku spowoduje globalne użycie konfiguracji.
Istnieje kilka ustawień, które określają, czy używać spacji, czy tabulatorów.
Oto przydatne funkcje, które można zdefiniować w ~/.vimrcpliku:
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 :
" 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ń.
" 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”.
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 mci wszystkich innych, aby zaoszczędzić czas. W przeciwnym razie będzie przedefiniować redaktor git, crontabetc
Jeśli ustawisz EDYTOR, większość programów będzie go przestrzegać.
D. Ben Knoble
@ D.BenKnoble masz rację. próbowałem. na razie wolę oszczędzać czas i nerwy. Nie można sprawdzić, co dokładnie działa ze F10w nanoale zawsze zrobić kilka sztuczek z save (być może F10jest to rozwiązanie). czy to nie działa screen? Nie pamiętam, po prostu go nienawidzę)
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 :
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):
Wreszcie, jeśli chcesz, aby wcięcie odpowiadało jednej karcie, powinieneś również użyć:
W przypadku wcięć składających się z 4 znaków spacji, ale wprowadzanych za pomocą klawisza tab:
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:
Aby uzyskać więcej informacji na temat któregokolwiek z nich zobacz vim (np. )
:help 'optionname'
:help 'tabstop'
źródło
~/.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 tegovim
, 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:Następnie wklej poniższą konfigurację do pliku. Kiedy vim zostanie zrestartowany, ustawienia karty zostaną zastosowane.
źródło
:retab
przekonwertować istniejącytab
dospaces
. vim.wikia.com/wiki/Converting_tabs_to_spaceslub skrót od vim modeline:
źródło
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:Stosowanie:
Aby użyć go dla rozszerzeń plików, można użyć (dodać do
.vimrc
) następującej składni :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 :
Umożliwia użycie 4 spacji dla każdej karty i mapowanie w F9celu przełączania ustawień.
źródło
Skopiowałem i wkleiłem to do mojego pliku .vimrc:
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ć.
źródło
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
źródło
:help tabstop
w vimie.Jeszcze jedno, użyj,
:retab
aby przekonwertować istniejące
tab
naspaces
http://vim.wikia.com/wiki/Converting_tabs_to_spacesźródło
Zobacz: Opanowanie edytora VI
źródło
Dodaj wiersz
set ts=4
w
~/.vimrc
pliku dla użytkownikalub
/etc/vimrc
plik dla całego systemuźródło
Moje podstawowe ~ / .vimrc z komentarzem:
źródło
Stały dla wszystkich użytkowników (gdy jesteś sam na serwerze):
Zwykle na nowym serwerze
apt-get purge nano mc
i wszystkich innych, aby zaoszczędzić czas. W przeciwnym razie będzie przedefiniować redaktorgit
,crontab
etcźródło
F10
wnano
ale zawsze zrobić kilka sztuczek z save (być możeF10
jest to rozwiązanie). czy to nie działascreen
? Nie pamiętam, po prostu go nienawidzę)