vim Verknüpfung zum Öffnen einer Datei unter dem Cursor in einem bereits geöffneten Fenster


12

In vim können Sie mit dem Befehl eine Datei unter dem Cursor öffnengf .

Sie können diese Datei auch einfach in einem neuen geteilten Fenster öffnen, indem Sie auf klicken <c-w> f. Dies ist eine wirklich schöne und zeitsparende Funktion.

Ich kann jedoch nicht herausfinden, wie die Datei in einem bereits geöffneten geteilten Fenster geöffnet wird (ohne ein neues zu erstellen).


1
Vielleicht möchten Sie sich die previewFunktion ansehen (siehe :h preview).
Stéphane Chazelas

Richtig, ich benutze auch die Vorschau. Ich wollte die Datei jedoch nicht im Vorschaufenster öffnen, sondern explizit in einem anderen.
Psibar

Antworten:


10

Ich habe alle Teile zusammengebracht, um den Trick zu machen. Am besten erstellen Sie eine benutzerdefinierte Zuordnung für alle Befehle:

 map <F8> :let mycurf=expand("<cfile>")<cr><c-w> w :execute("e ".mycurf)<cr><c-w>p

Erläuterung:

  • map <F8> ordnet auf "F8" die folgenden Befehle zu
  • let mycurf=expand("<cfile>") Ruft den Dateinamen unter den Cursor und speichert ihn in mycurf
  • <c-w>w Ändert den Fokus auf das nächste geöffnete geteilte Fenster
  • execute("e ".mycurf) öffnet die in gespeicherte Datei mycurf
  • <c-w>pändert schließlich den Fokus auf das vorherige Fenster (woher wir tatsächlich kamen)

1

Das geht nicht einfach. Ein [count]Vorher <C-w>fgibt an, welche Dateiübereinstimmung 'path'geöffnet ist. Es wird kein vorhandenes Fenster ausgewählt. Nur für den <C-w>wBefehl [count]bedeutet "Zur vorhandenen Fensternummer gehen".

Um diese Funktionalität zu erhalten, müssen Sie eine benutzerdefinierte Zuordnung schreiben, die entweder

  • greift nach der Datei, geht zum [count]Fenster und emuliert den gfBefehl oder
  • Klont den aktuellen Puffer in das [count]Fenster und wird gfdort ausgeführt

Ja, der einzige Weg, dies zu tun, besteht darin, eine benutzerdefinierte Zuordnung zu schreiben. Ich hatte nur einige Probleme damit, die Datei unter dem Cursor zu greifen. Aber ich glaube, ich habe es jetzt herausgefunden
Psibar

1

Ich suchte nach der gleichen VIm-Funktion und fand diese Lösung heraus, die wie Charme funktioniert:

map <F8> :vertical wincmd f<CR>

Quellseite .


0

Das hat bei mir funktioniert:

function! OpenFileInPrevWindow()
    let cfile = expand("<cfile>")
    wincmd p
    execute "edit " . cfile
endfunction

nmap ,f :call OpenFileInPrevWindow()<CR>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.