Как узнать, какой файл в данный момент открыт в vim?

61

Это может звучать тривиально, но я неоднократно обнаруживал, что забыл, какой файл у vimменя открыт (например, когда просматриваю разные файлы журналов и т. Д.), И единственный способ узнать, как это сделать - закрыть файл и посмотрите в истории команд для самой последней команды.

Есть ли в vim команда, сообщающая вам, какой файл вы открыли в данный момент, не выходя из программы или файл, который вы открыли (например :<which_file_cmd>,?)

amphibient
источник
5
Если вы не коллировали vimс таким количеством аргументов, используйте :args.
41754 12.12.13

Ответы:

76

В дополнение к ответу uprego , вы можете нажать Ctrl+ G(в обычном режиме), чтобы получить имя текущего буфера, а также общее количество строк в нем и вашу текущую позицию в нем.

Обновить

Согласно комментарию rxdazn в , вы можете нажать , 1прежде чем Ctrl+ , Gчтобы получить полный путь к файлу. Если вы нажмете 2, вы получите полный путь к файлу и номер буфера, который у вас открыт в данный момент (полезно, когда вы открыли несколько файлов с помощью vim).

Джозеф Р.
источник
Как и многие другие команды vim, это также относится и к lessкоманде, которую я использую при просмотре файлов, а не к редактированию.
Jmathew
18
Кроме того, нажатие 1 до Ctrl + G дает полный путь к файлу
rxdazn
23

Когда vimя всегда использую :lsкоманду.

пример

:ls
  1 %a   "blah.txt"                         line 1

Где blah.txtимя файла.

SLM
источник
20
:f

дает имя файла, открытого в данный момент.

холодный морской тропический воздух
источник
1
блестящий и очень минималистичный
амфибия
7

Когда vimне вызывается со многими аргументами, :argsполезно.

41754
источник
4
Другая проблема в том, что если файл был открыт после запуска vim, он не будет указан в списке.
Патрик
4

Если у вас может быть файл конфигурации vim по умолчанию, вы можете добавить a, statuslineчтобы всегда иметь подробную информацию о файле. Я понимаю, что если вы постоянно используете удаленное взаимодействие на разных серверах, это не сильно поможет. Вот мой немного сложный, извлеченный из моего .vimrc.

" %F(Full file path)
" %m(Shows + if modified - if not modifiable)
" %r(Shows RO if readonly)
" %<(Truncate here if necessary)
" \ (Separator)
" %=(Right align)
" %l(Line number)
" %v(Column number)
" %L(Total number of lines)
" %p(How far in file we are percentage wise)
" %%(Percent sign)
set statusline=%F%m%r%<\ %=%l,%v\ [%L]\ %p%%

" Change the highlighting so it stands out
hi statusline ctermbg=white ctermfg=black

" Make sure it always shows
set laststatus=2

И это выглядит в MacVim (но работает и в терминалах). введите описание изображения здесь

Как всегда вы можете сделать, :help statuslineчтобы получить больше возможностей и деталей. И ознакомьтесь с разделом « Изучение Vim the Hard Way», глава 17, для хорошего объяснения статусной линии.

jmathew
источник
Я также всегда использую статусную строку. +1
Роб
1

Там также :echo @%, который дает вам имя файла относительно текущего каталога.

Кодзиро
источник
1

Существует бесчисленное множество способов получить такую ​​информацию, но если вы хотите что-то, чтобы вам нужно было всего лишь нажать клавишу и отобразится имя файла, вставьте в свой файл следующее ~/.vimrc:

map <F4> <ESC>:file<CR>

Это говорит,

bind the `F4' key to the following sequence: Escape-key, :file, Carriage-Return (enter-key)

И fileкоманда, как это, вероятно, очевидно, возвращает имя текущего файла вместе с другой информацией.

Вы также можете настроить строку состояния, чтобы вам даже не пришлось ничего делать, кроме как смотреть.

Чтобы сохранить строку состояния, всегда вставляйте в свой файл следующее ~/.vimrc:

set laststatus=2

Это говорит ViM всегда отображать строку состояния, другие опции - 0никогда и 1только тогда, когда в ViM открыто два или более окон.

Алексей Магура
источник
1

Я обычно просто печатаю, :e и это показывает мне полный путь к файлу, а также количество строк и символов.

Предостережение : он по существу открывает файл с диска, поэтому он наиболее полезен, когда файл уже сохранен.

:help :e говорит:

                          *:e* *:edit*
Edit the current file.  This is useful to re-edit the
current file, when it has been changed outside of Vim.
This fails when changes have been made to the current
buffer and 'autowriteall' isn't set or the file can't
be written.
Дэвид д С е Фрейтас
источник
1

Я мой VIMRC У меня есть это отображение

nnoremap <leader>pfn :echo expand('%:p')<CR>

Поэтому, если я ,pfnпечатаю, или «печатаю имя файла», он отображает весь путь к файлу.

Филипп
источник