So führen Sie einen Befehl beim Start von vim aus

11

Ich habe gerade ein Plugin für Python installiert, das den Methodenbaum anzeigt. Daher möchte ich den Baum beim Start öffnen, daher muss ich die Tasten nicht jedes Mal drücken, wenn ich eine .pyDatei öffne . Ich möchte jedoch, dass dieser Befehl nur für .pyDateien ausgeführt wird. So sieht mein vimrc-Stück aus:

nmap <F8> :TagbarToggle<CR>

Gibt es eine Möglichkeit, diesen Befehl beim Start nur für .pyDateien auszuführen ?

St.Antario
quelle
Grüß dich St. Antario. Möglicherweise möchten Sie beachten, dass Ihre akzeptierte Antwort viel weniger positive Stimmen enthält als die alternative Antwort.
Küken

Antworten:

8

Fügen Sie hinzu .vimrc:

au BufEnter *.py :TagbarToggle<CR>

wo

  • auist autocmdder Befehl automatisch, auszuführen.

  • BufEnter ist, wenn Sie die Datei zum ersten Mal eingeben.

  • *.py ist für Dateityp Python.

  • und der Rest ist der auszuführende Befehl
kapil
quelle
2
Dies fügt bei jeder Beschaffung einen zusätzlichen automatischen .vimrcBefehl hinzu. Um dies zu verhindern, sollte die Zeile von einer Gruppe umgeben sein, die den Befehl löscht. Siehe :help augroup-delete.
Rich
: augroup testgroup: autocmd! : au BufEnter * .py: TagbarToggle <CR> augroup END ist es in Ordnung?
Kapil
1
Sieht gut für mich aus!
Rich
10

Meiner Meinung nach besteht die sauberste Methode darin, den Befehl einfach zu einer Datei in Ihrem .vim/vimfilesVerzeichnis hinzuzufügen :

~/.vim/after/ftplugin/python.vim

oder für Windows:

$HOME\vimfiles\after\ftplugin\python.vim

Diese Technik ist in :help ftplugin-overrule(Listenpunkt 3) dokumentiert , obwohl der Kontext (Ändern der Einstellungen) etwas anders ist.

Es bietet die folgenden Vorteile gegenüber der von kapil beschriebenen Autocommand- Technik .

  1. Weniger Code . Sie schreiben einfach das Vimscript, das Sie ausführen möchten. Sie müssen keinen automatischen Befehl codieren und ihn mit Befehlen umgeben augroupund autocommand!löschen.

  2. Weniger Overhead . Vim erkennt bereits den Dateityp und prüft, ob die after/ftplugin/filetypeDatei vorhanden ist: Warum sollte ein zusätzlicher Autobefehl hinzugefügt werden, der denselben Zweck erfüllt?

  3. Reiniger.vimrc . Ich denke, es ist besser, datentypspezifische Funktionen von meinen zu trennen .vimrc. (Einige sind damit jedoch nicht einverstanden: siehe die Nachteile unten.)

Es hat auch ein paar kleinere Nachteile:

  1. Dies funktioniert nur, wenn Sie die Dateityperkennung von Vim verwenden. ( :help filetype)

    Dies ist jedoch im Allgemeinen eine der ersten Einstellungen, die Benutzer in ihrer .vimrc aktivieren, und ich würde wetten, dass fast alle Vim-Benutzer sie bereits aktiviert haben.

  2. Einige Leute bevorzugen es, ihre gesamte Konfiguration in ihrer .vimrcDatei zu behalten .

Reich
quelle
1
+1 für ftplugin/<filetype>.vim, bessere Trennung von Bedenken :)
LEI