Wie kann ich den Pfad zur aktuellen Datei in der Befehlszeile aufrufen, um einen ähnlichen Dateinamen einzugeben? Ich möchte keine Abkürzung, die durch den aktuellen Dateinamen ersetzt wird. Ich möchte den Dateinamen mit seinem Verzeichnispfad bearbeiten. Zum Beispiel möchte ich :edit
eine Datei mit einem ähnlichen Namen oder in einem ähnlichen Verzeichnis, z
vim src/submodule/frontend/frobnicate2.c
und jetzt möchte ich bearbeiten ../trunk/src/submodule/frontend/frobnicate.c
, und ich möchte nur den vollständigen Pfad einfügen ../trunk
und entfernen 2
, nicht erneut eingeben.
Ich kann natürlich zur Shell zurückkehren und deren Befehlsverlauf verwenden, oder ich könnte den Pfad durch die GUI kopieren und einfügen, aber ich suche nach einem effizienteren Weg, bei dem Vim nicht verlassen werden muss.
quelle
Ctrl-r =expand('%:p')
. Dies verwendet das Register = .Wenn Sie Ihre vim-
path
Variable festgelegt haben, haben Sie die volle Leistung des:find
Befehls, nämlich die Tab-Vervollständigung von Dateinamen (ohne den Verzeichnisteil angeben zu müssen!).In deinem Fall so etwas wie
kann alles sein, was Sie brauchen, um
:fin frob<tab>
zu arbeiten. Für die blutigen Details,:help find
,:help file-searching
.quelle
Hier ist eine Zuordnung, die Sie ausprobieren können:
Dadurch wird der aktuelle Befehl gespeichert und das Register 'a' auf den Namen der aktuellen Datei gesetzt. Dann wird der letzte Befehl abgerufen und an den Inhalt des 'a'-Registers angehängt. Wenn Sie etwas Nützliches im 'a'-Register haben, wird es natürlich überschrieben.
Möglicherweise möchten Sie die zugeordneten Zeichen in etwas anderes ändern. Ich benutze gerne die Alt-Taste, aber es funktioniert in einigen Terminals nicht.
Wie Carpetsmoker in seiner Antwort hervorhob, können Sie den Funktionsaufruf in ändern
den vollen Weg erzwingen.
quelle
a
. Versuchen Sie stattdessen so etwas:cnoremap <M-q> <C-r>=fnameescape(expand('%:p'))<CR>