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


169

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


Ответы:


172

Прежде всего, в vim вы можете ввести :(двоеточие), а затем help help, аля :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

25
: wn - это сокращение от: wnext.
— Kowh

Вы также можете сделать: rew, чтобы вернуться к первому файлу. : e # переключает между 2 файлами. : п! идет к следующему файлу без записи. Также посмотрите на: установить автозапись.
— Саскиха

4
Относительно нескольких буферов / окон / вкладок см. Также StackOverflow. Как эффективно работать с несколькими файлами в Vim? и использование вкладок Vim, таких как буферы .
— mmoya

1
Глава 22 «Поиск файла для редактирования» также оказалась очень полезной. Он использует обозреватель каталогов для редактирования файлов, которые вы хотите.
— Гарри Морено

wn офигенный
— Раммайур

54

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

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

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


16
Этот. Также открывайте файлы во вкладках с помощью:vim -p file1 file2
— Не сейчас

AMAZE! Я никогда не сталкивался с этим раньше, несмотря на то, что использовал vim годами. Это меняет все .
— me_and

Обратите внимание, что вкладки не предназначены для работы с несколькими файлами. Они предназначены для работы с несколькими макетами . Смотрите статью .
— patryk.beza

5
Если вы уже в vim и хотите добавить другой файл, вы можете использовать: :argadd filenameи затем :nextк нему. Кроме того, вы можете использовать, :argdel filenameчтобы удалить один из файлов в редактировании.
— Luv2code

36

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

: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


1
:bwзакрыть файл хаха. Не забудьте прочитать справку, :bwгде говорится, что вы должны использовать ее, только если знаете, что делаете. Это не имеет большого значения, но если вы не хотите стереть все отметки и информацию о файле, лучше использовать :bdили :qкак обычный человек
— Дилан

1
Дополнительная информация на :bwслучай, если вам интересно: vi.stackexchange.com/questions/2212/…
— wisbucky

26

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

:sp
:vsp

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


4
Вы можете использовать :vsвместо:vsp
— Khaja Minhajuddin

2
Или даже только Ctrl+W, vдля вертикального разделения и Ctrl+W, sдля горизонтального разделения.
— Руслан

1
Я использую в CTRL+Wтечение многих лет, и в последнее время я много редактирую VI на веб-страницах. Каждый раз, когда я набираю команду, даже не задумываясь и ... вау ... вкладка браузера пропала! Я постоянно забываю. Мне действительно нужно выучить новый ярлык.
— Jeach


10

Я задал похожий вопрос в суперпользователе,

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

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

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

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

Woot!


6

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

vim -p file1.txt file2.txt

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

:tabe file2.txt

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

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

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

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


6
argadd a/b c/d e/f

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


Смотрите :h arglsit& :h argedit&:h argsd


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


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

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


0

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

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

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

Пример: просмотр файлов или выполнение тестов справа, редактирование тестовых и исходных файлов слева: введите описание изображения здесь


0

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

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

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


Добро пожаловать в U & L, это вряд ли что-то добавит к другому ответу, опубликованному несколько лет назад.
— Архемар
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.