Как редактировать несколько файлов в VIM?

Я знаю, что я могу открыть несколько файлов с помощью vim, выполнив что-то вроде vim 2011-12*.log, но как я могу переключаться между файлами и закрывать файлы один вовремя? Кроме того, как я могу указать имя файла текущего файла, который я редактирую?

125 голосов | спросил cwd 24 SatEurope/Moscow2011-12-24T21:21:25+04:00Europe/Moscow12bEurope/MoscowSat, 24 Dec 2011 21:21:25 +0400 2011, 21:21:25

11 ответов


129

Прежде всего, в vim вы можете ввести : (двоеточие), а затем помочь help, ala :help для списка self Темы справки, включая короткий учебник. В списке тем переместите курсор над интересующей темой, а затем нажмите 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
ответил bsd 24 SatEurope/Moscow2011-12-24T21:36:17+04:00Europe/Moscow12bEurope/MoscowSat, 24 Dec 2011 21:36:17 +0400 2011, 21:36:17
39

вы можете открыть другой файл, в то время как vim открыт с помощью :tabe filename и для переключения на другой файл, который вы вводите :tabn или :tabp для следующего и предыдущего соответственно.

Клавиши быстрого доступа gT и gt также могут использоваться для переключения вкладок, когда вы не находитесь в режиме редактирования (т. е. не в режимах вставки, замены и т. д.). В некоторых системах Ctrl + Alt + Страница вверх и Ctrl + Alt + Вниз страницы также разрешает переключение табуляции, но это не всегда работает (например, он не будет работать в терминале OS X «из коробки»).

И вы можете увидеть имя файла в верхней части приложения vim.

ответил Hanan N. 24 SatEurope/Moscow2011-12-24T21:28:04+04:00Europe/Moscow12bEurope/MoscowSat, 24 Dec 2011 21:28:04 +0400 2011, 21:28:04
22

Команды для переключения между буферами:

: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

ответил Birei 24 SatEurope/Moscow2011-12-24T21:33:42+04:00Europe/Moscow12bEurope/MoscowSat, 24 Dec 2011 21:33:42 +0400 2011, 21:33:42
19

Другой вариант, помимо ответов, состоит в том, чтобы разбить окно на:

:sp
:vsp

:vsp предназначен для вертикального разделения. Затем используйте Ctrl+W <ARROW_KEYS> для перемещения в панелях.

ответил Not Now 25 SunEurope/Moscow2011-12-25T05:40:57+04:00Europe/Moscow12bEurope/MoscowSun, 25 Dec 2011 05:40:57 +0400 2011, 05:40:57
8
:n -> Move to next file
:N -> Move to previous file
ответил diham 25 SunEurope/Moscow2011-12-25T19:36:21+04:00Europe/Moscow12bEurope/MoscowSun, 25 Dec 2011 19:36:21 +0400 2011, 19:36:21
8

Я задал аналогичный вопрос у суперпользователя,

«Как копировать и вставлять между разными окнами bash и файлами, открытыми с помощью VI?»

Ответ на мой вопрос заключался в том, что вы не можете, но вы можете открыть два файла в одном окне bash с помощью команды VIM :split:

  1. Откройте файл с помощью $ vim file1, откройте второй файл в VIM, используя команду :split file2.
  2. Или используйте $ vim -o file1 file2 из bash.
  3. Переключение между файлами - переключение активного файла - в VIM с помощью ctrl - w ctrl - w .
  4. Пример операции - это копия (или yank) в файле1 y y , переключатель (3), затем вставьте (или поместите) p содержимое в файл2.
  5. Все остальное нормально, когда открыто какое-либо окно, поэтому завершает работу :q и :q!.

Мой баш черно-белый, поэтому имя файла для каждого экрана называется измененной «выбранной» строкой с указанным там именем файла.

Woot!

ответил xtian 25 SunEurope/Moscow2011-12-25T23:31:25+04:00Europe/Moscow12bEurope/MoscowSun, 25 Dec 2011 23:31:25 +0400 2011, 23:31:25
2

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

vim -p file1.txt file2.txt

Если у вас уже открыт vim, вы можете открыть новый файл на новой вкладке, например:

:tabe file2.txt

После открытия вкладок используйте gt, чтобы просмотреть следующую вкладку и gT, чтобы просмотреть предыдущую вкладку.

Вы также можете перейти к первой вкладке с помощью 1gt, второй вкладкой с 2gt и т. д.

Вы можете закрыть вкладки, используя :tabc

Наконец, вы можете переместить текущую вкладку в n th местоположение с помощью :ntabm, где n - любое число, большее или равное 0.

ответил Cory Klein 15 +03002015-10-15T00:56:47+03:00312015bEurope/MoscowThu, 15 Oct 2015 00:56:47 +0300 2015, 00:56:47
1
argadd a/b c/d e/f

argadd ... добавит все файлы в args, а также в :ls /:buffers и позволит вам их редактировать.


См. :h arglsit & :h argedit & :h argsd


Кроме того, вы можете выполнять определенные действия только для args с помощью :argdo ..., и вы можете начать заново с помощью своих аргументов, выполнив :argsd*.

ответил Dylan 8 FriEurope/Moscow2017-12-08T19:28:43+03:00Europe/Moscow12bEurope/MoscowFri, 08 Dec 2017 19:28:43 +0300 2017, 19:28:43
0

Есть много способов сделать это. Первым, может быть, менее удобным, является вызов vim с файлами, которые вы хотите изменить, - create:

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 ...

Пожалуйста, дайте мне знать, если у вас есть проблема.

ответил aleroy 24 J000000Thursday14 2014, 09:57:28
0

Мне нравится использовать разделенные окна - как горизонтальные, так и вертикальные - для редактирования нескольких файлов.

Я использую tmux для более удобного управления этими окнами

https://tmux.github.io/ «Что такое терминальный мультиплексор? Он позволяет легко переключаться между несколькими программами в одном терминале, отделять их (они продолжают работать в фоновом режиме) и подключать их к другому терминалу. И делать гораздо больше. См. Руководство.»

Пример: просмотр файлов или запуск тестов справа, редактирование тестовых и исходных файлов слева:  введите описание изображения здесь>> </a> </p></body></html>

ответил Michael Durrant 2 Jpm1000000pmSat, 02 Jan 2016 16:16:59 +030016 2016, 16:16:59
0

:e #(filename) для переключения между двумя открытыми файлами

:p для предыдущего файла

:n для следующего файла

ответил bala selvam 3 Jpm1000000pmTue, 03 Jan 2017 14:49:19 +030017 2017, 14:49:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132