Klawisz Tab = = 4 spacje i automatyczne wcięcia po nawiasach klamrowych w Vimie
Jak zrobić vi-Vim nigdy nie używaj tabulatorów (konwersja spacji na tabulatory, źle!), sprawia, że klawisz tab = = 4 spacje i automatycznie wciska kod po blokach nawiasów klamrowych, takich jak Emacs robi?
Również, jak zapisać te ustawienia, aby nigdy nie musiał wprowadzać ich ponownie?
Widziałem inne pytania związane z tym, ale zawsze wydaje się być trochę od tego, co chcę.
9 answers
Jak już wspomniano w kilku odpowiedziach poniżej, preferowaną metodą nie jest teraz używanie smartindent, ale zamiast tego użyj następującego (w swoim .vimrc):
filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab
W Twoim .vimrc: file:
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
Pliki pomocy zajmują trochę czasu, aby się przyzwyczaić, ale im więcej czytasz, tym lepszy jest Vim:
:help smartindent
Jeszcze lepiej, możesz osadzić te ustawienia w źródle dla przenośności:
:help auto-setting
Aby zobaczyć swój obecny ustawienia:
:set all
Jak zauważa w komentarzach graywh, smartindent został zastąpiony przez cindent, który "działa sprytniej", chociaż nadal głównie dla języków ze składnią podobną do C:
:help C-indenting
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:36
Powiązane, jeśli otworzysz plik, który używa zarówno tabulatorów, jak i spacji, zakładając, że masz
set expandtab ts=4 sw=4 ai
Możesz zastąpić wszystkie tabulatory spacjami w całym pliku
:%retab
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-28 21:03:43
Najlepszym sposobem uzyskania wcięć specyficznych dla typu pliku jest użycie filetype plugin indent on
w Twoim vimrc. Następnie możesz określić takie rzeczy jak set sw=4 sts=4 et
in .na przykład vim/ftplugin / c.vim, bez konieczności tworzenia globalnych dla wszystkich edytowanych plików, a inne składnie Nie-Typu C również zostaną poprawnie wcięte (nawet lispy).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-27 12:30:11
Aby mieć 4-spacyjne zakładki w większości plików, prawdziwy 8-szeroki znak tabulacji w plikach Makefiles i automatyczne wcięcia w różnych plikach, w tym w C / C++, umieść to w pliku ~/.vimrc
:
" Only do this part when compiled with support for autocommands.
if has("autocmd")
" Use filetype detection and file-based automatic indenting.
filetype plugin indent on
" Use actual tab chars in Makefiles.
autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif
" For everything else, use a tab width of 4 space chars.
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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-24 02:42:33
W wielu systemach Linux, takich jak Ubuntu, plik .vimrc
nie istnieje domyślnie, dlatego zaleca się, aby najpierw go utworzyć.
Nie używaj pliku .viminfo
, który istnieje w katalogu domowym. Służy do innego celu.
Krok 1: Przejdź do katalogu domowego
cd ~
Krok 2: Utwórz plik
vim .vimrc
Krok 3: Dodaj konfigurację podaną powyżej
filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab
Krok 3: Zapisz plik, naciskając Shift + ZZ .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-31 04:14:55
Zalecanym sposobem jest użycie wcięć opartych na typach plików i używanie smartindent i cindent tylko wtedy, gdy to nie wystarczy.
Dodaj do swojego .vimrc
set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on
Mam nadzieję, że to pomoże jako inna odpowiedź.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-02 10:35:06
Edytuj swoje ~/.vimrc
$ vim ~/.vimrc
Dodaj następujące wiersze:
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 16:04:08
Z vim wiki :
:set tabstop=4
:set shiftwidth=4
:set expandtab
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-18 19:08:54
Automatyczne wcięcie jest oparte na bieżącym trybie składni. Wiem, że jeśli edytujesz Foo.java, a następnie wpisanie {
i naciśnięcie Enter wcięć w poniższej linii.
Jeśli chodzi o karty, są dwa ustawienia. W Vimie wpisz dwukropek, a następnie "set tabstop=4", który ustawi tabulatory jako cztery spacje. Naciśnij ponownie dwukropek i wpisz "set expandtab", który wstawia spacje dla tabulatorów.
Możesz umieścić te ustawienia wvimrc (lub _vimrc w systemie Windows) w Twoim domu katalog, więc wystarczy wpisać je tylko raz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-01 15:45:26