Wie führe ich einen bestimmten vim-Befehl aus, wenn ich eine Datei mit einer bestimmten Erweiterung öffne?

9

Ich möchte, dass alle meine Dateien mit .texeiner Zeilenlänge von 80 enden. Wenn ich also eine .texDatei in vim öffne, tippe ich :set tw=79. Was würde ich in meine .vimrc einfügen, um dies zu automatisieren?

Was passiert , wenn ich es an der Arbeit mit einer bestimmten Liste von Dateitypen gesucht, sagt sie, .md, .txt, und .tex?

JeremyKun
quelle

Antworten:

10

Anstatt die Erweiterung zu überprüfen und die Textbreite entsprechend einzustellen, können Sie einfach eine tex.vimDatei (der Name muss mit dem Dateityp übereinstimmen) in .vim/ftplugin/oder für Windows $HOME/vimfiles/ftplugin/erstellen und dort die Textbreite festlegen. Dies wird Ihnen helfen, Ihre .vimrc sauber zu halten.

Ihre .vim/ftplugin/tex.vimDatei würde folgendermaßen aussehen:

setlocal textwidth=79

Wie 8bittree in den Kommentaren sagte, müssen Sie auch filetype pluginsin Ihrem vimrc aktivieren (ich würde nicht wissen, warum jemand es nicht aktivieren würde):

filetype plugin on

Lesen Sie dies für weitere Informationen: http://vim.wikia.com/wiki/Keep_your_vimrc_file_clean

ap0
quelle
2
Sie sollten auch sicherstellen, dass Dateityp-Plugins in Ihrem .vimrcmit aktiviert sind filetype plugin on.
8bittree
8

In ~/.vimrckönnen Sie die folgende Zeile hinzufügen:

au BufReadPost,BufNewFile *.md,*.txt,*.tex setlocal tw=79

Trennen Sie zusätzliche Befehle durch |.

Dadurch werden Ihre Einstellungen direkt nach dem Lesen der Datei oder dem Öffnen einer neuen Datei im Puffer für bestimmte Erweiterungen festgelegt.

Kenorb
quelle
2
setkann beliebig viele Einstellungen vornehmen. So etwas set tw=79 nowrap formatoptions+=jwird funktionieren. Keine Notwendigkeit für ein |(es sei denn, Sie möchten natürlich einen anderen Befehl aufrufen) ;-)
Martin Tournoij