Wie kann ich den Pfad der aktuellen Datei in Vim dauerhaft anzeigen?

90

Ich weiß, dass CTRLgdie aktuelle Datei angezeigt wird, an der Sie arbeiten. Gibt es eine Möglichkeit, meine .vimrcso zu ändern , dass der Dateiname / Pfad immer angezeigt wird?

Zallarak
quelle

Antworten:

128

Fügen Sie in Ihrer Statuszeile ein hinzu %F, um den vollständigen Pfad anzuzeigen:

:help statusline

" Add full file path to your existing statusline
set statusline+=%F

Beachten Sie, %Fwird der vollständige Pfad sein. Verwenden Sie, um einen Pfad relativ zum Arbeitsverzeichnis abzurufen %f.

Wenn Ihre Statuszeile noch nicht sichtbar ist, müssen Sie sie möglicherweise zuerst so konfigurieren, dass sie über immer sichtbar ist laststatus=2

set laststatus=2

Sehen Sie, :help laststatuswas die Optionen bedeuten. Normalerweise kann die Statuszeile ausgeblendet oder ausgeblendet sein, es sei denn, mehrere Puffer sind geöffnet, aber ich finde es äußerst nützlich, diese Anpassungen ständig zu verwenden. Es lohnt sich, eine Bildschirmzeilenreserve dafür aufzugeben.

Michael Berkowski
quelle
1
Ich ziehe Ihre Antwort sicherlich meiner vor, aber das Hinzufügen set statusline+=%Fzu meiner ~/.vimrcscheint nicht das zu tun, was Sie sagen. Obwohl die Dokumente sicherlich mit Ihnen übereinzustimmen scheinen ...
Tim Pote
1
Dies hatte keine Wirkung. Entschuldigung, wenn mir etwas Einfaches fehlt, haben Sie irgendwelche Gedanken dazu?
Zallarak
1
@ TimPote Welche Vim-Version? Funktioniert bei mir. Möglicherweise drückt Ihre Statuslinie sie bereits ab oder begrenzt die Breite. Versuchen Sie es einfach :set statusline=%Fohne+
Michael Berkowski
@ zallarak Siehe meinen Kommentar zu Tim. Ändert sich Ihre Statuslinie, wenn Sie dies einfach tun :set statusline=%F? Schauen Sie ganz nach rechts oder links, um zu sehen, ob sich der Dateiname dort in der Statuszeile versteckt
Michael Berkowski
2
@TimPote Vielleicht set laststatus=2, um die Statuszeile immer sichtbar zu halten. Ich habe vergessen, dass ich das an hatte.
Michael Berkowski
20

setze ls = 2

Wenn Sie dies in vimrc hinzufügen, wird der Dateiname immer unten angezeigt.

SD.
quelle
set modeline hat nichts für mich getan, was soll es tun? (set ls = 2 hat allerdings etwas getan). Wie kann ich helfen, dies beim nächsten Mal selbst herauszufinden? Vielen Dank! :)
Charlie Parker
1
set modelineist ein bisschen gefährlich und hat nichts mit der Frage zu tun. Es ermöglicht die Ausführung von Vim-Befehlen in den 5 Anfangs- / Endzeilen einer Datei. Es sollte nur von denen eingeschaltet werden, die wissen warum und das wirklich wollen. (Deshalb habe ich -1 diese Antwort)
Dr. Beco
16

Ich habe zwei Möglichkeiten gefunden, den Dateipfad in der Titelleiste des Gnome-Terminals anzuzeigen, während ich eine Datei mit Vim bearbeite.

Der einfachere (und bessere) Weg: Fügen Sie Ihrer Zeile die folgende Zeile hinzu ~/.vimrc:

set title

Welches zeigt Ihnen oben:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

Der kompliziertere Weg zeigt Ihnen den absoluten Dateipfad. Es ist in diesem Blog-Beitrag, den ich kürzlich geschrieben habe, etwas detaillierter dokumentiert .

