Aktivieren Sie die Cursorzeile und die Cursorspalte, nachdem das Quickfix-Fenster geöffnet wurde

7

Aufgrund der Leistung deaktiviere ich das cursorlineund cursorcolumnin Vim. Wenn Sie jedoch durch ein QuickfixFenster springen , ist es schwierig, den Cursor in der Datei zu finden. Daher möchte ich aktivieren cursorlineund cursorcolumnautomatisch nach dem QuickfixÖffnen eines Fensters (durch welche Aktionen auch immer).

Jetzt habe ich die Lösung Autocmdwie folgt:

autocmd BufferEnter quickfix :bufdo set cursorline cursorcolumn

Ist das die richtige Lösung? Irgendeine bessere Idee?

Vielen Dank!

Tamlok
quelle
2
Vielleicht könnten Sie :h QuickFixCmdPoststattdessen das Ereignis QuickFixCmdPost ( ) verwenden, aber ich bin mir nicht sicher, ob das besser wäre.
Statox
@statox Dank, es funktioniert mit Ack, vimgrepund so weiter. Aber es funktioniert nicht bei :copen. Ganz schöne Lösung!
Tamlok
Siehe :h QuickFixCmdPrees enthält eine Liste der Befehle, die das Ereignis QuickFixCmdPre(und damit das Ereignis QuickFixCmdPost) auslösen, und ist in der Tat :copenkeiner von ihnen. Das Verhalten, das Sie erleben, ist also normal, aber ich weiß nicht, wie ich es zum :copen
Laufen bringen soll

Antworten:

2

Erstellen Sie die Datei in ~/.vim/ftplugin/qf.vim(oder $HOME/vimfiles/ftplugin/qf.vimunter Windows) mit den folgenden Inhalten:

" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
   finish
endif

wincmd p " go to original window
set cursorline
set cursorcolumn
wincmd p " back to quickfix window

Die ftplugin-Dateien werden immer dann ausgeführt, wenn der Dateityp für einen bestimmten Dateipuffer festgelegt ist (Quickfix- und Speicherortfenster haben den Dateityp qf).

Wenn Sie die Dateityp-Plugin-Dateien anstelle von Autocmds verwenden, wird die Unordnung Ihres vimrc vermieden. Sie können weitere Informationen finden :help ftplugin-name, :help 43und Vim FAQ 26.8 .


Bearbeiten:

Das Aktivieren b:did_ftpluginist erforderlich, um es bei Bedarf zu deaktivieren und ein zweimaliges Laden zu vermeiden (siehe :help ftplugin).

Das let b:did_ftplugin = 1wird in dieser Datei weggelassen, da die Absicht dieser Datei darin besteht, das Standard-Dateityp-Plugin für den Quickfix zu erhöhen und nicht zu überschreiben. Wenn diese Zeile hinzugefügt wird, werden die Einstellungen bei $VIMRUNTIME/ftplugin/qf.vimübersprungen, wie unter erläutert :help ftplugin-overrule.

mMontu
quelle
Vielen Dank! Aber was heißt b:did_ftplugindas? Ihr Skript scheint es nirgendwo zu ändern. Ich habe es in meinem vimrc versucht und es funktioniert!
Tamlok
@ Tamlok froh, dass ich helfen konnte. Beachten Sie, dass Sie dies nicht in Ihr vimrc kopieren sollen, sondern in eine Datei, wie im ersten Satz erwähnt. Vim behandelt diese Art von Dateien auf besondere Weise. Ich habe die Frage zu dem b:did_ftpluginTeil aktualisiert .
mMontu