Як ефективно працювати з декількома файлами у Vim


1098

Я почав використовувати Vim для розробки сценаріїв Perl і починаю вважати його дуже потужним.

Одне, що мені подобається - це можливість відкривати кілька файлів одночасно за допомогою:

vi main.pl maintenance.pl

а потім переходьте між ними за допомогою:

:n
:prev

і подивіться, який файл відкрито за допомогою:

:args

І щоб додати файл, можу сказати:

:n test.pl

який, як я очікую, буде доданий до мого списку файлів, але замість цього він видаляє мій поточний список файлів, і коли я ввожу :args, test.plвідкриваюсь лише .

Тож як я можу додавати та видаляти файли зі свого списку аргументів?


5
tmux ... використовувати vim на кожній панелі
Tommy

4
@Tommy: таким чином ви не зможете вставити між файлами (буфер vims). Якщо доступний лише буфер обміну, може допомогти (див. Прийняту відповідь: stackoverflow.com/questions/5532878/… )
ChristophS

1
:Nздається, простіший спосіб перейти до попереднього файлу ...
Герт ван ден Берг

vimcasts.org/categories/the-argument-list ? VimCasts дуже рекомендується при навчанні vim.
mcepl

Відповіді:


1171

Чому б не використовувати вкладки (представлені у Vim 7)? Ви можете перемикатися між вкладками за допомогою :tabnта :tabp, З :tabe <filepath>допомогою додати нову вкладку; і звичайною :qабо :wqзакриєте вкладку. Якщо ви збираєтесь на карту :tabnта :tabpна F7/ F8клавіші, ви можете легко перемикатися між файлами.

Якщо файлів не так багато або у вас немає Vim 7, ви також можете розділити екран на кілька файлів: :sp <filepath> . Потім ви можете перемикатися між спліцкранами з Ctrl+, Wа потім клавіша зі стрілкою в напрямку, в якому ви хочете рухатися (або замість клавіш зі стрілками, wдля наступного та Wпопереднього спліцкріну)


72
Щоб зберегти та закрити вкладку, ви можете також використовувати ZZзамість :wq(так само, як зазвичай, зберегти та закрити)
Андреас Греч

40
Я використовую пакет vim-gnome в Ubuntu 10.10, і я можу перемикатися між вкладками за допомогою Ctrl + PageUp та Ctrl + PageDown. Мені нічого не довелося налаштовувати; це було за замовчуванням.
Joey Adams

268
Також у режимі редагування gtпереходить до наступної вкладки та gTпереходить до попередньої вкладки.
Декан

40
Ви можете перейти на будь-яку вкладку, використовуючи ngt, де n - індекс вкладки (починаючи з одиниці). Я думаю, що є варіант, який відображає індекс кожної вкладки біля імені файлу, але я не знаю, що це таке. Якщо хтось знає, я хотів би це почути.
анульований покажчик

81
Зауважте також, що ви можете використовувати -pпрапор для відкриття декількох файлів на вкладках з командного рядка. Наприклад, gvim -p main.pl maintenance.plвідкриє ці два файли на вкладках.
Метью Штрабрідж

554

Лістинг

Щоб переглянути список поточних буферів, я використовую:

:ls

Відкриття

Щоб відкрити новий файл, я використовую

:e ../myFile.pl

з розширеним заповненням вкладок (помістити set wildmenuу свій .vimrc).

Примітка. Ви також можете скористатись :findпошуком набору шляхів для вас, але спочатку потрібно налаштувати ці шляхи.


Перемикання

Для переключення між усіма відкритими файлами я використовую

:b myfile

з покращеним заповненням вкладок (усе ще set wildmenu)

Примітка: :b#вибирає останній відвідуваний файл, тому ви можете використовувати його для швидкого перемикання між двома файлами.


Використання вікон

Ctrl-W sі Ctrl-W vрозділити поточне вікно по горизонталі та вертикалі. Ви також можете використовувати :splitта :vertical split( :spі :vs)

Ctrl-W wперемикатися між відкритими вікнами та Ctrl-W h(або jабо kабо l) переходити через відкриті вікна.

Ctrl-W cщоб закрити поточне вікно та Ctrl-W oзакрити всі вікна, крім поточного.

Починаючи vim з a -oабо -Oпрапором, відкривається кожен файл у власному розділі.


При всьому цьому мені не потрібні вкладки у Vim, і пальці знаходять мої буфери, а не очі.

