Wie kann ich fzf in vim starten und die ausgewählte Datei in einem geteilten Fenster öffnen?

Wie kann ich fzf in vim starten und die ausgewählte Datei in einem geteilten Fenster öffnen?

Wie kann ich die ausgewählte Datei in einem geteilten Fenster starten fzfund vimöffnen? Ich möchte kein Plugin installieren.

Ich habe es versucht

:!a=$(ls | fzf) && vsplit $a

Antwort1

Da fzfes Zugriff auf die Konsole benötigt, müssen Sie es als Vordergrundbefehl ausführen und es gibt nicht wirklich eine gute Möglichkeit für Sie, das zu tunUndErfassen Sie die Ausgabe von fzf(dem Dateinamen) in Vim über eine Pipe. Die Verwendung einer temporären Datei zum Speichern des Dateinamens ist hier der einfachste Ansatz.

Eine einfache Lösung ist:

function! SelectFile()
  let tmp = tempname()
  execute '!ls | fzf >'.tmp
  let fname = readfile(tmp)[0]
  silent execute '!rm '.tmp
  execute 'vsplit '.fname
endfunction

Dann verwenden Sie es mit:

:call SelectFile()

(Oder erstellen Sie eine Tastenbelegung oder einen Benutzerbefehl dafür.)

Es ist auch eine gute Möglichkeit , Vim :terminalzum Ausführen fzfdarin zu verwenden (anstatt mit auszugeben :!).

In jedem Fall ist die beste Vorgehensweise, einfach eines der hervorragenden Vim-Plugins zu verwenden, entweder das einfache, das infzfselbst und wahrscheinlich auch die vollständigerefzf.vimdas auf dem Low-Level-Plug-In aufbaut und leistungsstarke Funktionen liefert, von deren Verfügbarkeit Sie profitieren.

verwandte Informationen