Як я можу постійно відображати шлях до поточного файлу у Vim?


91

Я знаю, CTRLgвідображає поточний файл, над яким ви працюєте. Чи є спосіб змінити мій .vimrcфайл таким чином, щоб ім'я файлу / шлях завжди відображалося?

Відповіді:


129

У рядку стану додайте a, %Fщоб відобразився повний шлях:

:help statusline

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

Зверніть увагу, %Fце буде повний шлях. Щоб отримати шлях відносно робочого каталогу, використовуйте %f.

Якщо ваш рядок стану ще не видно, вам, можливо, спочатку потрібно буде налаштувати його так, щоб він був завжди видимим через laststatus=2

set laststatus=2

Подивіться, :help laststatusщо означають варіанти. Зазвичай рядок стану може бути прихованою або прихованою, якщо не відкрито декілька буферів, але я вважаю надзвичайно корисним постійно мати такі налаштування, як це, і варто відмовитись від одного резервного рядка для цього.


1
Я, звичайно, віддаю перевагу вашій відповіді моїй, але додавання set statusline+=%Fмоєї ~/.vimrc, здається, не робить того, що ви говорите. Хоча документи, безсумнівно, погоджуються з вами ...
Тім Поте,

1
Це ніяк не вплинуло. Вибачаюся, якщо мені не вистачає чогось простого, чи маєте ви якісь думки щодо цього?
zallarak

1
@TimPote Яка версія vim? Працює для мене. Можливо, ваш рядок стану вже відштовхує його або обмежує ширину. Спробуйте просто :set statusline=%Fбез+
Майкл Берковський

@zallarak Перегляньте мій коментар до Тіма. Чи змінюється ваш статус, якщо ви це просто робите :set statusline=%F? Подивіться праворуч або ліворуч, щоб переконатися, чи не ховається назва файлу там, у рядку стану
Майкл Берковський,

2
@TimPote Можливо, set laststatus=2щоб постійно відображати рядок стану. Я забув, що на мені це було.
Michael Berkowski

20

встановити ls = 2

додайте це у vimrc, і ви завжди бачитимете ім’я файлу внизу.


set modeline нічого для мене не зробив, що це потрібно робити? (set ls = 2 все-таки щось зробив). Як мені допомогти / допомогти зрозуміти це самостійно наступного разу? Дякую! :)
Чарлі Паркер,

1
set modelineтрохи небезпечний і не має нічого спільного з цим питанням. Це дозволяє виконувати команди Vim у 5 початкових / кінцевих рядках файлу. Його повинні вмикати лише ті, хто знає, чому і дуже цього хоче. (Ось чому я -1 ця відповідь)
DrBeco

16

Я знайшов 2 способи відобразити шлях до файлу в рядку заголовка термінала gnome під час редагування файлу за допомогою Vim.

Більш простий (і кращий) спосіб: додайте наступний рядок до свого ~/.vimrc:

set title

Що покаже вам угорі:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

Більш складний спосіб покаже вам абсолютний шлях до файлу. Це трохи детальніше задокументовано в цій публікації в блозі, яку я нещодавно написав.


"Заголовок набору" відображатиме ім'я файлу на вкладці терміналу. Цікава особливість.
duleshi

Як би це не було цікаво, не відповідає на поставлене запитання. Також ви стверджуєте, що це краще - але це може бути не так. Наприклад, якщо ваш vim відкритий у терміналі, який знаходиться в повноекранному режимі, заголовок не видно. Таким чином, проти.
учень

8

Єдиний спосіб , яким я знайшов , щоб отримати повний шлях до файлу , я працюю в це: :echo expand('%:p'). Ви можете змінити карту ctrl + g, якщо хочете, але мені особисто не подобається занадто сильно відходити від стандартів. Я відобразив F7 так:

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

4
:help CTRL-G, і подивіться на два абзаци CTRL-Gз підрахунком.
Стефан Маєвський

1
Дякую, @StefanMajewsky. 1 CTRL-Gпоказує повне ім'я файлу. Я шукав цей варіант.
Антон Кисельов

Я люблю тебе Тім, це єдиний спосіб абсолютно показати абсолютний шлях, навіть без ~.
ryancheung

7

Якщо ви використовуєте vim-airline , додайте .vimrc:

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

Це модифікація за замовчуванням авіакомпанії, що змінюється %fна %F.


6

Я завжди користувався :f, але відповідь та посилання від @MichaelBerkowski вражають!

:f показує шлях, кількість рядків, змінений стан, поточну позицію курсора та багато іншого ...

Я не знав про CTRLGце, але, схоже, приблизно те саме.


5

Лінія стану дуже потужна і зручна, я думаю. Зі скриньки буде показано назву файлу, позицію курсора та деякі прапори. Але ви хочете зробити те саме, що і я, і замінити ім'я файлу -part повним шляхом до файлу.

Тож під час редагування мого .vimrcрядка стану могло виглядати приблизно так за замовчуванням:

.vimrc                                                        26,16           7%

Ви можете переглянути налаштування рядка стану за допомогою:

:set statusline?

Але якщо ви не зробили жодних змін і жоден модуль не змінив, він буде порожнім. Але на прикладах у розділі довідки ( :help statusline) ви можете виявити, що за замовчуванням:

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

Тож включіть це до свого .vimrcі змініть %fна %F. Я також додав прапорець filetype ( %y) до мого рядка стану, оскільки вважаю це зручним. Отже, моя отримана конфігурація виглядає так:

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

І результат виглядав би приблизно так:

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

Гарне читання:

PS. Я запускаю vim 7.3


4

Якщо ви хочете, щоб шлях включав розв’язані символічні посилання, використовуйте наступне:

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

Щоб зберегти абревіатуру ~ для домашнього каталогу, включіть fnamemodify

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

Обидва вони працювали для мене у VIM 7.4, використовуючи iTerm2 для SSH в Ubuntu 16.04 LTS
Джеймс Ніколсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.