Навігація по декількох файлах


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_успіх

6

Ви також можете відкрити 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_успіх


4

Якщо ви хочете відкрити певний файл без необхідності пройти :ls, ви можете скористатися будь-яким із наведених нижче дій.

  • :vs filename відкриває файл у вертикальному розрізі
  • :sp filename робить те саме, але в горизонтальному розколі
  • :tabe filename відкривається в новій вкладці

Варто також знати, що якщо не вказати ім'я файлу, ви відкриєте новий спліт / вкладку поточного файлу, який може бути зручним для довгих файлів.


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.