Wyświetlać nazwę bieżącego pliku w vimie?


157

Jak wyświetlić nazwę pliku, nad którym pracujesz w vimie?


1
Jeśli twój terminal jest poprawnie skonfigurowany, powinieneś otrzymać nazwę pliku w tytule okna.
Cascabel



2
ctrl + g może pokazać informacje o pliku
Dhiren Hamal

Odpowiedzi:


200

:f( :file) zrobi to samo, co <C-G>. :f!w stosownych przypadkach poda nieopracowaną wersję.


2
Fajnie, ale czy da się to pokazać na górnym pasku terminala? (lub terminator) lub gdzieś bez wpisywania polecenia.
eMarine

21
:f!nie zawsze działa, naciśnij 1, a następnie Ctrl-G, aby uzyskać pełną ścieżkę.
żyje

1
A co z pełną ścieżką? Kiedy zaczynam vim od ~/dev/file.pyi wykonuję :fw nim, otrzymuję file.pyjako wyjście zamiast ~/dev/file.py.
gxyd

1
@ives co oznacza 1 i Ctrl + g oddzielnie?
jobima

2
@jobima: modyfikuje, ctrl-gaby zwrócić ścieżkę + plik. :fzwróci nazwę pliku bez ścieżki, tak jak może ctrl-g. 1Zanim ctrl-gpokaże ścieżkę i nazwę (choć niekoniecznie rozszerzony). tzn. ~/dev/file.pyzamiast file.py. 2następnie ctrl-gobejmą który bufor: buf 1: "~/dev/file.py".
żyje

71

ctrl+ gzrobi to.

Lubię też:

set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"

Który produkuje:

foo.c [C] [0x23] <kod / foo.c 1, 1 2% z 50

Ponadto, jak ktoś wspomniał (ale teraz usunięty), %zostanie zastąpiony aktualną nazwą pliku. Na przykład:

:! echo "bieżący plik:%"
aktualny plik: foo.c
Naciśnij klawisz ENTER lub wpisz polecenie, aby kontynuować

2
Co oznaczają [C]i [0x23]części?
LangeHaare

@LangeHaare Typ pliku i odpowiednio wartość szesnastkowa znaku pod kursorem

'statusline'jest ciągiem znaków, ale nie zawiera cudzysłowów w zestawie: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ lineswymaga również spacji ze
znakami

18

ustawić wiersz statusu. więcej informacji z:help statusline

Te polecenia mogą znajdować się w twoim pliku .vimrc lub możesz je wprowadzać jako polecenia w vimie, wpisując ':' w trybie poleceń.

Najpierw ustaw ostatni status na 2, używając następujących poleceń:

set laststatus=2

Następnie ustaw wiersz statusu na% f dla krótkiej nazwy pliku.

set statusline=%f

Aby uzyskać pełną ścieżkę do pliku, użyj% F.


E518: Nieznana opcja:% f
Isius

Zaktualizowałem odpowiedź, Isius. Mam nadzieję, że to wyjaśnia sprawę.
Brian Clements


5

Dlaczego tak skomplikowane? Control-G wykona zadanie


4

Aby wyświetlić pełną ścieżkę do dowolnego pliku, w tym rozwiązane dowiązania symboliczne, użyj następującego.

:echo resolve(expand('%:p'))

Można to dodać do paska stanu, dodając poniższy wiersz do swojego ~./vimrc

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

2

Jedna z powyższych sugestii musiała zostać zmieniona na

set statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ lines

żeby to działało. Również

set laststatus=2

użyto.


Witamy w Stack Overflow ! Prawdopodobnie powinna to być sugerowana zmiana lub komentarz do odpowiedniej odpowiedzi (odpowiedzi) - nie masz jeszcze wystarczającej reputacji, aby komentować lub edytować, ale wkrótce będziesz, jeśli zadasz dobre pytania i napiszesz dobre odpowiedzi! W międzyczasie zasugeruję autorom odpowiedzi odpowiednie poprawki. Dobry chwyt!
D. Ben Knoble

1

Używam niesamowitego vimrcz amix: https://github.com/amix/vimrc

Używa lightline.vimwtyczki i wyświetla nazwę pliku na pasku stanu.

Wspaniałą rzeczą w korzystaniu z amix/vimrcwtyczki jest to, że ta wtyczka zajmuje się większością dostosowań, jest bardzo stabilna i została przetestowana przez tysiące ludzi, co możesz sprawdzić, patrząc na liczbę gwiazdek github ... i rzadkie problemy.

Jest również dość często aktualizowany.

PS: nie jestem autorem żadnej z wtyczek ... tylko fanem :)


1

Musiałem również umieścić to w moim pliku .vimrc:

set noruler
set laststatus=2

Następnie mogłem umieścić coś takiego set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"w moim pliku .vimrc i po ponownym uruchomieniu terminala linia statusu wyświetlała się poprawnie.


'statusline'jest ciągiem znaków, ale nie zawierają cytaty W zestawie set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linesrównież wymaga uciekły przestrzenie
D. Ben Knoble
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.