Как переключаться между вертикальным и горизонтальным разделением в vimdiff?
Я уже знаю, Как использовать переменную diffopt
для запуска режима diff с горизонтальными / вертикальными разделениями, но не знаю, как переключаться между ними, когда у меня уже есть 2 открытых файла для сравнения.
Я попробовал решение "принятого ответа", найденное в этом старом посте, но безрезультатно. Команды Ctrl+W не работали для меня. Может быть, потому, что я запускаю gVim в дружественном к Windows режиме?
3 ответа:
Следующая команда изменит вертикальное разделение на горизонтальное:
ctrl+w затем J
Чтобы вернуться к вертикальному разбиению, используйте либо:
ctrl+w H или ctrl+w L
Для получения дополнительной информации о перемещении окон:
:h window-moving :h ctrl-w_J :h ctrl-w_K :h ctrl-w_H :h ctrl-w_L
Я сильно опаздываю, но, возможно, это интересное решение. Решение @PeterRincker работает только в том случае, если у вас открыто всего несколько окон без внутренних окон.
Я нашел эту (полезную) функцию в своей конфигурации среды выполнения, которой я хотел бы поделиться с u.она предназначена для отображения в качестве привязки ключей и позволяет пользователю переключать текущее разделение на указанное. Отметьте, что он не переключается между вертикальным и горизонтальным, но пользователь говорит, Какой из них ему нравится (может быть в данный момент активным, также если это сценарий не имеет смысла.) Дерево оконVim всегда имеет два окна в качестве "партнеров". Эффекты этого также заметны при изменении размера окон. Что я хочу сказать: вызовите функцию, если она применяется к текущему активному окну и его" партнерскому " окну." Switch to a vertical or horizontal split between two windows. " Switching to currently used split results into the equal split. " This is between the current window and the one window which is focused, when close the active window. " This function does not adjust the windows height after the switch, cause this can't work correctly. " " Arguments: " horizontal - Boolean to differ between both layouts. " function! s:switch_window_split(horizontal) abort let l:bufnr = bufnr('%') " Get current buffer number to restore it in the new window. if a:horizontal | let l:vert = '' | else | let l:vert = 'vert ' | endif " Close current window and open new split with the cached buffer number. wincmd c execute l:vert . 'sbuffer ' . l:bufnr endfunction " Switch split layout. nnoremap <leader>wS :<C-u>call <SID>switch_window_split(v:true)<CR> nnoremap <leader>wV :<C-u>call <SID>switch_window_split(v:false)<CR>
К сожалению, в настоящее время он все еще изменяет размер окна и не оставляет форму такой, какая она есть. Я работаю над этим, но это не так просто сделать, потому что я должен знать форму " партнера" окно.