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?

zallarak
źródło

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.

Michaela Berkowskiego
źródło
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.

SD.
źródło
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.

sampson-chen
źródło
„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>
Tim Pote
źródło
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.

phcerdan
źródło
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.

jahroy
źródło
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

UlfR
źródło
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')),':~')}\ %*
joelostblom
źródło
Oba działały dla mnie w VIM 7.4 przy użyciu iTerm2 do SSH w Ubuntu 16.04 LTS
James Nicholson