Antworten:
Ich bin sicher, es gibt andere Möglichkeiten, dies zu tun ... aber der Hauptbefehl, den Sie wollen, ist :r[ead]
der, der die Ausgabe eines Befehls in den Puffer einfügt.
So fügen Sie nur den Dateinamen ein:
:r! echo %
Und um den vollständigen Pfad einzuschließen:
:r! echo %:p
Für mehr Information:
:help read
:help filename-modifiers
Der aktuelle Dateiname befindet sich im "%
Register, sodass Sie ihn (im Einfügemodus) mit einfügen können <c-r>%
. Mit kann der vollständige Pfad eingefügt werden <c-r>=expand("%:p")
. Sie können ein Makro daraus erstellen, wenn Sie es häufig verwenden. Weitere ähnliche Tricks finden Sie unter :h expand
und :h "=
.
<c-r>
dass das nächste Zeichen ein Register ist.
"%p
im normalen oder visuellen Modus tun .
Wie in zu sehen ist :h registers
, "%
enthält das Register den aktuellen Dateinamen. Der :pu[t]
Befehl fügt den Inhalt eines Registers in den Text ein.
Um den tatsächlichen Dateinamen einzufügen, können Sie im Befehlsmodus einen der folgenden Befehle eingeben:
:put %
oder
"%p
Geben Sie ein, um den Dateinamen mit dem vollständigen Pfad einzufügen
:put=expand('%:p')
im Befehlsmodus.
Mehr Info:
:h pu[t]
Durch Tippen können "rp
Sie den Inhalt des Registers einfügen "r
.
:put "%:p"
scheint bei mir nicht zu funktionieren. Es scheint nur mit expand () zu funktionieren , wie in :put =expand('%:p')
:, was es nicht viel weniger umständlich macht als <c-r>=expand('%:p')
leider.
Ein einfacher Weg ist zu laufen:
!!echo %
!!
ersetzt die aktuelle Zeile durch das Ergebnis des darauf folgenden Befehls.
%
wird durch den Namen der bearbeiteten Datei im Befehl ersetzt, sodass dieser Name effektiv in die bearbeitete Datei eingefügt wird.
Der Dateiname wurde an den Befehl vi (m) übergeben und kann einen relativen oder absoluten Pfad enthalten. Wenn Sie es entfernen und nur den Dateinamen beibehalten möchten, führen Sie es aus
!!basename %
Wenn Sie dies häufig tun müssen, kann es nützlich sein, eine Schlüsselsequenz an das zu binden, was Sie möchten, wie unter http://vim.wikia.com/wiki/Insert_current_filename angegeben
Fügt den aktuellen Dateinamen ohne die Erweiterung an der Cursorposition ein, wenn Sie sich im Einfügemodus befinden.
:inoremap \fn <C-R>=expand("%:t:r")<CR>
So behalten Sie die Erweiterung bei:
:inoremap \fn <C-R>=expand("%:t")<CR>
So fügen Sie den absoluten Pfad des Verzeichnisses ein, in dem sich die Datei befindet:
:inoremap \fn <C-R>=expand("%:p:h")<CR>
So fügen Sie den relativen Pfad des Verzeichnisses ein, in dem sich die Datei befindet:
:inoremap \fn <C-R>=expand("%:h")<CR>
Die oben genannten Einstellungen wirken sich direkt vim
auf die Sitzung aus, oder Sie können sie in .vimrc
das Feld einfügen (wobei der führende Doppelpunkt in der Zeile optional ist).
Ich googelte auf einfachste Weise, um den aktuellen Dateinamen (ohne Pfad oder Erweiterung) an der aktuellen Position einzufügen (keine neue Zeile, keine neue Zeile). Ich habe also nach einer Kombination aus vorherigen Antworten und diesem Link gesucht.
Im Einfügemodus :
<C-R>=expand("%:t:r")
Dann das nächste Mal (mit dem Befehl bereits in der Geschichte):
<C-R>=<UP>
<c-r>
als Redo-Befehl abgebildet?