Jak mogę zobaczyć pełną ścieżkę bieżącego pliku?


123

Czy podczas edytowania pliku w Vimie jest polecenie, aby zobaczyć ścieżkę do bieżącego pliku? Czasami jest to bardzo przydatne, jeśli w projekcie jest wiele plików o tej samej nazwie.

Odpowiedzi:


142

Możesz nacisnąć {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.

Naciśnięcie, 1a następnie Ctrl+ Gpokazuje pełną ścieżkę bieżącego pliku. Jeśli {count}jest większy niż 1, nazwa bufora również będzie wyświetlana.

(Naciśnięcie tylko Ctrl+ Gpokazuje ścieżkę względem bieżącego katalogu roboczego Vima, jak wskazał Jasper w komentarzach.)

Możesz użyć następującego polecenia w .vimrccelu dodania pełnej ścieżki do linii statusu, aby była zawsze widoczna:

set statusline+=%F

4
Czy nie jest Ctrl+Gbardziej jak „ścieżka względna do cwd vima”?
Jasper

@Jasper Dobry połów! Zaktualizowałem odpowiedź.
thameera

4
Wygląda na C-gto, że jest domyślna 0C-gi 2C-gpokazuje dodatkowo numer indeksu bufora (od 1).

Tak się cieszę, że mogę być setną, aby głosować za odpowiedzią! Dzięki za to 1C-g!
sklepienie

52

Rejestr %zawiera nazwę bieżącego pliku.

Aby wyświetlić wyświetlane informacje, można wprowadzić następujące polecenia:

: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')

Jeśli chcesz tylko wyświetlić nazwę bieżącego pliku, wpisz :f/ :lslub naciśnij Ctrl- g(dla pełnej ścieżki naciśnij 1następnie Ctrl- g).

W trybie wstawiania wpisz Ctrl- rnastępnie, %aby wstawić nazwę bieżącego pliku.

Następujące polecenia wstawiają do bufora wiersze składające się z pełnej ścieżki plików bieżących i alternatywnych:

:put =expand('%:p')
:put =expand('#:p')

Źródło: Uzyskaj nazwę bieżącego pliku z vim wikia

Związane z:


2
Warto zauważyć, że możesz również używać tych =expand...wyrażeń po przejściu Ctrl-Rw tryb wstawiania.
dash-tom-bang

22

Możesz użyć, :!ls %:paby uzyskać pełną ścieżkę do bieżącego pliku.

W zależności od kontekstu ex %będzie oznaczać zawartość pliku lub nazwę pliku. Podczas tworzenia powłoki reprezentuje ścieżkę do pliku względem bieżącego katalogu. Polecenie „ %:p” doda modyfikator pełnej nazwy pliku ścieżki do %.

Istnieje kilka innych interesujących modyfikatorów nazw plików, takich jak:

  • :~: Uzyskaj ścieżkę do pliku w stosunku do katalogu domowego (ten z jakiegoś powodu nie działał dla mnie)
  • :.: Uzyskaj ścieżkę do pliku względem bieżącego katalogu ( %domyślnie)
  • :r: Nazwa pliku root. Nazwa pliku bez rozszerzenia.
  • :e: Rozszerzenie pliku.
  • :h: Podziel na /i zwróć lewą połowę (tj. Jeśli edytuję plik w ścieżce /tmp/test.txti uruchom %:p:hzwróci/tmp
  • :t: Podziel na /i zwróć prawą połowę (tzn. Jeśli edytuję plik w ścieżce /tmp/test.txti polecenie %:p:twrócitext.txt

Myślę, że miałeś na myśli%: p: t zwróci text.txt
John O'M.

@ JohnO'M. tak, właśnie dzięki: D. Naprawiony.
CharlesL

7

Można zobaczyć bieżący katalog roboczy za pomocą :pwd. Oczywiście jest to tylko katalog, a nie nazwa pliku. Aby uzyskać katalog roboczy i nazwę pliku, możemy użyć specjalnego rejestru %, który zawiera informacje o bieżącym pliku.

Jeśli użyjesz :echo @%, otrzymasz katalog i nazwę pliku bieżącego pliku.
Jeśli używasz :echo expand('%:p'), otrzymasz pełną ścieżkę i nazwę pliku bieżącego pliku. Jest to bardzo podobne do odpowiedzi CharlesL .

Pamiętam ten jeden, chociaż, ponieważ jeśli używasz pomocy Vim jest :h expand, to mówi, że %i %:pi ich krewni.



3

Aby wyświetlić pełną ścieżkę dla wszystkich plików, w tym również przetłumaczonych dowiązań symbolicznych, użyj następujących poleceń.

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

3

Istnieją jednak lepsze odpowiedzi, ale jeśli (z jakiegoś powodu) chcesz użyć powłoki, aby uzyskać pełną ścieżkę do pliku (jest to bardziej przydatne, jeśli zamierzasz wykonać inną operację na pliku za pomocą powłoki), na systemie uniksowym możesz uruchomić:

:!realpath %

lub:

:'<,'>!realpath %

aby wstawić ścieżkę do dokumentu nad bieżącym wyborem.

Rejestr %zawsze zawiera nazwę pliku. Przykładem może być sytuacja, gdy edytujesz plik konfiguracyjny, ale nie masz uprawnień do zapisu (i nie chcesz uruchamiać Vima jako root), możesz edytować plik, a następnie uruchomić:

:w ! sudo tee %

aby zapisać plik (trochę nie na temat, ale jest to dobry przykład tego, co można zrobić z %rejestrem).


realpathnie jest POSIX, więc może być prostsze:!echo "$PWD/%"
muru

Zgoda; dobra decyzja.
Sam Whited

2

Musisz ustawić linię statusu, aby była widoczna, a także ustawić ścieżkę. Zrobiłem to na stałe, dodając dwa wiersze poniżej do mojego ~ / .vimrc

set laststatus=2
set statusline+=%F

Jeśli chcesz to uruchomić raz. Następnie, gdy VIing typ dokumentu

:set laststatus=2       <ENTER>
:set statusline+=%F     <ENTER>

1
To jest ta sama odpowiedź, na którą Thameera udzielił tego samego pytania.
statox


1

Możesz wyświetlić pełną ścieżkę pliku, który edytujesz na pasku tytułu, co jest moim zdaniem wygodnym sposobem na wyświetlenie ścieżki pliku.

Aby to zrobić, musisz ustawić titleopcję i titlestring. Obecnie używam następujących ustawień:

set title
set titlestring=%{hostname()}\ \ %F\ \ %{strftime('%Y-%m-%d\ %H:%M',getftime(expand('%')))}

Wyświetli nazwę hosta Vima, następnie pełną ścieżkę do pliku, a następnie czas ostatniej modyfikacji pliku. Demo przedstawia poniższy rysunek

wprowadź opis zdjęcia tutaj

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.