Wie finde ich heraus, welche Datei aktuell in vim geöffnet ist?


61

Das mag trivial klingen, aber bei mehr als einer Gelegenheit habe ich vergessen, welche Datei vimich geöffnet habe (z. B. wenn ich verschiedene Protokolldateien und dergleichen durchsuche), und ich wusste nur, wie ich das herausfinden konnte, indem ich sie schloss Durchsuchen Sie die Datei und suchen Sie im Befehlsverlauf nach dem neuesten Befehl.

Gibt es in vim einen Befehl, der angibt, welche Datei Sie gerade geöffnet haben, ohne das Programm oder die Datei zu beenden, die Sie geöffnet haben (z :<which_file_cmd>. B. ?)


5
Wenn Sie nicht vimmit so vielen Argumenten angerufen haben , verwenden Sie :args.
41754

Antworten:


76

Zusätzlich zur Antwort von uprego können Sie Ctrl+ G(im normalen Modus) drücken , um den Namen des aktuellen Puffers sowie die Gesamtzahl der darin enthaltenen Zeilen und Ihre aktuelle Position darin abzurufen .

Aktualisieren

Wie pro rxdazn Kommentar , können Sie drücken , 1bevor Ctrl+ Gden vollständigen Dateipfad zu erhalten. Wenn Sie drücken 2, erhalten Sie den vollständigen Dateipfad und die aktuell geöffnete Puffernummer (nützlich, wenn Sie mehrere Dateien mit geöffnet haben vim).


Wie bei vielen vim-Befehlen gilt dies auch für den lessBefehl, den ich beim Anzeigen von Dateien verwende, im Gegensatz zum Bearbeiten.
Jmathew

18
Wenn

23

Wenn vimich drin bin, benutze ich immer den :lsBefehl.

Beispiel

:ls
  1 %a   "blah.txt"                         line 1

Wo blah.txtist der Name der Datei?


20
:f

gibt den Namen der aktuell geöffneten Datei an.


1
brillant und sehr minimalistisch
amphibient

7

Wenn vimmit vielen Argumenten nicht gerufen wird , :argsist das hilfreich.


4
Das andere Problem dabei ist, dass die Datei, die nach dem Start von vim geöffnet wurde, nicht aufgelistet wird.
Patrick

4

Wenn Sie eine vim-Standardkonfigurationsdatei haben können, können Sie eine hinzufügen statusline, damit immer Dateidetails verfügbar sind. Ich verstehe, dass dies keine große Hilfe sein wird, wenn Sie ständig auf verschiedenen Servern remoten. Hier ist mein etwas komplexer Text aus meiner .vimrc.

" %F(Full file path)
" %m(Shows + if modified - if not modifiable)
" %r(Shows RO if readonly)
" %<(Truncate here if necessary)
" \ (Separator)
" %=(Right align)
" %l(Line number)
" %v(Column number)
" %L(Total number of lines)
" %p(How far in file we are percentage wise)
" %%(Percent sign)
set statusline=%F%m%r%<\ %=%l,%v\ [%L]\ %p%%

" Change the highlighting so it stands out
hi statusline ctermbg=white ctermfg=black

" Make sure it always shows
set laststatus=2

Und so sieht es in MacVim aus (funktioniert aber auch in Terminals). Bildbeschreibung hier eingeben

Wie immer können Sie :help statuslineweitere Optionen und Details anfordern. Und an der Kasse zu Learning Vim the Hard Way, Kapitel 17, finden Sie eine gute Erklärung der Statuszeile.


Ich benutze immer auch die Statuszeile. +1
Rob

1

Es gibt auch :echo @%, die Ihnen den Namen der Datei relativ zum aktuellen Verzeichnis gibt.


1

Es gibt unzählige Möglichkeiten, um diese Art von Informationen zu erhalten. Wenn Sie jedoch eine Information wünschen, bei der Sie nur eine Taste drücken müssen und der Dateiname angezeigt wird, fügen Sie Folgendes in Ihr Feld ein ~/.vimrc:

map <F4> <ESC>:file<CR>

Das sagt,

bind the `F4' key to the following sequence: Escape-key, :file, Carriage-Return (enter-key)

Und der fileBefehl gibt, wie wahrscheinlich offensichtlich ist, den Namen der aktuellen Datei zusammen mit anderen Informationen zurück.

Sie können auch eine Statuszeile einrichten, sodass Sie nicht einmal etwas anderes tun müssen, als nachzuschauen.

Um die Statuszeile beizubehalten, fügen Sie immer Folgendes in Ihre ein ~/.vimrc:

set laststatus=2

Dies weist ViM an, immer eine Statuszeile anzuzeigen. Andere Optionen sind 0für immer und 1nur dann verfügbar, wenn zwei oder mehr Fenster in ViM geöffnet sind.


1

Normalerweise tippe ich nur :e und dies zeigt mir den vollständigen Dateipfad und die Anzahl der Zeilen und Zeichen.

Vorsichtsmaßnahme : Es öffnet die Datei im Wesentlichen neu von der Festplatte, daher ist es am nützlichsten, wenn die Datei bereits gespeichert ist.

:help :e sagt:

                          *:e* *:edit*
Edit the current file.  This is useful to re-edit the
current file, when it has been changed outside of Vim.
This fails when changes have been made to the current
buffer and 'autowriteall' isn't set or the file can't
be written.

1

Ich meine vimrc ich habe diese Zuordnung

nnoremap <leader>pfn :echo expand('%:p')<CR>

Wenn ich also ,pfn"print file name" eingebe, wird der gesamte Dateipfad angezeigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.