Можно ли открыть часть файла как отдельное окно с вертикальным разделением в Vim?

Скажем, у меня есть файл с сотнями строк, и начиная с сороковой и вплоть до шестидесятых строк, я хочу, чтобы он отображался как отдельное заблокированное окно в главном окне как разделенная "вкладка", чтобы лучше сфокусироваться на этой части файла, и изменения, которые я там сделал, отразятся и на всем файле в главном окне.

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

3 ответа3

2

Как уже указывалось, вы можете использовать сплиты, отображающие один и тот же буфер, чтобы получить большую часть пути туда.

:vsplit

или же

:split

Что касается отображения только определенного раздела файла, один из способов сделать это - сложить части, которые вам не интересны. Существует несколько способов складывания произвольных частей файлов.

Самый простой способ - выбрать линии, которые вы не хотите видеть в визуальном режиме, и использовать отображение zf чтобы сложить их.

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

ma
gg
zf'a

Складывание выполняется для каждого окна (разделение), поэтому любые складки в одном окне не влияют на другие окна, даже если в каждом из них отображается один и тот же буфер.

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

:set foldmethod=manual
1

Это на самом деле довольно просто, и, к счастью, не нужно никаких настроек. Как только вы откроете свой файл, запустите

:vsplit

или сочетание клавиш

<C-w>v

который делает то же самое. Это сделает другое окно в тот же буфер. Хорошая вещь в этом состоит в том, что любое изменение, которое вы делаете в одном разделении, будет автоматически применено к другому разделению. Вам даже не нужно экономить!

Это работает так, потому что у вас есть только один буфер, только несколько представлений в одном буфере.

Вы также можете сделать

:split

или же

<C-w>n

который работает так же, но с горизонтальным разделением.

Этот общий подход затем может быть расширен до произвольного числа буферов, разделений и вкладок.

0

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


Вдохновленный этим: http://vim.1045645.n5.nabble.com/How-to-read-specific-lines-from-a-file-into-current-buffer-td1180012.html

Допустим, у вас открыт ~/.vimrc ,

Вы могли бы сначала открыть новый файл в разделе split :vsp file

затем

:r! sed -n '22,25p;26q' ~/.vimrc

поместить строки с 22 по 25 в file

Я уверен, что это может быть написано и реорганизовано. Я посмотрю на возможности, когда у меня будет время.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .