Я знаю, що можу відкривати кілька файлів vim
, роблячи щось на кшталт vim 2011-12*.log
, але як я можу переключатися між файлами та закривати файли один за одним? Крім того, як я можу сказати ім'я поточного файлу, який я редагую?
Я знаю, що можу відкривати кілька файлів vim
, роблячи щось на кшталт vim 2011-12*.log
, але як я можу переключатися між файлами та закривати файли один за одним? Крім того, як я можу сказати ім'я поточного файлу, який я редагую?
Відповіді:
Перш за все, в vim ви можете ввести :(двокрапка), а потім допомогти help
, ala :help
для списку тем самодопомоги, включаючи короткий підручник. У списку тем перемістіть курсор на цікаву тему, а потім натисніть, ctrl]і ця тема буде відкрита.
Хорошим місцем для вас стала б тема
|usr_07.txt| Editing more than one file
Гаразд, на вашу відповідь.
Після запуску vim зі списком файлів, ви можете перейти до наступного файлу, ввівши :next
або :n
коротко.
:wnext
є коротким для запису поточних змін та переходу до наступного файлу.
Там також аналогічне :previous
, :wprevious
і :Next
. (Зауважте, що :p
це стенограма для :print
. Стенограма :previous
є :prev
або :N
.)
Щоб побачити, де ви знаходитесь у списку файлів, введіть, :args
а файл, який зараз редагується, з’явиться у []
(дужках).
Приклад:
vim foo.txt bar.txt
:args
результат:
[foo.txt] bar.txt
ви можете відкрити інший файл, коли vim відкритий, :tabe filename
і переключитися на інший файл, який ви вводите, :tabn
або :tabp
на наступний і попередній відповідно.
Комбінації клавіш gT і gt також можуть використовуватися для перемикання вкладок, коли ви не перебуваєте в режимі редагування (тобто не в режимах вставки, заміни тощо). У деяких системах Ctrl+ Alt+ Page Upі Ctrl+ Alt+ Page Downтакож дозволяють перемикати вкладки, але це не завжди працює (наприклад, він не працює в терміналі OS X "поза коробкою").
І ім’я файлу ви бачите вгорі програми vim.
vim -p file1 file2
:argadd filename
та потім :next
до нього. Так само ви можете :argdel filename
видалити один із файлів у редагуванні.
Команди для перемикання між буферами:
:bf # Go to first file.
:bl # Go to last file
:bn # Go to next file.
:bp # Go to previous file.
:bw # Close file.
:help buffer
щоб знайти більше інформації
Щоб знати ім'я файлу, використовуйте Ctrl+ G, :file
або:f
:bw
закрити файл ха-ха. Не забудьте прочитати довідку :bw
там, де написано, що вам слід скористатися нею, лише якщо ви знаєте, що робите. Це не велика справа, але якщо ви не хочете стерти всі позначки та інформацію про файл, краще скористайтеся :bd
або :q
подобається нормальній людині
:bw
вам цікаво: vi.stackexchange.com/questions/2212/…
Ще один варіант, окрім наведених відповідей, - розділити вікно на:
:sp
:vsp
:vsp
призначений для вертикального розколу. Потім використовуйте Ctrl+W <ARROW_KEYS>
для переміщення в стеклах.
:vs
замість:vsp
Ctrl+W, v
для вертикального розщеплення і Ctrl+W, s
для горизонтального розколу.
CTRL+W
протягом багатьох років, і останнім часом я багато редагую VI на веб-сторінках. Кожен раз я набираю команду, навіть не замислюючись і ... whammmm ... вкладка браузера GONE! Я забуваю. Мені справді потрібно вивчити новий ярлик.
Я задав подібне запитання у суперпользователя,
"Як скопіювати та вставити між різними вікнами bash та файлами, відкритими з VI?"
Відповідь на моє запитання: ви не можете, але ви можете відкрити два файли в одному вікні bash за допомогою :split
команди VIM :
$ vim file1
, відкрийте другий файл у VIM за допомогою :split file2
команди.$ vim -o file1 file2
з bash.:q
закриває і :q!
примушує виходити.Мій bash чорно-білий, тому ім'я файлу кожного екрану оформлено у вигляді зворотного "обраного" рядка із вказаним там ім'ям файлу.
Вуто!
Я вважаю, що найзручнішим методом редагування декількох файлів є використання вкладок. Ви можете відкрити кілька файлів на окремих вкладках через командний рядок так:
vim -p file1.txt file2.txt
Або якщо у вас вже відкрито vim, ви можете відкрити новий файл на новій вкладці так:
:tabe file2.txt
Після відкриття вкладок використовуйте gt
для перегляду наступної вкладки та gT
попередньої вкладки.
Ви також можете перейти до першої вкладки за допомогою 1gt
, другої вкладки з 2gt
тощо.
Ви можете закрити вкладки, використовуючи :tabc
Нарешті, ви можете перемістити поточну вкладку до цього n
місця, :ntabm
де n
будь-яке число більше або дорівнює 0
.
Існує багато способів зробити це. Перший, можливо, менш зручний - це дзвонити vim
з файлами, які ви бажаєте редагувати - створити:
vim first_file second_file ...
Він викликає два файли у двох буферах. Щоб переключитися з файлу на інший, будь ласка, використовуйте :n
та :N
. Щоб перелічити файли, які ви редагуєте, :args
зробить роботу. :help buffer
допоможе вам більше з цього питання.
Це має відповісти на ваше запитання. Але ось додаткова інформація:
Існує спосіб редагувати свої файли більш зручним способом, розділивши екран консолі за допомогою vim . Для цього відкрийте два кадри за допомогою :split
( :sp
) або :vsplit
( :vs
), використовуючи vim . Потім перейдіть по цих кадрах, використовуючи комбінацію Ctrl+ W> Ctrl+ W. Ви також можете використовувати Ctrl+ W+ стрілку або клавішу ( H, J, Kабо L) , відповідну наступний кадр. Після цього відредагуйте потрібний файл :e file_name
. :help opening-window
допоможе вам більше з цього питання.
Тепер, якщо ви хочете побачити відмінності між файлами, використовуйте -d
аргумент або зателефонуйте програмі vimdiff (вона однакова) з відповідними файлами. :help diff
допоможе вам більше з цього питання.
vim -d first_file second_file ...
Будь ласка, дайте мені знати, якщо у вас є якісь проблеми.
Мені подобається використовувати розділені вікна - горизонтальні та вертикальні - для редагування кількох файлів.
Я використовую tmux, щоб легше керувати цими вікнами
https://tmux.github.io/ "Що таке термінальний мультиплексор? Це дозволяє легко перемикатися між декількома програмами в одному терміналі, від'єднувати їх (вони продовжують працювати у фоновому режимі) та повторно приєднувати їх до іншого терміналу. І робити багато іншого. Дивіться посібник. "
Приклад: Перегляд файлів або запуску тестів праворуч, редагування тестових та вихідних файлів зліва:
:e #(filename)
для перемикання між двома відкритими файлами
:p
для попереднього файлу
:n
для наступного файлу