Antworten:
Sie können drücken {count}Ctrl-G
:
{count}CTRL-G Like CTRL-G, but prints the current file name with
full path. If the count is higher than 1 the current
buffer number is also given.
Durch Drücken von 1gefolgt von Ctrl+ Gwird der vollständige Pfad der aktuellen Datei angezeigt. Wenn {count}
größer als 1, wird auch der Puffername angezeigt.
(Wenn Sie nur Ctrl+ Gdrücken, wird der Pfad relativ zu Vims aktuellem Arbeitsverzeichnis angezeigt, wie Jasper in den Kommentaren ausgeführt hat.)
Mit dem folgenden Befehl können Sie .vimrc
den vollständigen Pfad zur Statuszeile hinzufügen, sodass er immer sichtbar ist:
set statusline+=%F
C-g
die Standardeinstellung für zu sein 0C-g
und 2C-g
zeigt zusätzlich die Pufferindexnummer (ab 1) an.
1C-g
!
Register %
enthält den Namen der aktuellen Datei.
Die folgenden Befehle können eingegeben werden, um die angezeigten Informationen anzuzeigen:
:echo @% |" directory/name of file
:echo expand('%:t') |" name of file ('tail')
:echo expand('%:p') |" full path
:echo expand('%:p:h') |" directory containing file ('head')
Wenn Sie nur den Namen der aktuellen Datei anzeigen möchten, geben Sie :f
/ ein :ls
oder drücken Sie Ctrl- g(für den vollständigen Pfad drücken Sie 1dann Ctrl- g).
Im Insert - Modus geben Ctrl- rdann %den Namen der aktuellen Datei einzufügen.
Die folgenden Befehle fügen Zeilen ein, die aus dem vollständigen Pfad der aktuellen und alternativen Dateien bestehen:
:put =expand('%:p')
:put =expand('#:p')
Quelle: Liefert den Namen der aktuellen Datei bei vim wikia
Verbunden:
=expand...
Ausdrücke auch Ctrl-R
im Einfügemodus nachher verwenden können.
Mit können :!ls %:p
Sie den vollständigen Pfad zur aktuellen Datei abrufen.
Je nach Ex-Kontext %
wird entweder der Inhalt der Datei oder der Dateiname gemeint. Beim Shelling wird der Dateipfad relativ zum aktuellen Verzeichnis dargestellt. Der Befehl ' %:p
' fügt den Dateinamen-Modifikator für den vollständigen Pfad hinzu %
.
Es gibt einige andere interessante Dateinamenmodifikatoren wie:
:~
: Abrufen des Dateipfads relativ zum Basisverzeichnis (dieses hat aus irgendeinem Grund bei mir nicht funktioniert):.
: Ermittelt den Dateipfad relativ zum aktuellen Verzeichnis ( %
Standard):r
: Dateiname root. Der Name der Datei ohne die Erweiterung.:e
: Dateierweiterung.:h
: Teilen Sie auf /
und geben Sie die linke Hälfte zurück (dh, wenn ich eine Datei in einem Pfad von bearbeite /tmp/test.txt
und ausführe, %:p:h
wird zurückgegeben/tmp
:t
: Teilen Sie auf /
und geben Sie die rechte Hälfte zurück (dh, wenn ich eine Datei in einem Pfad von bearbeite /tmp/test.txt
und ausführe, %:p:t
wird zurückgegebentext.txt
Das aktuelle Arbeitsverzeichnis sieht man mit :pwd
. Dies ist natürlich nur das Verzeichnis und nicht der Dateiname. Um das Arbeitsverzeichnis und den Dateinamen zu erhalten, können wir das Spezialregister verwenden %
, das Informationen über die aktuelle Datei enthält.
Wenn Sie verwenden :echo @%
, erhalten Sie das Verzeichnis und den Dateinamen der aktuellen Datei.
Wenn Sie verwenden :echo expand('%:p')
, erhalten Sie den vollständigen Pfad und Dateinamen der aktuellen Datei. Dies ist der Antwort von CharlesL sehr ähnlich .
Ich erinnere mich an diese, obwohl, denn wenn man vim Hilfe verwenden :h expand
, dann erwähnt, dass %
und %:p
und deren Angehörige.
Ich benutze:
:f[ile]
Das ist :f
oder :file
.
Ich bin überrascht, dass niemand dies in den Antworten erwähnt. Vermisse ich etwas?
Verwenden Sie Folgendes, um den vollständigen Pfad für alle Dateien einschließlich aufgelöster Symlinks anzuzeigen.
:echo resolve(expand('%:p'))
Es gibt bereits bessere Antworten, aber wenn Sie (aus irgendeinem Grund) die Shell verwenden möchten, um den vollständigen Pfad der Datei abzurufen (dies ist nützlicher, wenn Sie mit der Shell eine andere Operation für die Datei ausführen möchten), Auf einem Unix-ähnlichen System könnten Sie Folgendes ausführen:
:!realpath %
oder:
:'<,'>!realpath %
um den Pfad über der aktuellen Auswahl in das Dokument einzufügen.
Register %
enthält immer den Namen der Datei. Ein Beispiel aus der Praxis könnte sein, dass Sie eine Konfigurationsdatei bearbeiten, aber keine Schreibrechte haben (und Vim nicht als root ausführen möchten), die Datei bearbeiten und dann ausführen können:
:w ! sudo tee %
um die Datei zu speichern (ein winziges Thema, aber es ist ein gutes Beispiel dafür, was man mit dem %
Register noch machen kann).
realpath
ist nicht POSIX, daher ist es möglicherweise einfacher:!echo "$PWD/%"
Sie müssen die Statuszeile so einstellen, dass sie angezeigt wird, und den Pfad angeben. Ich tat dies dauerhaft, indem ich die beiden folgenden Zeilen zu meinem ~ / .vimrc hinzufügte
set laststatus=2
set statusline+=%F
Wenn Sie das nur einmal ausführen möchten. Dann beim VIing eines Dokumenttyps
:set laststatus=2 <ENTER>
:set statusline+=%F <ENTER>
Ich benutze dafür vim airline und ein paar nette Features:
Sie können den vollständigen Pfad der Datei, die Sie bearbeiten, in der Titelleiste anzeigen. Dies ist meiner Meinung nach eine bequeme Möglichkeit, den Dateipfad anzuzeigen.
Dazu müssen Sie die title
Option und setzen titlestring
. Aktuell verwende ich folgende Einstellungen:
set title
set titlestring=%{hostname()}\ \ %F\ \ %{strftime('%Y-%m-%d\ %H:%M',getftime(expand('%')))}
Es zeigt den Hostnamen von Vim, dann den vollständigen Pfad der Datei und den Zeitpunkt der letzten Änderung der Datei. In der folgenden Abbildung sehen Sie eine Demo
Ctrl+G
eher wie "Pfad relativ zu Vims CWD"?