Доступ к нескольким файлам в VIM
В книге "Unix в двух словах" обсуждается вопрос о доступе к нескольким файлам на страницах 572-573. Кажется, что очень полезные команды, такие как ": e", ": e #", ": e new_file", ": n files", ": args", ": prev" и ": n!". Команды меня путают:
": n Редактировать следующий файл в списке файлов."
": args Отобразить список файлов для редактирования.
": prev Редактировать предыдущий файл в списке файлов."
Я не вижу никакого реального списка, когда я это делаю: args. На углу есть только небольшой текст. Я хотел бы видеть все файлы, к которым я обращался с ": e", то есть список файлов в буфере.
Где я могу увидеть список, когда выполняю команду ": n files"? Что должны делать команды "prev" и ": n"? Я получил сообщение об ошибке:
Редактируется только один файл.
Ответы
Ответ 1
Я не читал эту книгу, но я попытаюсь объяснить, как vim обрабатывает файлы.
У Vim есть буферы. Вы открываете каждый файл с помощью:
:e name_of_the_file.txt
(загружает файл в буфер, т.е. "открывает файл" )
Вы также можете:
:e *.txt
Полезные опции при этом
:set laststatus=2
(всегда показывать статусную линию)
:set wildmenu
(для облегчения открытия файлов)
Если у вас есть стандартный vim с плагином netrw, вы можете:
:e .
(для одного из менеджеров файлов vim, так сказать)
Управление буферами:
:ls
предоставит вам список открытых в данный момент буферов (файлов)
:bnext
и :bprevious
(или :bn
и :bp
) позволяют вам циклически выполнять буферы
:bd
закрывает буфер/файл (выполняется буфер)
Другие типы буферов служат для других целей (yanking/inserting, временный, vim internal,... и т.д.)
Ответ 2
В дополнение к тому, что сказал Джонатан Леффлер, если вы не вызываете Vim с несколькими файлами из командной строки, вы можете установить список аргументов Vim после открытия Vim через:
:args *.c
Обратите внимание, что список аргументов отличается от списка открытых буферов, которые вы получаете от :ls
. Даже если вы закроете все открытые буферы в Vim, список аргументов останется прежним. :n
и :prev
могут открыть совершенно новый буфер в Vim (если буфер для этого файла еще не открыт) или может перейти в существующий буфер.
Аналогично, вы можете открывать несколько буферов в Vim, не затрагивая список аргументов (или даже если список arg пуст). :e
открывает новый буфер, но не обязательно влияет на список аргументов. Список открытых буферов и список аргументов независимы. Если вы хотите перебирать список открытых буферов, а не перебирать список аргументов, используйте :bn
и :bp
и друзей.
Ответ 3
Для тех команд, которые имеют смысл, вы делаете:
vim *.c
в каталоге, где есть, например, 20 файлов C. В одном файле нет следующего или предыдущего или значимого списка файлов.
Ответ 4
The: n: p: ar: rew: last работают в списке аргументов командной строки.
например.
> touch aaa.txt bbb.txt ccc.txt
> gvim *.txt
vim открывается в aaa.txt
:ar gives a status line
[aaa.txt] bbb.txt ccc.txt
:n moves to bbb.txt
:ar gives the status line
aaa.txt [bbb.txt] ccc.txt
:rew rewinds us back to the start of the command line arg list to aaa.txt
:last sends us to ccc.txt
:e ddd.txt edits a new file ddd.txt
:ar gives the status line
aaa.txt bbb.txt [ccc.txt]
Таким образом, набор команд работает только в списке аргументов начальной командной строки.
Ответ 5
Чтобы уточнить, у Vim есть список аргументов, список буферов, окна и закладки. Список аргументов - это список файлов, с которыми вы вызывали vim (например, vim file1 file2); Команды: n и: p работают с этим. Список буферов - это список копий файлов, которые вы редактируете, как emacs. Обратите внимание, что все файлы, загруженные при запуске (в списке аргументов), также находятся в списке буферов. Попробуйте: help buffer-list для получения дополнительной информации об обоих.
Windows - видовые экраны для буферов. Думайте о окнах как о "столах", на которые вы можете поместить буферы для работы над ними. Windows может быть пустым или отображать буферы, которые также могут отображаться в других окнах, которые вы можете использовать, например, для одновременного просмотра двух разных областей одного и того же буфера. Попробуйте: help windows для получения дополнительной информации.
Вкладки - это коллекции окон. Например, у вас может быть одна вкладка с одним окном, а другая вкладка с двумя вертикально разделенными окнами. Попробуйте: вкладку справки для получения дополнительной информации.