Навигация по нескольким файлам


11

Если я открою vim с несколькими файлами в командной строке, например, vim debug.log*какие загрузки debug.log, debug.log.1и debug.log.2, могу ли я перемещаться между ними, назначить их нескольким окнам ( :split/ :vsplit) или тому подобное?

Только ярлык я знаю для этого режима работы :n, который загружает следующий файл в списке. Что еще я могу сделать в этом режиме мульти-файл? (или которые помогают при условии покрытия , что?)


3
:previous(или :prev) является инверсией :nи возвращает файл.
Богатый

Ответы:


13

Наиболее релевантная тема справки :ls, также известная как :filesили :buffers.

В вашем vim debug.log*примере, если вы дадите :lsкоманду, вы увидите:

:ls
  1 %a   "debug.log"                    line 1
  2      "debug.log.1"                  line 0
  3      "debug.log.2"                  line 0
Press ENTER or type command to continue

… Указывает, что первый является активным буфером.

Чтобы открыть debug.log.2в текущем окне, дать :b 3или :b debug.log.2команду , чтобы показать буфер 3.

Чтобы разбить окно и открыть в нем буфер 2, введите :sb 2команду. Вертикально-разделенная версия этого есть :vert sb 2.

Есть много вариантов :bкоманды; просмотрите разделы справки, приведенные здесь, чтобы почувствовать их.


Кроме того, вы можете вызвать , vim -o debug.log*чтобы открыть все файлы, каждый в своем расколе, или vim -O debug.log*открывать их каждый в вертикальном расколу.


6

В дополнение к необработанной функциональности vim, упомянутой в 200_success, экосистема Vim полна плагинов для обеспечения дополнительной функциональности, такой как:

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


1
Пожалуйста, ознакомьтесь с нашей политикой в ​​отношении рекомендаций по плагину и добавьте некоторые подробности о том, как именно эти плагины могут помочь пользователю
200_success

5

Вы также можете открыть VIM с другими параметрами.

Открывает файлы во вкладках:

vim -p debug.log*

Открывает файлы в вертикальных разделениях:

vim -o debug.log*

Есть крутой и довольно мощный плагин под названием CtrlSpace:

https://github.com/szw/vim-ctrlspace

Это очень удобно, если вам нужно работать со многими файлами. Просто вы можете представить ctrl-space как собственный список буферов для каждой вкладки. Это обеспечивает очень простой способ навигации между файлами, как утверждает автор:

Vim-CtrlSpace - это плагин Vim для управления и организации вашего рабочего пространства в Vim. Включая управление буферами, файлами, вкладками, сессиями и, наконец, проектами. Его подход несколько уникален, но, безусловно, вы будете чувствовать себя как дома, особенно если вы используете уже разделенные окна, вкладки, буферы и т. Д.


Добро пожаловать в Vi / Vim! Пожалуйста, ознакомьтесь с нашей политикой в ​​отношении рекомендаций по плагину и добавьте некоторые подробности о том, как именно плагин отвечает на вопрос.
200_success


4

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

  • :vs filename открывает файл в вертикальном разрезе
  • :sp filename делает то же самое, но в горизонтальном разрезе
  • :tabe filename открывается в новой вкладке

Также стоит знать, что если вы не укажете имя файла, вы откроете новую панель split / tab текущего файла, что может пригодиться для длинных файлов.


2
:tэто команда копирования Для :tabeditтебя нужно как минимум :tabe.
Tommcdo

О черт, ты совершенно прав. Спасибо, я отредактирую!
Том

0

Есть несколько полезных ярлыков для навигации по нескольким файлам:

  • CTRL-^(где Nнаходится номер буфера), чтобы перейти к ранее отредактированному файлу.
  • N CTRL-^(где Nномер буфера), чтобы перейти к определенному буферу.

    Например:

    • 1Control+^ - перейти к 1-му буферу
    • 2Control+^ - перейти ко 2-му буферу
    • и т.п.

    Это эквивалентно :buffer N.

  • Используйте :Ex/ :Sex/ :Vexдля навигации по текущему каталогу.

  • Используйте :tabsвзамен ( vim -p) с некоторыми пользовательскими ярлыками, .vimrcтакими как:

    " TABS
    " To create a new tab (Control-T)
    nnoremap <C-t> :tabnew<CR>
    inoremap <C-t> <Esc>:tabnew<CR>
    " Tab Navigation (Control+Left <-> Control-Right, Shift+H <-> Shift+L).
    nnoremap <S-h> gT
    nnoremap <S-l> gt
    nnoremap <A-Left> gT
    nnoremap <A-Right> gt
    nnoremap <C-S-Tab> gT
    nnoremap <C-Tab> gt
    " Tab Close (Control-W)
    nnoremap <C-BS> :tabclose<CR>
    inoremap <C-BS> <Esc>:tabclose<CR>
    " Close All (Control-Q)
    nnoremap <C-q> :qa<CR>
    inoremap <C-q> <Esc>:qa<CR>
    
  • Используйте :ba/, :vert baчтобы разделить, перейти в выбранный буфер через Control+w, w/ W, а затем сделать его текущим окном ( :on).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.