Примітка: якщо ви хочете, щоб усі файли переходили в один і той же екземпляр Vim, запустіть Vim з --remote-silentопцією.


4
У випадку, якщо ви граєте з декількома буферами, я рекомендую LustyJuggler .
Arun M

1
Дякуємо, що зробили дуже приємну швидку довідку для команд vim, які використовуються найчастіше при роботі з декількома файлами.
кількість

9
:bє дуже потужною командою, оскільки вона може приймати як аргументи як буферні номери, так і імена буфера. Що ще? Він також підтримує завершення вкладки в будь-якій частині імені файлу. Скажімо, у вас є foo.txt відкрити в буфері 2, ви можете ввести :b 2<Enter>або :b foo.txtабо :b oo<Tab><Enter>змінити цей файл. Так, останній завершить "oo" до "foo.txt", коли ви натиснете <Tab>.
Сусам Пал

21
У мене є цей рядок у моєму .vimrc : nnoremap gb :ls<cr>:b<space>. Коли я набираю gbв командному режимі, він перераховує мої відкриті буфери та типи :b , готові мені почати вводити ім’я / номер буфера.
nkorth

5
Варто також згадати, що :bбуде прийнято збіг підрядок, якщо це однозначно. Тож якщо у вас є відкриті файли foo,bar і baz, просто :b zдостатньо, щоб переключити вас на bazбуфер і :b ooабо :b oперенести вас в fooбуфер.
Сорен Бьорнстад

233
:ls

для списку відкритих буферів

  • :bp попередній буфер
  • :bn наступний буфер
  • :bn( nчисло) переходять до n-го буфера
  • :b <filename-part> за допомогою клавіші вкладки, що забезпечує автоматичне завершення (приголомшливо !!)

У деяких версіях vim, bnі bpє власне bnextі bpreviousвідповідно. Автозаповнення вкладок корисно в цьому випадку.

Або коли ви перебуваєте у звичайному режимі, використовуйте ^для переходу на останній файл, над яким працювали.

Крім того, ви можете зберегти сеанси vim

:mksession! ~/today.ses

Вищевказана команда зберігає поточні відкриті файлові буфери та настройки ~/today.ses. Ви можете завантажити цей сеанс за допомогою

vim -S ~/today.ses

Жодних клопотів не згадуючи, де ви вчора зупинилися ;)


перейдіть до конкретного буфера: N CTRL- ^
Том Ян

8
@shyam Я думаю, що я тебе люблю! Я якось точно не знав напевно про команду mksession, але сьогодні я вирішив, що НЕОБХІДНО якийсь спосіб зберегти список файлів, щоб легко їх відкрити. Це ще краще, оскільки, здається, навіть зберігається повний стан речей (розбиття вікон, розташування буфера тощо). Отже, дякую!
Касапо

Також використовуйте "позначку, щоб перейти туди, де ви були у файлі востаннє.
Хром

113

Щоб додати до argsсписку:

:argadd

Щоб видалити зі argsсписку:

:argdelete

У вашому прикладі ви можете використовувати :argedittest.pl, щоб додати test.pl до argsсписку та відредагувати файл за один крок.

:help args дає значно більше деталей та розширене використання


4
Це справді відповідь на поставлене запитання, хоча, даючи заголовок, інші відповіді цілком справедливі.
Сорен Бьорнстад

48

Я використовую команди буфера - :bn(наступний буфер), :bp(попередній буфер) :buffers(список відкритих буферів) :b<n>(відкритий буфер n) :bd(буфер видалення). :e <filename>просто відкриється в новий буфер.


18
: ls швидше, ніж: буфери
aehlke

42

Я думаю, ви можете використовувати неправильну команду для перегляду списку відкритих вами файлів.

Спробуйте зробити, :lsщоб переглянути список відкритих файлів, і ви побачите:

   1 %a   "./checkin.pl"            line 1
  2 #    "./grabakamailogs.pl"     line 1
  3      "./grabwmlogs.pl"         line 0
  etc.

Потім ви можете перестрибувати файли, посилаючись на них за вказаними номерами, наприклад: 3b

або ви можете розділити екран, ввівши число, але використовуючи sb замість просто b.

Як бік% посилається на видимий в даний час файл, а # - на альтернативний файл.

Ви можете легко перемикатися між цими двома файлами, натискаючи Ctrl Shift 6

