Как я могу постоянно отображать путь к текущему файлу в Vim?


91

Я знаю, что CTRLgотображает текущий файл, над которым вы работаете. Есть ли способ изменить мой .vimrcтак, чтобы имя файла / путь всегда отображались?

Ответы:


129

В строке состояния добавьте, %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
Это не подействовало. Прошу прощения, если мне не хватает чего-то простого, есть ли у вас какие-нибудь мысли по этому поводу?
— залларак

1
@TimPote Какая версия vim? Работает для меня. Возможно, ваша статусная строка уже отталкивает ее или ограничивает ширину. Попробуй только :set statusline=%Fбез+
— Майкл Берковски

@zallarak См. мой комментарий Тиму. Меняется ли ваша статусная линия, если вы просто это делаете :set statusline=%F? Посмотрите вправо или влево, чтобы увидеть, не скрывается ли имя файла в строке состояния
— Майкл Берковски

2
@TimPote Может быть, set laststatus=2чтобы статусная строка всегда была видна. Я забыл, что это было на мне.
— Майкл Берковски

20

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

добавьте это в vimrc, и вы всегда будете видеть имя файла внизу.


set modeline ничего не сделал для меня, что он должен делать? (set ls = 2 все же что-то сделал). Как мне помочь разобраться в этом самостоятельно в следующий раз? Благодарность! :)
— Чарли Паркер

1
set modelineнемного опасно и не имеет никакого отношения к вопросу. Он позволяет выполнять команды Vim в 5 начальных / конечных строках файла. Его должны включать только те, кто знает зачем и очень этого хочет. (Вот почему я -1 этот ответ)
— DrBeco

16

Я нашел 2 способа отображать путь к файлу в строке заголовка gnome-terminal при редактировании файла с помощью Vim.

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

set title

Что покажет вам вверху:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

Более сложный способ покажет вам абсолютный путь к файлу. Это задокументировано более подробно в этой записи блога, которую я недавно написал.


«Установить заголовок» отобразит имя файла на вкладке терминала. Интересная особенность.
— duleshi

Как бы интересно это ни было, не отвечает на заданный вопрос. Вы также утверждаете, что это лучше, но может и не быть. Например, если ваш vim открыт в терминале, который находится в полноэкранном режиме, заголовок не отображается. Таким образом, голос против.
— apprenticeDev

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-airlines , введите .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. Я также добавил в строку состояния флаг типа %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.