Переключиться в разделенное окно на одной строке - PullRequest
9 голосов
/ 24 августа 2011

У меня есть два буфера, открытых в vim с использованием вертикального разделения, которые связаны с помощью: set scrollbind.

Есть ли способ переключаться между окнами, чтобы курсор оставался в той же (относительной) строке, когдаЯ переключаюсь между ними с помощью команд ctrl + w?

Ответы [ 3 ]

6 голосов
/ 24 августа 2011

Картография будет делать то, что вам нужно

Сделайте это в левом окне:

:nmap <right> :let linenum=getpos('.')[1]\|:wincmd l\|:call cursor(linenum,0)<cr> 

и сделайте это в правом окне:

:nmap <left> :let linenum=getpos('.')[1]\|:wincmd h\|:call cursor(linenum,0)<cr>

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

Edit:

Я не внимательно прочитал ваш вопрос (позор мне! :).

Вот как получить именно то, что вы хотели:

В левом окне:

:nnoremap <right> :let offset=winline()\|wincmd l\|exe 'normal ' . offset . 'H'<cr>

и справа:

:nnoremap <left> :let offset=winline()\|wincmd h\|exe 'normal ' . offset . 'H'<cr>

Веселись!

2 голосов
/ 25 августа 2011

В Vim версии 7.3 добавлена ​​опция cursorbind:

Когда эта опция установлена, как курсор в текущем окно перемещает другие связанные с курсором окна (окна, которые также имеют эта опция установлена) переместите свои курсоры на соответствующую строку и колонка. Эта опция полезна для просмотра различия между двумя версиями файла (см. «diff»); в режиме сравнения, вставленные и удаленные строки (но не символы внутри строки) Учтено.

1 голос
/ 24 августа 2011

^W+r (переключение буферов), затем ^W^W (возврат курсора назад)

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