Jak mogę na stałe wyświetlić ścieżkę do bieżącego pliku w Vimie?


91

Wiem, że CTRLgwyświetla bieżący plik, nad którym pracujesz. Czy istnieje sposób na zmodyfikowanie mojego, .vimrctak aby nazwa pliku / ścieżka była zawsze wyświetlana?

Odpowiedzi:


129

W linii statusu dodaj a, %Faby wyświetlić pełną ścieżkę:

:help statusline

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

Uwaga, %Fbędzie pełna ścieżka. Aby uzyskać ścieżkę względem katalogu roboczego, użyj %f.

Jeśli twoja linia statusu nie jest jeszcze widoczna, możesz najpierw skonfigurować ją tak, aby była zawsze widoczna, poprzez laststatus=2

set laststatus=2

Zobacz, :help laststatusco oznaczają opcje. Zwykle linia stanu może być ukryta lub ukryta, chyba że otwartych jest wiele buforów, ale uważam, że niezwykle przydatne jest ciągłe korzystanie z takich dostosowań, warto zrezygnować z jednej linii ekranu na to.


1
Z pewnością wolę twoją odpowiedź od mojej, ale dodawanie set statusline+=%Fdo moich ~/.vimrcnie wydaje się robić tego, co mówisz. Chociaż wydaje się, że
doktorzy

1
To nie przyniosło skutku. Przepraszam, jeśli brakuje mi czegoś prostego, czy masz jakieś przemyślenia na ten temat?
zallarak

1
@TimPote Jaka wersja vima? Pracuje dla mnie. Może twoja linia statusu już ją spycha lub ogranicza szerokość. Spróbuj tylko :set statusline=%Fbez+
Michael Berkowski

@zallarak Zobacz mój komentarz do Tima. Czy twój status zmienia się, jeśli po prostu to zrobisz :set statusline=%F? Spójrz w prawo lub w lewo, aby zobaczyć, czy nazwa pliku nie jest ukryta w linii statusu
Michael Berkowski

2
@TimPote Być może, set laststatus=2aby linia statusu była widoczna przez cały czas. Zapomniałem, że mam to na sobie.
Michael Berkowski

20

ustaw ls = 2

dodaj to w vimrc, a nazwę pliku zobaczysz zawsze na dole.


zestaw modeline nic dla mnie nie zrobił, co ma zrobić? (set ls = 2 jednak coś zrobił). Jak mogę pomóc / pomóc rozwiązać to samodzielnie następnym razem? Dzięki! :)
Charlie Parker,

1
set modelinejest trochę niebezpieczna i nie ma nic wspólnego z pytaniem. Pozwala na wykonywanie poleceń Vima w 5 początkowych / końcowych wierszach pliku. Powinien być włączany tylko przez tych, którzy wiedzą dlaczego i naprawdę tego chcą. (Dlatego właśnie ja -1 ta odpowiedź)
DrBeco

16

Znalazłem 2 sposoby, aby wyświetlić ścieżkę do pliku na pasku tytułu gnome-terminalu podczas edycji pliku w Vimie.

Prostszy (i lepszy) sposób: dodaj następujący wiersz do swojego ~/.vimrc:

set title

Który pokaże Ci na górze:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

Bardziej skomplikowany sposób pokaże bezwzględną ścieżkę do pliku. Jest to opisane bardziej szczegółowo w tym wpisie na blogu, który niedawno napisałem.


„Tytuł zestawu” pokaże nazwę pliku na karcie terminala. Ciekawa funkcja.
duleshi,

Ciekawe, ale nie odpowiada na zadane pytanie. Twierdzisz również, że jest lepiej - ale może nie być. Na przykład, jeśli twój vim jest otwarty w terminalu, który jest w trybie pełnego ekranu, tytuł nie jest widoczny. Dlatego głosuj przeciw.
apprenticeDev

8

Jedynym sposobem, znalazłem, aby uzyskać pełną ścieżkę do pliku, ja pracuję w to: :echo expand('%:p'). Jeśli chcesz, możesz ponownie zmapować ctrl + g, ale ja osobiście nie lubię zbytnio odchodzić od standardów. Zmapowałem F7 w następujący sposób:

map  <F7> <Esc>:echo expand('%:p')<Return>

4
:help CTRL-Gi spójrz na dwa akapity CTRL-Gz licznikiem.
Stefan Majewsky,

1
Dzięki, @StefanMajewsky. 1 CTRL-Gpokazuje pełną nazwę pliku. Szukałem tej opcji.
Anton Kiselev

Kocham cię Tim, to jedyny sposób, aby absolutnie pokazać absolutną ścieżkę, nawet bez ~.
ryancheung

7

Jeśli używasz vim-airline , wpisz .vimrc:

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

Jest to modyfikacja domyślnego ustawienia linii lotniczej, zmieniająca się %fo %F.


6

Zawsze używałem :f, ale odpowiedź i linki od @MichaelBerkowski są niesamowite!

:f pokazuje ścieżkę, liczbę linii, zmodyfikowany stan, bieżącą pozycję kursora i nie tylko ...

Nie wiedziałem o tym, CTRLGale wydaje się, że jest mniej więcej to samo.


5

Myślę, że linia statusu jest bardzo potężna i przydatna. Strait po wyjęciu z pudełka wyświetli nazwę pliku, pozycję kursora i niektóre flagi. Ale chcesz zrobić to samo co ja i zastąpić nazwę pliku -part pełną ścieżką do pliku.

Więc podczas edytowania mojej linii .vimrcstatusu może domyślnie wyglądać mniej więcej tak:

.vimrc                                                        26,16           7%

Możesz zobaczyć swoje ustawienie linii statusu za pomocą:

:set statusline?

Ale jeśli nie wprowadziłeś żadnych zmian i żaden moduł go nie zmienił, byłby pusty. Ale na podstawie przykładów w sekcji pomocy ( :help statusline) możesz stwierdzić, że wartość domyślna to:

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

Więc uwzględnij to w swoim .vimrci zmień %fna %F. Dodałem również flagę filetype ( %y) do mojej linii statusu, ponieważ uważam to za wygodne. Tak więc moja wynikowa konfiguracja wygląda następująco:

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

Wynik wyglądałby mniej więcej tak:

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

Dobre czytanie:

PS. Uruchamiam vim 7.3


4

Jeśli chcesz, aby ścieżka zawierała rozwiązane łącza symboliczne, użyj następujących poleceń:

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

Aby zachować skrót „~” dla katalogu domowego, dołącz fnamemodify

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

Oba działały dla mnie w VIM 7.4 przy użyciu iTerm2 do SSH w Ubuntu 16.04 LTS
James Nicholson
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.