Доступ к нескольким файлам в 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 для получения дополнительной информации.

Вкладки - это коллекции окон. Например, у вас может быть одна вкладка с одним окном, а другая вкладка с двумя вертикально разделенными окнами. Попробуйте: вкладку справки для получения дополнительной информации.