Разделение одного файла на несколько окон в Vim

1286
w17t

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

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

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

0
Этот вопрос действительно беспокоил меня, поэтому я нашел это: https://github.com/chrisbra/NrrwRgn Ilker Mutlu 7 лет назад 0

3 ответа на вопрос

2
Veen

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

:vsplit 

или же

:split 

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

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

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

ma gg zf'a 

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

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

:set foldmethod=manual 
1
DJMcMayhem

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

:vsplit 

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

<C-w>v 

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

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

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

:split 

или же

<C-w>n 

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

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

Это здорово, спасибо за ярлык, и приятно, что изменения сразу отражаются на обоих окнах, но что касается блокировки определенных строк, я не хочу, чтобы отображался весь файл, а только его часть, некоторые строки. w17t 8 лет назад 0
0
Ilker Mutlu

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


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

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

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

затем

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

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

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