
Wie kann ich die ausgewählte Datei in einem geteilten Fenster starten fzf
und vim
öffnen? Ich möchte kein Plugin installieren.
Ich habe es versucht
:!a=$(ls | fzf) && vsplit $a
Antwort1
Da fzf
es 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 :terminal
zum Ausführen fzf
darin 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.