Як дізнатися, який файл зараз відкрито в vim?


61

Це може здатися тривіальним, але, не раз, я виявив, що забув, який файл у vimмене відкритий (наприклад, коли я переглядаю різні файли журналів і подібні), і єдиний спосіб, який я міг дізнатися, - це закрити файл та знайдіть в історії команд найсвіжішу команду.

Чи є команда в рамках vim, щоб повідомити, який файл ви зараз відкрили, не виходячи з програми або файл, який ви відкрили (наприклад :<which_file_cmd>?)


5
Якщо ви не телефонували vimз такою кількістю аргументів, використовуйте :args.
41754

Відповіді:


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ім'я файлу.



7

Коли vimне викликається багато аргументів, :argsце корисно.


4
Інша проблема з цим полягає в тому, що якщо файл був відкритий після запуску vim, він не буде вказаний у списку.
Патрік

4

Якщо у вас може бути файл конфігурації vim за замовчуванням, ви можете додати, 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 ch 17 для гарного пояснення стану.


Я завжди також використовую статусну лінію. +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 і це показує мені повний шлях до файлу, кількість рядків і символів.

Caveat : він знову відкриває файл з диска, тому він найкорисніший, коли файл уже збережений.

: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або "друкую ім'я файлу", це повторює весь шлях до файлу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.