Я знаю, что могу открыть несколько файлов с vim
помощью чего-то вроде vim 2011-12*.log
, но как я могу переключаться между файлами и закрывать файлы по одному? Кроме того, как я могу сказать имя текущего файла, который я редактирую?
Я знаю, что могу открыть несколько файлов с vim
помощью чего-то вроде vim 2011-12*.log
, но как я могу переключаться между файлами и закрывать файлы по одному? Кроме того, как я могу сказать имя текущего файла, который я редактирую?
Ответы:
Прежде всего, в 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
Вы можете открыть другой файл, когда 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 на веб-страницах. Каждый раз, когда я набираю команду, даже не задумываясь и ... вау ... вкладка браузера пропала! Я постоянно забываю. Мне действительно нужно выучить новый ярлык.
Я задал похожий вопрос в суперпользователе,
"Как скопировать и вставить между различными окнами bash и файлами, открытыми с помощью VI?"
Ответ на мой вопрос был, что вы не можете, но вы можете открыть два файла в одном окне bash, используя :split
команду VIM :
$ vim file1
, откройте второй файл в VIM с помощью :split file2
команды.$ vim -o file1 file2
из Bash.:q
закрывается и :q!
принудительно завершается.Мой bash черно-белый, поэтому имя файла каждого экрана оформляется в виде перевернутой «выбранной» строки с указанным там именем файла.
Woot!
Я считаю, что наиболее удобный способ редактирования нескольких файлов - использование вкладок. Вы можете открыть несколько файлов на отдельных вкладках через командную строку, например, так:
vim -p file1.txt file2.txt
Или, если у вас уже открыт vim, вы можете открыть новый файл на новой вкладке, например:
:tabe file2.txt
Открыв вкладки, используйте gt
для просмотра следующей вкладки и gT
просмотра предыдущей вкладки.
Вы также можете перейти к первой вкладке с помощью 1gt
, второй вкладке с помощью 2gt
и т. Д.
Вы можете закрыть вкладки, используя :tabc
Наконец, вы можете переместить текущую вкладку в ту n
позицию, :ntabm
где n
любое число больше или равно 0
.
argadd a/b c/d e/f
argadd ...
добавит все файлы в args, а также в :ls
/ :buffers
и позволит вам редактировать их.
Смотрите :h arglsit
& :h argedit
&:h argsd
Кроме того, вы можете выполнять определенные действия только с аргументами :argdo ...
, и вы можете начать заново с аргументами, выполнив :argsd*
.
Есть много способов сделать это. Первый, возможно, менее удобный, это вызов 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
для следующего файла