Редагувати: як :lsви можете використовувати :regдля перегляду поточного вмісту ваших регістрів, включаючи 0-9 регістрів, які містять те, що ви видалили. Це особливо корисно, якщо ви хочете використовувати повторно видалений текст, який ви раніше видалили.


2
Приємно бачити осторонь пов’язаної інформації на зразок% та #. +1
Ashish

35

Vim (але не оригінал Vi!) Має вкладки, які я вважаю (у багатьох контекстах) вищими за буфери. Ви можете сказати, :tabe [filename]що відкрити файл на новій вкладці. Циклізація між вкладками здійснюється клацанням на вкладці або комбінацією клавіш [ n ] gtта gT. У графічному Vim є навіть графічні вкладки.


1
Дякую, це чудово звучить, але на жаль, на сервері встановлено лише VIM 6.1
Едвард Тангуай

1
Виберіть дуже зручні з груповими символами: vim -p dir/*. Максимальний розмір вкладки - 10, але ви можете змінити його в ~/.vimrcналаштуваннях tabpagemaxна якесь інше значення.
Кампа

27

Тут багато відповідей! Що я використовую, не вигадуючи колесо - найвідоміші плагіни (які не скоро помруть і використовуються багатьма людьми), щоб бути дуже швидкими та вигадливими.

  • ctrlpvim / ctrlp.vim - щоб знайти файл за ім'ям нечіткий пошук за його місцезнаходженням або просто своїм ім'ям
  • jlanzarotta / bufexplorer - для перегляду відкритих буферів (коли ви не пам’ятаєте, скільки файлів ви відкрили та модифікували нещодавно, і не пам’ятаєте, де вони є, мабуть, тому, що ви шукали їх за допомогою Ag)
  • rking / ag.vim для пошуку файлів щодо gitignore
  • scrooloose / nerdtree для перегляду структури каталогів, пошуку, додавання / видалення / зміни файлів

EDIT: Нещодавно я використовував dyng / ctrlsf.vim для пошуку з контекстним поданням (наприклад, Sublime search), і я переключив двигун з ag на ripgrep . Вистава видатна.

EDIT2: Поряд із CtrlSF ви можете використовувати mg979 / vim-visual-multi , вносити зміни до декількох файлів одночасно, а потім в кінці зберігати їх за один раз.


2
ctrlp перемістився і зараз його можна знайти на ctrlpvim / ctrlp.vim
Дейв

1
ЦЕ правильна відповідь! Чому він не має більше результатів?
Томас Мебіус

2
Немає більше результатів, тому що питання було задано у 2008 році. :)
burnettk

точно. Я не можу уявити собі vim у програмі dev без цих плагінів.
Едгар Аллоро

25

Такі речі, як :eі :baddприймуть лише ОДИН аргумент, тому наступне буде невдалим

:e foo.txt bar.txt
:e /foo/bar/*.txt
:badd /foo/bar/*

Якщо ви хочете додати кілька файлів зсередини vim, використовуйте arga[dd]

:arga foo.txt bar.txt
:arga /foo/bar/*.txt
:argadd /foo/bar/*

21

Деякі відповіді в цій темі пропонують використовувати вкладки, а інші пропонують використовувати буфер, щоб виконати те саме. Вкладки та буфери різні. Я настійно пропоную прочитати цю статтю " Божевілля Vim Tab - Буфери проти вкладки ".

Ось приємний підсумок, який я взяв із статті:

Підсумок:

  • Буфер - це текст у пам'яті файлу.
  • Вікно - це вікно перегляду на буфері.
  • Сторінка вкладки - це колекція вікон.

2
Ви отримуєте це підсумок, ввівши :help windowVim
icc97

19

Під час використання декількох файлів vim, я в основному використовую ці команди (з ~ 350 файлами відкрито):

  • :b <partial filename><tab> (перейти до буфера)
  • :bw (видалення буфера, видалення буфера)
  • :e <file path> (відредагуйте, відкрийте новий буфер>
  • pltags - включити перехід на визначення підпрограми / методу

2
350 файлів !!! Це вражає. як знайти правильний буфер для переходу? Ви коли-небудь робите розколи?
Брайан О'Делл

3
@ BrianO'Dell :b <partial filename><tab>плюс set wildmenuу ваших .vimrcсправах добре, коли у вас відкриті тонни буферів. Тоді ви просто частково збігаєтеся і прокручуєте ті, які вона знайде. У інших гідних редакторах ви нечітко знаходять, але зазвичай не можете обмежити це нечітке знаходження лише файлами, які ви відкрили.
icc97

17

Додавання іншої відповіді, оскільки це не охоплюється жодною з відповідей

Щоб змінити всі буфери для tabперегляду.

 :tab sball

відкриє всі буфери для перегляду вкладки. Тоді ми можемо використовувати будь-які команди, пов’язані з вкладками

gt or :tabn           "    go to next tab
gT or :tabp or :tabN  "    go to previous tab

деталі на :help tab-page-commands.

Ми можемо доручити vim відкривати, як перегляд вкладки, декілька файлів vim -p file1 file2. alias vim='vim -p'буде корисно.
Те ж саме можна досягти, дотримуючись автокоманди в~/.vimrc

 au VimEnter * if !&diff | tab all | tabfirst | endif

У будь-якому випадку , щоб відповісти на питання: Для того, щоб додати в список АГД: arga file,

Щоб видалити зі списку аргументів: argd pattern

Більше на :help arglist


16

Ви можете використовувати глобальні позначки Vim .

Таким чином, ви можете швидко відскакувати між файлами і навіть до позначеного місця у файлі. Крім того, ключові команди короткі: 'C переводить мене до коду, з яким я працюю, 'T переводить мене до тестового блоку, з яким працюю.

Коли ви міняєте місця, скидання позначок теж швидко: mC відмічає нове місце коду, mT відмічає нове тестове місце.


12

Я використовую той самий .vimrc файл для gVim та командний рядок Vim. Я схильний використовувати вкладки в gVim і буфери в командному рядку Vim, тому у мене встановлений мій .vimrc, щоб полегшити роботу з обома:

" Movement between tabs OR buffers
nnoremap L :call MyNext()<CR>
nnoremap H :call MyPrev()<CR>

" MyNext() and MyPrev(): Movement between tabs OR buffers
function! MyNext()
    if exists( '*tabpagenr' ) && tabpagenr('$') != 1
        " Tab support && tabs open
        normal gt
    else
        " No tab support, or no tabs open
        execute ":bnext"
    endif
endfunction
function! MyPrev()
    if exists( '*tabpagenr' ) && tabpagenr('$') != '1'
        " Tab support && tabs open
        normal gT
    else
        " No tab support, or no tabs open
        execute ":bprev"
    endif
endfunction

Це затирає існуючі відображення для Hі L, але це робить перемикання між файлами дуже швидко і легко. Просто натисніть Hна наступний і Lна попередній; незалежно від того, використовуєте ви вкладки або буфери, ви отримаєте заплановані результати.


1
Мені подобаються ці відображення. Спробуйте також Ctrl-H, Ctrl-L. Я встановлюю Firefox та термінал gnome з тими ж відображеннями. Дуже приємно мати послідовні комбінації клавіш на вкладках.
cmcginty

4
використовуйте клавішу лідера замість ctrl, щоб уникнути крадіжки існуючих відображень
aehlke

10

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


9

Якщо ви використовуєте лише вбудовані команди vim , найкраща, яку я коли-небудь бачив для переключення між декількома буферами, це:

nnoremap <Leader>f :set nomore<Bar>:ls<Bar>:set more<CR>:b<Space>

Він чудово поєднує в собі :lsі :bкоманди, і команди - перелічуючи всі відкриті буфери і чекаючи, коли ви введете команду для перемикання буфера.

Наведене вище відображення у vimrc, коли ви вводите <Leader>f,

  • Відображаються всі відкриті буфери
  • Ти можеш:
    • Наберіть 23для переходу до буфера 23,
    • Введіть #для переходу до альтернативного / MRU буфера,
    • Введіть часткове ім’я файлу, а потім введіть <Tab>або <C-i>для автозаповнення,
    • Або просто <CR>або <Esc>залишитися на поточному буфері

Знімок результату для наведеного вище ключового відображення:

:set nomore|:ls|:set more
  1  h    "script.py"    line 1
  2 #h  + "file1.txt"    line 6  -- '#' for alternative buffer
  3 %a    "README.md"    line 17 -- '%' for current buffer
  4       "file3.txt"    line 0  -- line 0 for hasn't switched to
  5     + "/etc/passwd"  line 42 -- '+' for modified
:b '<Cursor> here'

На наведеному вище знімку:

  • Другий стовпець: %aдля поточного, hдля прихованого, #для попереднього, порожнього для не переключений.
  • Третя колонка: +для модифікованих.

Також я настійно пропоную set hidden. Див :help 'hidden'.


Це чудова ідея! Я використовував :bі :lsбагато, але незалежно. Я думаю, що це стає менш корисним, коли у вас є більше буферів, ніж сторінка вартістю, але потім ви можете просто повернутися до:b
icc97

Радий бачити, що це допомагає. Ура! :)
qeatzy

З цієї Вікі-програми Vim ви можете трохи скоротити її, до nnoremap <leader>f :ls<cr>:b<space>якої можуть потрапити проблеми з командою "більше", але
icc97

Так, цей спосіб відмінно працює, якщо відкрито менше файлів (звичайний випадок використання). set moreМатеріал має значення лише тоді, коли відкрито багато файлів (більше однієї сторінки), наприклад vim /usr/include/*, хоча й менш корисних.
qeatzy

8

Я використовую наступне, це дає вам багато функцій, які ви могли б очікувати у інших редакторах, таких як Sublime Text / Textmate

  1. Використовуйте буфери, не "сторінки вкладки". Буфери - це те саме поняття, що і вкладки майже у всіх інших редакторах.
  2. Якщо ви хочете , один і той же вид , який має вкладки ви можете використовувати ВІМ-авіакомпанію плагін за допомогою наступної настройки Вашого .vimrc: let g:airline#extensions#tabline#enabled = 1. Це автоматично відображає всі буфери як заголовки вкладок, коли у вас немає відкритих сторінок вкладок
  3. Використовуйте неперешкоджений неприємний характер Тіма Попа, який дає [bта ]bдля переходу до попереднього / наступного буфера відповідно (плюс цілу низку інших смаколиків)
  4. Є set wildmenuв вашому .vimrcтоді , коли ви набираєте :b <file part>+ Tabдля буфера , ви отримаєте список можливих буферів , які ви можете використовувати стрілки вліво / вправо , щоб прокручувати
  5. Використовуйте плагін Тіма Поп -одержимості для зберігання сеансів, які чудово грають з авіакомпанією (у мене було багато болів при сесіях і плагінах )
  6. Скористайтеся плагіном Vim-оцет Тіма Попа . Це працює з рідним, :Exploreале значно полегшує роботу. Ви просто введіть, -щоб відкрити провідник, який є тим самим ключем, що і для запуску каталогу в провіднику. Швидше навігація (однак за допомогою fzf я рідко використовую це)
  7. fzf (який можна встановити як плагін vim) - це справді потужний нечіткий пошук, який можна використовувати для пошуку файлів (і буферів також). fzf також дуже добре грає з fd (більш швидка версія пошуку)
  8. Використовуйте Ripgrep з vim-ripgrep для пошуку по вашій кодовій базі, а потім ви можете використовувати :cdoрезультати для пошуку та заміни

fzf та fzf-vim змінили моє життя, я не можу його досить рекомендувати. Він також дуже добре працює на Windows, навіть у консолі для нечіткого пошуку файлів. У Windows використовується резервний файл ripgrep (rg), який, за моїм досвідом, перевершує будь-який інший інструмент пошуку / grep (як, наприклад, silversearcher або дефолт Windows, що fzf використовує iirc). Ви можете використовувати його для пошуку будь-якого списку елементів: останніх використаних файлів, відкритих в даний час буферів, рядків у поточному буфері, рядків у кодовій базі (cwd), тегів, .. Ви можете легко запрограмувати свій власний список нечіткого пошуку. Так добре! (Я прийшов із ctrl-p і ніколи не озирався)
Еміль Врійдагс

7

Мій спосіб ефективно працювати з декількома файлами - це використовувати tmux.

Це дозволяє розділяти вікна по вертикалі та горизонталі, як у:

введіть тут опис зображення

У мене це працює так, як на моїх комп'ютерах Mac і Linux, і я вважаю це краще, ніж механізм перемикання віконної вікон, який передбачено (на Mac). Мені здається, що перемикання простіше, і тільки за допомогою tmux мені вдалося отримати "нову сторінку в тому ж поточному каталозі", що працює над моїм mac (незважаючи на те, що, здається, є варіанти відкрити нові панелі в тому ж каталозі), який є напрочуд критичний твір. Миттєва нова панель у поточному місці надзвичайно корисна. Метод, який робить нові панелі з однаковими комбінаціями клавіш для обох ОС, є критичним для мене і бонусом для всіх для майбутньої особистої сумісності. Крім декількох панелей tmux, я також намагався використовувати кілька вкладок, наприкладвведіть тут опис зображення кілька нових вікон, наприкладвведіть тут опис зображенняі в кінцевому підсумку я виявив, що декілька панелей tmux є найбільш корисними для мене. Я дуже "візуальний" і люблю тримати перед собою різні мої контексти, з'єднані між собою як вітрини.

tmux також підтримує горизонтальні та вертикальні панелі, яких не використовували старіші screen(хоча, мабуть, iterm2 Mac підтримує це, але знову ж таки, поточний параметр каталогу не працював для мене). tmux 1,8


1
Мені довелося почутись, коли я побачив твій штучний приклад "кількох вікон". Я сподіваюся, що ніхто не працює так :-) У будь-якому випадку, я використовую плитку wm, що ще краще (я перейшов з tmux на i3wm). Просто для завершення вашої відповіді.
lzap

1
Tmux є приголомшливим, і я дуже довго використовував цей підхід, але це ускладнює навігацію, копіювання та вставлення між двома файлами.
оскаржений

1
Раніше я це робив, але наявність декількох буферів vim - це найкраще, коли потрібно дбати / вставляти
Titou

3

Я використовую командний рядок і багато git, так що у мене є цей псевдонім у моєму bashrc:

alias gvim="gvim --servername \$(git rev-parse --show-toplevel || echo 'default') --remote-tab"

Це відкриє кожен новий файл на новій вкладці наявного вікна і створить одне вікно для кожного сховища git. Отже, якщо ви відкриєте два файли з репо A і 3 файли з репо B, ви отримаєте два вікна, одне для репо A з двома вкладками та одне для репо B з трьома вкладками.

Якщо файл, який ви відкриваєте, не міститься в git repo, він перейде до вікна за замовчуванням.

Для переходу між вкладками я використовую ці відображення:

nmap <C-p> :tabprevious<CR>
nmap <C-n> :tabnext<CR>

Щоб відкрити відразу декілька файлів, слід поєднати це з одним із інших рішень.


3

Я використовую кілька буферів, які встановлені в моєму ~/.vimrcфайлі.

Сценарій проводника міні-буфера також приємний, щоб отримати хороший компактний перелік ваших буферів. Потім :b1або :b2..., щоб перейти до відповідного буфера або скористатися провідником міні-буфера та вкласти в буфер.


2

спробуйте наступні карти для зручного редагування кількох файлів

"розділені вікна

nmap <leader>sh :leftabove vnew<CR>

nmap <leader>sl :rightbelow vnew<CR>

nmap <leader>sk :leftabove new<CR>

nmap <leader>sj :rightbelow new<CR>

"рухається

nmap <C-j> <C-w>j

nmap <C-k> <C-w>k

nmap <C-l> <C-w>l

nmap <C-h> <C-w>h


2

Я зробив дуже просте відео, де показано робочий процес, який я використовую. В основному я використовую плагін Ctrl-P Vim, і я відобразив навігацію по буфері до клавіші Enter.

Таким чином я можу натиснути Enter у звичайному режимі, переглянути список відкритих файлів (який відображається у невеликому новому вікні в нижній частині екрана), вибрати файл, який я хочу відредагувати, і знову натиснути Enter. Для швидкого пошуку кількох відкритих файлів просто введіть частину імені файлу, виберіть файл та натисніть Enter.

У мене не багато відкритих файлів у відео, але це стає неймовірно корисним, коли ви починаєте мати їх багато.

Оскільки плагін сортує буфери, використовуючи замовлення MRU, ви можете просто натиснути Enter двічі та перейти до останнього файлу, який ви редагували.

Після встановлення плагіна потрібна єдина конфігурація:

nmap <CR> :CtrlPBuffer<CR>

Звичайно, ви можете зіставити його з іншим ключем, але я вважаю, що введення карти буде дуже зручним.


2

Я б запропонував використовувати плагін

NERDtree

Ось посилання github з інструкціями.

Нердтрі

Я використовую vim-plug як менеджер плагінів, але ви можете використовувати і Vundle.

vim-plug

Вундл


2

Для моїх та інших користувачів VIM найкращим варіантом є:

  • Відкрийте файл за допомогою,

: e file_name.extension

А потім просто Ctrl + 6, щоб змінити останній буфер. Або ви завжди можете натиснути

: ls перерахувати буфер, а потім змінити буфер, використовуючи b, а потім номер буфера.

  • Робимо вертикальний або горизонтальний розкол за допомогою

: vsp для вертикального розбиття

: sp для горизонтального розколу

І потім <C-W><C-H/K/L/j> змінити робочий розкол.

Ви можете, звичайно, редагувати будь-який файл у будь-якій кількості розбитків.


Будь ласка, відредагуйте свою відповідь, щоб переконатися, що вона покращилася стосовно інших відповідей, вже наявних у цьому запитанні.
hongsy

1

Коли я почав використовувати VIM, я не розумів, що вкладки повинні використовуватися як різні макети вікон, і буфер виконує роль для багаторазового редагування / перемикання файлів між собою. Насправді на початку вкладки навіть не існували до v7.0, і я просто відкрив один VIM всередині вкладки терміналу (я використовував gnome-terminal на даний момент), і перемикатися між вкладками, використовуючи alt + цифри, оскільки я думав, що використовую такі команди, як : буфери,: bn та: bp були для мене занадто багато. Коли вийшов VIM 7.0, мені здається, що легше керувати багатьма файлами та переходити на нього, але останнім часом я просто зрозумів, що буфери завжди повинні бути шляхом, якщо тільки одне: вам потрібно налаштувати його, щоб він працював правильно.

Тому я спробував vim-airline і включив візуальний верхній буфер-схожий буфер, але у графіки виникли проблеми з моїм iTerm2, тому я спробував пару інших, і, здається, MBE працює найкраще для мене. Я також встановлюю shift + h / l як ярлики, оскільки оригінали (переміщення до голови / хвоста поточної сторінки) не дуже корисні для мене.

map <S-h> :bprev<Return>
map <S-l> :bnext<Return>

Здається, це навіть простіше, ніж gt і gT, і: e простіше, ніж: tabnew. Я вважаю: bd не так зручно, як: q хоч (у MBE виникають деякі проблеми з цим), але я можу жити з усіма файлами в буфері, я думаю.



0

Більшість відповідей у ​​цій темі використовують прості команди vim, що, звичайно, добре, але я думав, що я дам розгорнутий відповідь, використовуючи комбінацію плагінів та функцій, які я вважаю особливо корисними (принаймні, деякі з цих порад прийшли з файлу Гері Бернарда поради щодо навігації ):

  1. Щоб переключитися між двома останніми файлами, просто натисніть <leader>двічі. Рекомендую призначити <leader>пробіл:

    nnoremap <leader><leader> <c-^>
    
  2. Для швидкого переміщення по проекту відповідь - це нечітке рішення, наприклад CtrlP . Я прив'язую його до <leader>aшвидкого доступу.

  3. У випадку, якщо я хочу побачити візуальне зображення відкритих в даний час буферів, я використовую плагін BufExplorer . Простий, але ефективний.

  4. Якщо я хочу переглядати файлову систему, я б використав командний рядок або зовнішню утиліту (Quicklsilver, Afred тощо), але подивитися на поточну структуру проекту NERD Tree - це класика. Не використовуйте це, хоча замість 2основного методу пошуку файлів. Це дійсно сповільнить вас. Я використовую палітурку <leader>ff.

Їх має бути достатньо для пошуку та відкриття файлів. Звідти, звичайно, використовуйте горизонтальні та вертикальні розколи. Щодо розділів, я вважаю ці функції особливо корисними:

  1. Відкривайте нові розщеплення в менших районах, коли не вистачає місця, і розгорніть їх для навігації. Дивіться тут для коментарів про те , що вони роблять саме:

    set winwidth=84
    set winheight=5
    set winminheight=5
    set winheight=999
    
    nnoremap <C-w>v :111vs<CR>
    nnoremap <C-w>s :rightbelow split<CR>
    set splitright
    
  2. Легко переходьте від спліт до розбиття:

    nnoremap <C-J> <C-W><C-J>
    nnoremap <C-K> <C-W><C-K>
    nnoremap <C-L> <C-W><C-L>
    nnoremap <C-H> <C-W><C-H>
    

0

Ви можете бути в абсолютний безумець і псевдонім vimдля vim -pдодаючи в вашому .bashrc:

alias vim="vim -p"

Це призведе до відкриття декількох файлів із оболонки на вкладках, без необхідності виклику :tab ballзсередини vim.

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