Я знаю, що можу відкривати кілька файлів 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 для наступного файлу