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


11

Я аж ніяк не користувач vim power power, я лише починаю розуміти vim вдосконалені рухи та команди. Але є один недолік, який я не можу подолати.

Я виріс за допомогою графічних програм для написання коду, але я нещодавно почав використовувати vim over ssh & screen для роботи над досить великими проектами з багатьма папками.

Мені цікаво, що майстри vim роблять, щоб швидко та легко працювати з кількома файлами. Розглянемо як приклад рейки. Скажіть, ви хочете відредагувати контролер, щоб ви запустили.

vim app/controllers/controller.rb

Але потім ви швидко хочете перейти на редагування перегляду або db-міграції, мій перший інстинкт полягає в тому, щоб :wqповернутися до bash, щоб перейти до цього каталогу і знову запустити vim у абсолютно новий буфер.

Це, очевидно, невірно.

Я дізнався про декілька речей, таких як:

  • Клієнтський сервер (але я не хочу використовувати X над ssh, і це здається єдиним способом)
  • :eвідкрити інший файл, переглянувши, але я не можу зробити це дуже швидко. Вкладка повністю завершує мене.
  • Відкриття цілого каталогу та пошук через буфери.
  • NERDTree є багатообіцяючим, але я дуже хочу триматися подалі від будь-якого графічного зображення, щоб змусити мене опанувати навігацію командного рядка

Прошу вибачення за наївність, але дуже хочу навчитися правильному способу йти, навіть якщо це сильно суб'єктивно.

Які ваші методи, і що б ви порадили?


Зокрема для Ruby on Rails, у плагіна Timils 's rails.vim є кілька приємних команд (із завершенням; розширюється до нових ієрархій) для відкриття файлів для моделей / переглядів / контролерів / міграцій / тестів /… (див. rails-type-navigationУ документації , або :help rails-type-navigationколи ви встановити).
Кріс Джонсен

Відповіді:


7

Можна налаштувати vim для редагування кількох файлів, не виходячи з нього взагалі. Ви використовуєте кілька буферів і перемикаєтесь між ними. Оскільки ви використовуєте vim на внутрішньому екрані, ви можете поставити наступне у своєму ~ / .vimrc, щоб увімкнути це.

   set hidden
   syntax enable
   source $VIMRUNTIME/menu.vim
   set wildmenu
   set cpo-=<
   set wcm=<C-Z>
   map <F4> :emenu <C-Z>
   nmap <Esc>[5D :bp<CR>
   nmap <Esc>Od  :bp<CR>
   nmap <Esc>OD  :bp<CR>
   nmap <Esc>[5C :bn<CR>
   nmap <Esc>Oc  :bn<CR>
   nmap <Esc>OC  :bn<CR>
   nmap <Esc>[3~ :bd<CR>
   nmap ZZ :bd<CR>

Ці ключові відображення відображають на клавіші зі стрілками Ctrl-Left та Right для переключення між буферами. Клавіша F4 викликає те саме меню, що і графічний інтерфейс. Натискання вкладки також тепер відображає невелике меню для вибору завершення при натисканні вкладки.


Дуже гарна порада, ці три відповіді справді допомогли мені почуватись комфортніше. Гарне управління буфером без плагінів - це чудовий навик. Любіть дикого меню!
пір

5

Га! Раніше я був подібний до вас, тому точно знаю , звідки ви родом. Навіть зараз, коли я певною мірою знаю, що роблю (я не бог вим, але сподіваюся потрапити), я все ще час від часу робитиму: wq і повертаюся до своєї оболонки.

Перевірте це - це може вам допомогти. (Це теж допоможе мені, оскільки я ніколи про це не знав. Ось що дивовижно в сайтах stackexchange - ви дізнаєтесь, допомагаючи іншим вчитися!)

Ось деякі речі, які я роблю.

  1. :eКоманда. Зсередини vim, редагуючи файл, ви можете зробити щось на зразок, :e dir/subdir/otherfileі він відкриє його в новому буфері, тобто у вас буде відкрито два файли відразу.

  2. Ctrl-Shift-6(Не знаю фактичних значень ascii). Якщо у вас відкриті два буфери, ви можете перемикатися між ними миттєво за допомогою цього перемикача.

  3. bd- видалення буфера. Дозволяє очистити буфер.

  4. Це дійсно дуже зручно - :sh. Якщо вам доведеться повернутися до оболонки з будь-якої причини (скажімо, переглянути каталог і chmod-файл), ви можете викликати команду оболонки vim зробити саме це. Вихід із оболонки поверне вас туди, де ви були у vim.

  5. У тій же категорії, що і вище - введення :!та команда unix після цього виконають цю команду. Спробуйте це ls. (Я думаю, що це також працює з оболонкою, але я не впевнений.)

Це ті, якими я користуюся весь час. Існує також :nдля наступного, і :pдля попереднього файлу, оскільки ви можете мати більше двох буферів, відкритих у vim одночасно (однак я зазвичай цього не роблю).


Дякую за ті поради. Я також виявив це: wincent.com/products/command-t . Я починаю його використовувати. Мінус лише в тому, що вам потрібен рубін (не такий дружній із ssh речі), але це саме те, що я шукав. Це в поєднанні з :sh, :eі належне управління буфером, і речі стають сексуально
Фебо

У більшості оболонок (тобто оболонок з контролем роботи) Ctrl+Zслід призупинити процес ( fgз оболонки, щоб відобразити його знову) - що альтернативно :sh.
maxschlepzig

Ще одна чудова порада! Відмінно! Мені доведеться скласти їх у дописі в блозі чи щось.
пір

2

Ось тут ви починаєте використовувати плагіни . Для управління файлами (або буфером) дерево NERD і MiniBufExplorer - це звичайний вибір. У вашому випадку я б google " vim ruby ​​ide " і дотримувався одного з багатьох навчальних посібників, які я знайду. Я використовую Python і 3 команди в цьому підручнику, щоб налаштувати все, що мені потрібно від Vim.


2

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

Що стосується фактичної документації, я посилаюсь на Вашу документацію на VIM Windows , але спробую дати вам початок тут.

Запустіть VIM з 2 (або більше) горизонтально розділених вікон, верхнє вікно має файл1, наступне вікно вниз має файл2 тощо.

vim -o <file1> <file2> (file3 file4 ...)

Запустіть VIM з 2 (або більше) вертикально розділених вікон, найбільше ліве вікно має файл1, у наступному вікні - файл2 тощо.

vim -O <file1> <file2> (file3 file4 ...)

Перемістити курсор у інше вікно:

CTRL-W <vim direction key> (h=left, j=up, k=down, l=right)

Ви вже редагуєте один файл, але хочете розділити вікно та також відредагувати інший файл:

:split <file2>
:vsplit <file2>

Для горизонтального та вертикального розбиття відповідно.

Також є команди переміщати вікна навколо, змінювати їх розмір тощо.


1

Використовуйте команду vi: split, щоб відкрити друге вікно редагування. спліт може робити як горизонтальні, так і вертикальні розколи і більше двох одночасно. У мене було відкрито аж 10 файлів за один і той же сеанс VI.

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