Отображаемое имя текущего файла в vim?

157

Как вы отображаете имя файла, над которым вы работаете в vim?

Дрю ЛеСюр
источник
1
Если ваш терминал настроен правильно, вы должны получить имя файла в заголовке окна.
Каскабель
2
Ctrl + G может показать информацию о файле
Dhiren Hamal

Ответы:

200

:f( :file) будет делать так же, как <C-G>. :f!даст не усеченную версию, если применимо.

smilingthax
источник
2
Приятно, но можно ли это показать в верхней панели терминала? (или терминатор) или где-то без ввода команды.
eMarine
21
:f!не всегда работает, нажмите 1, затем Ctrl-G для полного пути.
Ив
1
Как насчет полного пути? Когда я запускаю vim с ~/dev/file.pyи выполняю :fв vim, я получаю file.pyвывод вместо ~/dev/file.py.
gxyd
1
@ives, что означает 1 и Ctrl + g по отдельности?
Jobima
2
@jobima: он изменяется, ctrl-gчтобы вернуть путь + файл. :fвернет имя файла без пути, как может ctrl-g. A 1before ctrl-gпокажет путь и имя (хотя и не обязательно расширенное). т.е. он покажет ~/dev/file.pyвместо file.py. 2после чего ctrl-gбудет включать в себя какой буфер: buf 1: "~/dev/file.py".
Ives
71

ctrl+ gсделаю это.

Также мне нравится иметь:

set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"

Который производит:

foo.c [C] [0x23] <code / foo.c 1, 1 2% из 50

Также, как кто-то упомянул (но теперь удалил), %будет заменено текущее имя файла. Например:

:! echo "текущий файл:%"
текущий файл: foo.c
Нажмите клавишу ВВОД или введите команду, чтобы продолжить
Дэвид Волевер
источник
2
Что означают части [C]и [0x23]части?
LangeHaare
@LangeHaare Тип файла и шестнадцатеричное значение символа под курсором соответственно
'statusline'является строкой, но вы не включаете кавычки в набор: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linesтакже нужны экранированные пробелы
D. Ben Knoble
18

установить строку состояния. больше информации с:help statusline

Эти команды могут находиться в вашем файле .vimrc, или вы можете вводить их как команды в vim, введя «:» в командном режиме.

Сначала установите последний статус 2, используя следующее:

set laststatus=2

Затем установите строку состояния в% f для короткого имени файла.

set statusline=%f

Для полного пути к файлу используйте% F.

Брайан Клементс
источник
E518: Неизвестный параметр:% f
Исиус
Я обновил ответ, Исиус. Надеюсь, это делает это более понятным.
Брайан Клементс
5

:set title отобразить имя файла в строке заголовка окна.

Райан Ле
источник
5

Почему так сложно? Control-G сделает работу

Sean
источник
4

Чтобы показать полный путь к любому файлу, включая разрешенные символические ссылки, используйте следующее.

:echo resolve(expand('%:p'))

Это может быть добавлено к вашей строке состояния, добавив строку ниже к вашему ~./vimrc

set statusline +=%{resolve(expand('%:p'))}\ %*
joelostblom
источник
2

Одно из приведенных выше предложений должно быть изменено на

set statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ lines

чтобы это заработало. Также

set laststatus=2

использовался.

кукуйоидные
источник
Добро пожаловать в стек переполнения ! Вероятно, это должно быть предлагаемое изменение или комментарий к соответствующему ответу (ответам) - у вас еще недостаточно репутации, чтобы комментировать или редактировать, но вы скоро это сделаете, если зададите хорошие вопросы и напишите хорошие ответы! А пока я предложу соответствующие исправления авторам ответов. Хороший улов!
Д. Бен Кнобл
1

Я использую удивительный vimrcот amix: https://github.com/amix/vimrc

Он использует lightline.vimвставку и отображает имя файла в строке состояния.

Самое замечательное в использовании этого amix/vimrc- то, что этот плагин заботится о большей части настроек, он очень стабилен и был протестирован тысячами людей, что вы можете проверить, посмотрев на количество звездочек github ... и редких проблем.

Его также обновляется довольно часто.

PS: не автор ни одного из плагинов .. просто фанат :)

alpha_989
источник
1

Мне также нужно было поместить это в мой файл .vimrc:

set noruler
set laststatus=2

Затем я мог бы поместить что-то вроде set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"в мой файл .vimrc и после перезапуска моего терминала строка состояния отображается правильно.

Алекс Фенвуд Хьюз
источник
'statusline'является строкой, но вы не включаете кавычки в набор: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linesтакже нужны экранированные пробелы
Д. Бен Нобл