Meine aktuelle Einstellung nimmt 8 Leerzeichen an. Wie könnte ich es neu definieren?
Meine aktuelle Einstellung nimmt 8 Leerzeichen an. Wie könnte ich es neu definieren?
Antworten:
Es kommt darauf an, was du meinst. Haben Sie aktuelle Tabulatorzeichen in Ihrer Datei zu wollen , erscheinen 4 Felder breit, oder „Tab“ meinen Sie eigentlich einen Gedankenstrich , erzeugt durch die Tab - Taste drücken, die in der Datei führen würde buchstäblich enthalten (bis zu) 4 Leerzeichen für jede "Registerkarte", die Sie eingeben?
Abhängig von Ihrer Antwort sollte eine der folgenden Einstellungen für Sie funktionieren:
Für Tabulatorzeichen, die 4 Leerzeichen breit erscheinen :
set tabstop=4
Wenn Sie in Ihrem Quellcode das tatsächliche Tabulatorzeichen verwenden, möchten Sie wahrscheinlich auch diese Einstellungen (dies sind eigentlich die Standardeinstellungen, aber Sie möchten sie möglicherweise defensiv festlegen):
set softtabstop=0 noexpandtab
Wenn Sie möchten, dass ein Einzug einer einzelnen Registerkarte entspricht, sollten Sie außerdem Folgendes verwenden:
set shiftwidth=4
Für Einrückungen, die aus 4 Leerzeichen bestehen, aber mit der Tabulatortaste eingegeben werden:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
Um die obigen Einstellungen dauerhaft zu machen, fügen Sie diese Zeilen Ihrem vimrc hinzu .
Falls Sie Anpassungen vornehmen müssen oder einfach nur verstehen möchten, was diese Optionen bedeuten, finden Sie hier eine Aufschlüsselung der einzelnen Optionen:
tabstop
Die Breite eines harten Tabstops, gemessen in "Leerzeichen" - effektiv die (maximale) Breite eines tatsächlichen Tabulatorzeichens.
shiftwidth
Die Größe eines "Einzugs". Es wird auch in Leerzeichen gemessen. Wenn Ihre Codebasis also mit Tabulatorzeichen eingerückt ist, möchten Sie
shiftwidth
die Anzahl der Tabulatorzeichen mal erreichentabstop
. Dies wird auch durch Dinge wie die verwendet=
,>
und<
Befehle.
softtabstop
Wenn Sie diesen Wert auf einen anderen Wert ungleich Null setzen,
tabstop
wird mit der Tabulatortaste (im Einfügemodus) eine Kombination von Leerzeichen (und möglicherweise Tabulatoren) eingefügt, um Tabulatoren bei dieser Breite zu simulieren .
expandtab
Wenn Sie dies aktivieren, wird die Tabulatortaste (im Einfügemodus) Leerzeichen anstelle von Tabulatorzeichen einfügen. Dies wirkt sich auch auf das Verhalten des
retab
Befehls aus.
smarttab
Wenn Sie dies aktivieren, fügt die Tabulatortaste (im Einfügemodus) Leerzeichen oder Tabulatoren ein, um zum nächsten Einzug des nächsten Tabstops zu gelangen, wenn sich der Cursor am Anfang einer Zeile befindet (dh die einzigen vorhergehenden Zeichen sind Leerzeichen).
Weitere Einzelheiten zu diesen alle sehen in vim (zB ):help 'optionname'
:help 'tabstop'
~/.vimrc
ist die vim-Einstellung des Benutzers. Die meisten Leute lassen die Systemeinstellungen in Ruhe und bearbeiten nur die Benutzereinstellungen. Beachten Sie, dass dies ~/.vimrc
erst vorhanden ist, wenn Sie es auf den meisten Systemen erstellen.
set softtabstop=4
Funktion zur Kenntnis ! Ich bin es leid zu versuchen, Ihren Code mit less
oder mit einem anderen Editor zu lesen , außer vim
um verrückte Einrückungen zu sehen, weil Sie die Registerkarte neu definiert haben, um eine beliebige Anzahl von Leerzeichen zu erhalten (obwohl der Rest des Systems anders denkt)! :-)
tabstop=8
für Einrückungen verwendet werden soll, die aus 4 Leerzeichen bestehen? Ich konnte den Grund nicht finden, nachdem ich die Beschreibungen der verschiedenen Einstellungen gelesen hatte. Eine andere Antwort lautet "Verwenden" tabstop=4
, was für mich etwas sinnvoller ist.
tabstop
Option steuert die Breite eines Hard-Tab-Zeichens. Wenn Sie möchten , dass Ihre Einzüge von 4 Leerzeichen bestehen, anstatt einzelne Tabulatoren , die 4-breit sind, dann die Breite der Tabulatorzeichen spielt keine Rolle - Art . In der Praxis mögen Sie wahrscheinlich Ihre Tabulatorzeichen Breite sein verschieden von der Breite Ihrer Einzüge, um die Möglichkeit von Tabulatoren getarnt als richtige Einzüge zu reduzieren. ( list
+ expandtab
kann auch hier helfen) Auch 8-Zeichen-breite Registerkarten sind "der Standard" - Ihr Terminal, Python und viele andere Tools verwenden standardmäßig 8-Zeichen-breite Registerkarten.
Um dies für den aktuellen Benutzer dauerhaft zu definieren, erstellen (oder bearbeiten) Sie die .vimrc
Datei:
$ vim ~/.vimrc
Fügen Sie dann die folgende Konfiguration in die Datei ein. Nach dem Neustart von vim gelten die Registerkarteneinstellungen.
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
, um vorhandene tab
zu konvertieren spaces
. vim.wikia.com/wiki/Converting_tabs_to_spaces
Es gibt nur wenige Einstellungen, die festlegen, ob Leerzeichen oder Tabulatoren verwendet werden sollen.
Hier sind also praktische Funktionen, die in Ihrer ~/.vimrc
Datei definiert werden können :
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
Verwendungszweck:
:call UseTabs()
:call UseSpaces()
Um es pro Dateierweiterung zu verwenden, kann die folgende Syntax verwendet (hinzugefügt .vimrc
) werden:
au! BufWrite,FileWritePre *.module,*.install call UseSpaces()
Siehe auch: Konvertieren von Registerkarten in Leerzeichen .
Hier ist ein weiterer Ausschnitt aus Wikia, mit dem Sie zwischen Tabulatoren und Leerzeichen wechseln können :
" 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
Es ermöglicht die Verwendung von 4 Leerzeichen für jede Registerkarte und eine Zuordnung F9zum Umschalten der Einstellungen.
Ich habe dies kopiert und in meine .vimrc-Datei eingefügt:
" size of a hard tabstop
set tabstop=4
" always uses spaces instead of tab characters
set expandtab
" size of an "indent"
set shiftwidth=4
Die ersten 2 Einstellungen bedeuten, dass ich durch Drücken der Tabulatortaste 4 Leerzeichen erhalte. Die dritte Einstellung bedeutet, dass wenn ich es tueV>
(dh visuell und eingerückt) auch 4 Leerzeichen bekomme.
Nicht so umfassend wie die akzeptierte Antwort, aber es könnte Menschen helfen, die nur etwas kopieren und einfügen möchten.
Geben Sie die gewünschten Einstellungen in ~ / .vimrc ein Datei . Im Folgenden finden Sie einige Richtlinien und bewährte Methoden.
Es gibt vier Hauptmethoden für die Verwendung von Registerkarten in Vim:
Halten Sie 'tabstop' immer bei 8, setzen Sie 'softtabstop' und 'shiftwidth' auf 4 (oder 3 oder was auch immer Sie bevorzugen) und verwenden Sie 'noexpandtab'. Dann verwendet Vim eine Mischung aus Tabulatoren und Leerzeichen, tippt jedoch und verhält sich so, als würde alle 4 (oder 3) Zeichen ein Tabulator angezeigt.
Hinweis: Wenn Sie 'tabstop' auf einen anderen Wert als 8 setzen, kann Ihre Datei an vielen Stellen falsch angezeigt werden (z. B. beim Drucken).
Stellen Sie 'tabstop' und 'shiftwidth' auf das ein, was Sie bevorzugen, und verwenden Sie 'expandtab'. Auf diese Weise fügen Sie immer Leerzeichen ein. Die Formatierung wird niemals durcheinander gebracht, wenn 'tabstop' geändert wird.
Stellen Sie 'tabstop' und 'shiftwidth' auf das ein, was Sie bevorzugen, und verwenden Sie eine | modeline | um diese Werte beim erneuten Bearbeiten der Datei festzulegen. Funktioniert nur, wenn Sie die Datei mit Vim bearbeiten.
Setzen Sie 'tabstop' und 'shiftwidth' immer auf den gleichen Wert und 'noexpandtab'. Dies sollte dann (nur für anfängliche Einrückungen) für alle Tabstop-Einstellungen funktionieren, die von Personen verwendet werden. Es kann jedoch hilfreich sein, Tabulatoren nach dem ersten nicht leeren Leerzeichen als Leerzeichen einzufügen, wenn Sie dies tun. Andernfalls sind ausgerichtete Kommentare falsch, wenn 'tabstop' geändert wird.
Quelle:
:help tabstop
:help tabstop
in vim ist.
Eine weitere Sache, verwenden Sie
:retab
, um vorhandene tab
in http://vim.wikia.com/wiki/Converting_tabs_to_spaces zu konvertierenspaces
:set sw=4
Zeile
set ts=4
in
~/.vimrc
Datei für pro Benutzer
oder
/etc/vimrc
Datei für systemweit hinzufügen
Mein grundlegendes ~ / .vimrc mit Kommentar:
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 >>
Permanent für alle Benutzer (wenn Sie alleine auf dem Server sind):
# echo "set tabstop=4" >> /etc/vim/vimrc
Normalerweise auf einem neuen Server apt-get purge nano mc
und allen anderen, um Zeit zu sparen. Andernfalls werden Sie Editor in neu zu definieren git
, crontab
etc
F10
in läuft, nano
aber ich mache immer ein paar Tricks mit Speichern (vielleicht F10
ist eine Lösung). oder funktioniert es nicht in screen
? Ich kann mich nicht erinnern, hasse es einfach)