Ich habe ein Vim-Autocmd, das nachgestellte Leerzeichen in Dateien vor dem Schreiben entfernt. Ich möchte dies fast 100% der Zeit, aber es gibt einige Dateitypen, die ich deaktivieren möchte. Herkömmliche Weisheit besteht darin, die Dateitypen, gegen die ein Autocmd ausgeführt werden soll, in einer durch Kommas getrennten Liste aufzulisten, z.
autocmd BufWritePre *.rb, *.js, *.pl
Aber in diesem Fall wäre das lästig.
Gibt es eine Möglichkeit, ein Autocmd-Muster mit allen Dateien abzugleichen, mit Ausnahme derjenigen, die mit dem Muster übereinstimmen? Ich kann in den Dokumenten kein Äquivalent zu einem NICHT-Matcher finden.
let b:noStripWhitespace
zu den Dateien im Abschnitt Dateityp-Plugin hinzufügen. Fx, um das Entfernen von nachgestellten Leerzeichen für Git-Commits zu deaktivieren, fügen Sie die Zeile zu hinzu~/.vim/ftplugin/gitcommit.vim
.Eine andere Wahl für einen Linienweg:
Dann können Sie für alle Dateitypen außer denen auf der schwarzen Liste etwas tun, das Ihnen gefällt.
quelle
Am einfachsten wäre es, eine lokale Variable für den einen Dateityp auf true zu setzen. Setzen Sie dann den Befehl autom, wenn diese Variable falsch ist (wenn sie für alles andere festgelegt ist) oder wenn sie überhaupt existiert (keine Voreinstellung erforderlich).
Variable Präfixe basierend auf Kommentar geändert
quelle
Dies funktioniert für automatische Befehle
Syntax
, bei denen das Muster (<match>
) nur der Dateityp ist. Es schließt allerst
Dateien aus:quelle
Unsere .vimrc-Konfigurationsdatei wird beim Start nur einmal ausgeführt. Wenn Sie zu diesem Zeitpunkt einen if-Test durchführen, funktioniert dies nicht, da derzeit keine Python-Datei bearbeitet wird.
Sie können jedoch .vimrc verwenden, um ein automatisches Verhalten einzurichten: etwas, das vim jedes Mal tut, wenn es auf eine spezielle Bedingung stößt. Die Bedingung kann in Ihrem Fall sein: "Eine neue Datei wird gerade bearbeitet und ihr Dateityp ist 'Python'." Siehe: h: au
quelle