Was ist der Unterschied zwischen set und: set?

16

Ich habe mir Tim Popes vim-sensibles Plugin angesehen und das habe ich in der README-Datei bemerkt ...

In der Quelle finden Sie die maßgebliche Liste der Funktionen. (Keine Sorge, hauptsächlich :setAnrufe.)

Wenn ich auf die Quelle schaute, sind die :setAnrufe wie folgt ...

set autoindent

Es gibt keine :vor dem set.

Ich bin mir ziemlich sicher, dass ich :setin Beispielen .vimrcauch gesehen habe.

Was ist der Unterschied?

Welches Formular soll ich in meinem verwenden .vimrc?

Ethan
quelle

Antworten:

21

Ein "Skript" führt lediglich eine Folge von ex-Befehlen aus. Ein "Ex-Befehl" ist das, was Sie eingeben, wenn Sie :in Vim verwenden. Zum Beispiel :wq, :set wrap, :e fileusw. sind alle Ex - Befehle.

Das :ist nicht Teil des Befehls; Es ist lediglich ein Tastendruck, um den Befehlszeilenmodus zu starten. Sie müssen nicht immer das einschließen :, wenn Sie beispielsweise mehrere Befehle |verketten, müssen Sie das nicht :mehr als einmal wiederholen . Zum Beispiel :write | quitwird gut funktionieren.

Der Einfachheit halber :kann das jedoch enthalten sein. Dies hilft beim Kopieren / Einfügen und so weiter, muss aber nicht sein. Es spielt keine Rolle. Tatsächlich werden alle führenden :Zeichen einfach ignoriert. :write, writeUnd :::::::::writealle sind gleichwertig in Bezug auf Funktionalität (obwohl natürlich nicht in Bezug auf die geistige Gesundheit).

Es ist oft nützlich, die :Dokumentation einzuschließen, um zu verdeutlichen, dass es sich um einen Ex-Befehl handelt. Beispielsweise wkönnte entweder auf :woder auf den Normalmodus-Befehl verwiesen werden w, um zum nächsten Wort zu gelangen.

Beachten Sie, dass dies für alles gilt . Kontrollstrukturen wie ifund endifsind auch nur Ex-Befehle; Sie können so etwas eingeben:

:if 1
:echo 'one'
:endif

von der Vim-Kommandozeile ganz gut; Keine Notwendigkeit für ein "Skript". Vim-Skripte sind sehr "non-magic" und "non-special". Alles, was Sie von der ex-Befehlszeile aus tun können, können Sie in einem Vim-Skript tun und umgekehrt.

Martin Tournoij
quelle
6

Es gibt keinen Unterschied. Wenn vim :in Ihrem vimrc (oder in einer beliebigen Vimscript-Datei) ein vor einem Befehl steht , wird dieser ignoriert. Wie oben erwähnt, ist dies auch nicht befehlsspezifisch set.

Normalerweise :bedeutet dies, dass der Befehl von Ihnen ausgeführt wird, anstatt in Ihrem vimrc (oder einer anderen Vimscript-Datei) abgelegt zu werden . Dies hängt jedoch normalerweise vom Kontext ab. Persönlich denke ich, dass es viel besser ist, in Vimscript-Dateien keinen Doppelpunkt vor den Befehlen zu setzen, und das ist anscheinend auch das, was die meisten anderen Leute tun.

Mehr dazu unter :help script.

Immergrüner Baum
quelle
:h scriptoder :h vim-script-intro(gleichwertig)
VanLaser