Как я могу постоянно отображать путь к текущему файлу в 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, и вы всегда будете видеть имя файла внизу.

SD.
источник
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но похоже, что это примерно то же самое.

Jahroy
источник
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

UlfR
источник
4

Если вы хотите, чтобы путь включал разрешенные символические ссылки, используйте следующее:

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

Чтобы сохранить аббревиатуру '~' для вашего домашнего каталога, включите fnamemodify

set statusline +=%{fnamemodify(resolve(expand('%:p')),':~')}\ %*
Joelostblom
источник
Оба они работали для меня в VIM 7.4 с использованием iTerm2 для SSH в Ubuntu 16.04 LTS
Джеймс Николсон