Sampson-Chen
quelle
Der "Titel festlegen" zeigt den Dateinamen auf der Registerkarte "Terminal" an. Interessantes Feature.
Duleshi
Interessant wie es ist, beantwortet die gestellte Frage nicht. Sie behaupten auch, es sei besser - aber vielleicht nicht. Wenn Sie beispielsweise Ihr vim im Terminal öffnen, das sich im Vollbildmodus befindet, ist der Titel nicht sichtbar. Also abstimmen.
LehrlingDev
8

Der einzige Weg, den vollständigen Pfad der Datei zu finden, in der ich arbeite, ist : :echo expand('%:p'). Sie können Strg + G neu zuordnen, wenn Sie möchten, aber ich persönlich mag es nicht, zu sehr von den Standards abzuweichen. Ich habe F7 so abgebildet:

map  <F7> <Esc>:echo expand('%:p')<Return>
Tim Pote
quelle
4
:help CTRL-G, und suchen Sie zwei Absätze nach unten CTRL-Gmit count.
Stefan Majewsky
1
Danke, @StefanMajewsky. 1 CTRL-Gzeigt den vollständigen Dateinamen. Ich habe nach dieser Option gesucht.
Anton Kiselev
Ich liebe dich Tim, dies ist der einzige Weg, um einen absoluten Weg zu zeigen, auch ohne ~.
Ryancheung
7

Wenn Sie vim-Airlines verwenden , geben Sie Folgendes ein .vimrc:

let g:airline_section_c = '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'

Dies ist eine Änderung der Fluggesellschaft standardmäßig wechselnde %fdurch %F.

Phcerdan
quelle
6

Ich habe es immer benutzt :f, aber die Antwort und die Links von @MichaelBerkowski sind unglaublich!

:f zeigt den Pfad, die Zeilenanzahl, den geänderten Status, die aktuelle Cursorposition und mehr ...

Ich wusste es nicht, CTRLGaber es scheint ungefähr dasselbe zu sein.

jahroy
quelle
5

Die Statuslinie ist sehr mächtig und praktisch, denke ich. Nach dem Auspacken werden Dateiname, Cursorposition und einige Flags angezeigt. Aber Sie möchten dasselbe wie ich tun und den Dateinamen-Teil durch den vollständigen Pfad zur Datei ersetzen .

Während ich .vimrcmeine Statuszeile bearbeite, könnte sie standardmäßig ungefähr so ​​aussehen:

.vimrc                                                        26,16           7%

Sie können Ihre Einstellung der Statuszeile anzeigen mit:

:set statusline?

Wenn Sie jedoch keine Änderungen vorgenommen haben und kein Modul es geändert hat, ist es leer. Anhand der Beispiele im Hilfeabschnitt ( :help statusline) können Sie jedoch feststellen, dass der Standardwert lautet:

:set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P

Nehmen Sie dies also in Ihre auf .vimrcund wechseln Sie %fzu %F. Ich habe auch das Dateityp-Flag ( %y) zu meiner Statuszeile hinzugefügt, da ich es für zweckmäßig halte. Meine resultierende Konfiguration sieht also so aus:

:set statusline=%<%F\ %h%m%r%y%=%-14.(%l,%c%V%)\ %P

Und das Ergebnis würde ungefähr so ​​aussehen:

~/.vimrc [vim]                                                26,16           7%

Gutes Lesen:

PS. Ich führe vim 7.3 aus

UlfR
quelle
4

Wenn der Pfad aufgelöste Symlinks enthalten soll, verwenden Sie Folgendes:

set statusline +=%{resolve(expand('%:p'))}\ %*

Fügen Sie hinzu, um die Abkürzung '~' für Ihr Home-Verzeichnis beizubehalten fnamemodify

set statusline +=%{fnamemodify(resolve(expand('%:p')),':~')}\ %*
joelostblom
quelle
Beide haben für mich in VIM 7.4 mit iTerm2 zu SSH in Ubuntu 16.04 LTS funktioniert
James Nicholson