Jak dowiedzieć się, który plik jest obecnie otwarty w vimie?

61

Może to zabrzmieć trywialnie, ale nieraz zapomniałem, który plik vimmam otwarty (np. Przeglądając różne pliki dziennika itp.), A jedynym sposobem, w jaki mogłem się dowiedzieć, było zamknięcie plik i poszukaj najnowszej komendy w historii poleceń.

Czy w vimie znajduje się polecenie informujące, który plik właśnie otworzyłeś bez wychodzenia z programu lub plik, który otworzyłeś (np. :<which_file_cmd>?)

amfibia
źródło
5
Jeśli nie zadzwoniłeś vimz tyloma argumentami, użyj :args.
41754

Odpowiedzi:

76

Oprócz odpowiedzi uprego , możesz nacisnąć Ctrl+ G(w trybie normalnym), aby uzyskać nazwę bieżącego bufora, a także całkowitą liczbę wierszy i aktualną pozycję w nim.

Aktualizacja

Zgodnie z komentarzem rxdazn , możesz nacisnąć 1przed Ctrl+, Gaby uzyskać pełną ścieżkę do pliku. Jeśli naciśniesz 2, otrzymasz pełną ścieżkę pliku i numer bufora, który aktualnie masz otwarty (przydatne, gdy otwierasz wiele plików za pomocą vim).

Joseph R.
źródło
Podobnie jak wiele komend vim, dotyczy to również lesskomendy, której używam podczas przeglądania plików, a nie edycji.
jmathew 12.12.13
18
także naciśnięcie 1 przed Ctrl + G daje pełną ścieżkę do pliku
rxdazn
23

Kiedy vimjestem w środku, zawsze używam :lspolecenia.

Przykład

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

Gdzie blah.txtjest nazwa pliku.

slm
źródło
20
:f

podaje nazwę aktualnie otwartego pliku.

Mt.
źródło
1
genialny i bardzo minimalistyczny
amfibia
7

Gdy vimnie jest wywoływany z wieloma argumentami, :argsjest pomocny.

41754
źródło
4
Innym problemem jest to, że jeśli plik został otwarty po uruchomieniu vima, nie będzie na liście.
Patrick,
4

Jeśli możesz mieć domyślny plik konfiguracyjny vim, możesz dodać, statuslineaby zawsze mieć dostępne szczegóły pliku. Rozumiem, że jeśli nieustannie przenosisz się na różne serwery, nie będzie to zbyt pomocne. Oto mój nieco skomplikowany jeden pobrany z mojego .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

I tak to wygląda w MacVimie (ale działa również w terminalach). wprowadź opis zdjęcia tutaj

Jak zawsze możesz zrobić, :help statuslineaby uzyskać więcej opcji i szczegółów. I sprawdź Nauka Vim the Hard Way ch 17, aby uzyskać dobre wyjaśnienie linii statusu.

jmathew
źródło
Zawsze używam również linii statusu. +1
Rob
1

Istnieje także :echo @%nazwa pliku w stosunku do bieżącego katalogu.

kojiro
źródło
1

Istnieją niezliczone sposoby na uzyskanie tego rodzaju informacji, ale jeśli chcesz czegoś, wystarczy tylko nacisnąć klawisz, a nazwa pliku zostanie wyświetlona, ​​a następnie wstaw następujące informacje do ~/.vimrc:

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

To mówi

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

A filepolecenie, jak się wydaje, zwraca nazwę bieżącego pliku wraz z innymi informacjami.

Możesz także ustawić linię statusu, abyś nie musiał nic robić, tylko patrzeć.

Aby zachować linię statusu, zawsze wstaw do ~/.vimrc:

set laststatus=2

To mówi ViMowi, aby zawsze wyświetlał linię statusu, inne opcje są 0na zawsze i 1tylko wtedy, gdy masz dwa lub więcej okien otwartych w ViM.

Alexej Magura
źródło
1

Zwykle po prostu piszę, :e co pokazuje mi pełną ścieżkę pliku oraz liczbę wierszy i znaków.

Zastrzeżenie : zasadniczo ponownie otwiera plik z dysku, więc jest to najbardziej przydatne, gdy plik jest już zapisany.

:help :e mówi:

                          *: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.
David d C e Freitas
źródło
1

I my vimrc Mam to mapowanie

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

Więc jeśli piszę ,pfnlub „drukuj nazwę pliku”, wyświetla całą ścieżkę pliku.

Philip
źródło