Zmień definicję zakładki jako 4 spacje

Moje obecne ustawienie zakłada 8 spacji; jak mogę je przedefiniować?

 881
vim
Author: Paul Bellora, 2009-12-10

9 answers

To zależy, co masz na myśli. Czy chcesz, aby rzeczywiste znaki tabulacji w pliku były wyświetlane z 4 spacjami, czy przez" tab "masz na myśli wcięcie, wygenerowane przez naciśnięcie klawisza tab, co spowoduje, że plik będzie dosłownie zawierał (do) 4 spacje dla każdej" tab", którą wpisujesz?

W zależności od odpowiedzi, jeden z następujących zestawów ustawienia powinny działać dla Ciebie:

  • Dla znaków tabulacji, które pojawiają się 4-spacje-szerokie :

    set tabstop=4
    

    Jeśli używasz rzeczywistego znaku tabulacji w kodzie źródłowym, prawdopodobnie chcesz również te ustawienia (są to rzeczywiście domyślne, ale możesz chcieć je ustawić defensywnie):

    set softtabstop=0 noexpandtab
    

    Na koniec, jeśli chcesz, aby wcięcie odpowiadało pojedynczej zakładce, powinieneś również użyć:

    set shiftwidth=4
    
  • Dla wcięć, które składają się z 4 znaków spacji , ale są wprowadzane za pomocą klawisza tab:

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
    

Aby powyższe ustawienia stałe dodaj te linie do twojego 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 stopu tabulacji mierzona w "spacjach" -- w rzeczywistości (maksymalna) szerokość rzeczywistego znaku tabulacji.

shiftwidth

Wielkość "wcięcia". Jest również mierzony w spacjach, więc jeśli twój kod wcięć podstawowych ze znakami tabulacji następnie shiftwidth ma być równa liczbie znaków tabulacji razy tabstop. Jest to również używane przez rzeczy takie jak =, > i < komendy.

softtabstop

Ustawienie tej wartości na niezerową wartość inną niż tabstop spowoduje, że klawisz tab (w trybie wstawiania) Wstaw kombinację spacji (i ewentualnie tabulatorów), aby symulować tab zatrzymuje się na tej szerokości.

expandtab

Włączenie tego spowoduje, że klawisz tab (in insert tryb) wstawiaj spacje zamiast znaki tabulacji. Wpływa to również na zachowanie polecenia retab.

smarttab

Włączenie tej opcji spowoduje, że klawisz tab (w trybie insert) wstawi spacje lub tabulatory do przejdź do następnego tiret następnej zakładki, gdy kursor znajduje się na początku linii (tzn. tylko poprzedzające znaki są białymi znakami).

Więcej informacji na ten temat można znaleźć w sekcji vim (np.]}
 1316
Author: Laurence Gonsalves,
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-04-04 22:36:39

Aby definiować to na stałe dla bieżącego użytkownika, Utwórz (lub edytuj) plik .vimrc:

$ vim ~/.vimrc

Następnie wklej poniższą konfigurację do pliku. Po ponownym uruchomieniu Vima zostaną zastosowane ustawienia karty.

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
 657
Author: Alan Haggai Alavi,
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-08-20 19:28:19

Lub skrót dla vim modeline:

vim :set ts=4 sw=4 sts=4 et :
 46
Author: zen,
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
2009-12-10 06:22:11

Skopiowałem i wkleiłem to do mojego .plik 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 po naciśnięciu Tab dostaję 4 spacje. Trzecie ustawienie oznacza, że kiedy robię V> (tj. visual i indent), dostaję również 4 spacje.

Nie tak wyczerpująca jak przyjęta odpowiedź, ale może pomóc ludziom, którzy po prostu chcą coś skopiować i wkleić.

 21
Author: Snowcrash,
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
2013-06-28 10:49:43

Umieść pożądane ustawienia w ~/.plik vimrc -- patrz poniżej kilka wytycznych i najlepszych praktyk.

Istnieją cztery główne sposoby korzystania z tabs w Vimie:

  1. Zawsze trzymaj 'tabstop' na 8, Ustaw 'softabstop' i 'shiftwidth' na 4 (lub 3 lub cokolwiek wolisz) i użyj '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 inne wartość niż 8 może sprawić, że Twój plik pojawi się źle w wielu miejscach(np. podczas drukowania).

  2. Ustaw "tabstop" i "shiftwidth" na dowolne preferencje i użyj "expandtab". W ten sposób zawsze wstawisz spacje. Formatowanie nigdy nie będzie pomieszane po zmianie "tabstop".

  3. Ustaw 'tabstop' i 'shiftwidth' na dowolne preferencje i użyj / modeline/, aby ustawić te wartości podczas ponownej edycji pliku. Działa tylko wtedy, gdy używasz Vima do edycji plik.

  4. Zawsze Ustaw 'tabstop' i 'shiftwidth' na tę samą wartość i 'noexpandtab'. Powinno to zadziałać (tylko dla początkowych wcięć) dla każdego ustawienia tabstop, którego używają ludzie. Może być miło mieć tabulatory po pierwszym niepustym wstawionym jako spacje, jeśli to zrobisz. W przeciwnym razie wyrównane komentarze będą błędne, gdy 'tabstop' / align = "left" /

Źródło:

 11
Author: ElasticThoughts,
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-01-24 23:42:50

Jeszcze jedno, użyj
:retab
aby przekonwertować istniejące tab na spaces http://vim.wikia.com/wiki/Converting_tabs_to_spaces

 6
Author: Dawn Song,
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-01-04 14:58:08

Dodaj wiersz
set ts=4
w
~/.vimrc plik dla użytkownika
lub
/etc/vimrc file for system wide

 6
Author: Alok Singh Mahor,
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-06-07 12:12:04

Istnieje kilka ustawień, które określają, czy używać spacji czy tabulatorów.

Oto przydatne funkcje, które można zdefiniować w pliku ~/.vimrc:

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

Użycie:

:call UseTabs()
:call UseSpaces()

Aby używać go dla rozszerzeń plików, można użyć następującej składni (dodawanej do .vimrc):

au! BufWrite,FileWritePre *.module,*.install call UseSpaces()

Zobacz także: Konwersja tabulatorów na spacje.


Oto kolejny fragment z Wikii, który może być użyty do przełączania między tabulatorami i spacjami :

" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
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 korzystanie z 4 spacje dla każdej karty i mapowanie do F9 , aby włączyć ustawienia.

 5
Author: kenorb,
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-01-26 22:24:38
 4
Author: Amarghosh,
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-09-01 18:10:30