我正在尝试自定义vimdiff的映射并使它们类似于winmerge
在垂直双向分割中,我想映射alt-left <a-left>
以将当前差异移动到左侧,并使用alt-right <a-right>
将当前差异移动到右侧。
对于合并,我可以使用:diffg
和:diffp
。但我需要知道我所处的分裂,以便我可以使用:diffg/:diffp
。
有什么方法可以让我发现我在哪个区域。 具体来说,我可以通过任何方式知道光标是左分割还是右分割
Related Question
how-to-get-list-of-files-which-are-currently-being-diffed-in-vim
答案 0 :(得分:1)
假设只有两个窗口,winnr()
函数将为第一个窗口返回1
,为第二个窗口返回2
。您还可以使用winnr('$')
查看有多少个窗口::echo winnr('$')
。
您也可以使用dp
和do
,然后您不需要在窗口之间跳转,并且比箭头键更容易到达。
答案 1 :(得分:1)
不是您具体问题的答案,但这里有一些不错的差异调整可能有所帮助。
"" Diff options; ignore whitespace.
set diffopt+=iwhite
我不喜欢:diffon:diffoff因为它们混乱了自动换行(在退出diff时将其打开)。所以我只设置diff,scrollbind,foldmarker和foldcolumn。
"" Diff 'd' {{{
nmap <silent> ,dd :set diff scb fdm=diff fdc=2<CR>
nmap <silent> ,dD :windo :set diff scb fdm=diff fdc=2<CR>
nmap <silent> ,do :set nodiff noscb fdm=manual fdc=0<CR>
nmap <silent> ,dO :windo :set nodiff noscb fdm=manual fdc=0<CR>
"nmap <silent> ,dd :diffthis<CR>
"nmap <silent> ,dD :windo :diffthis<CR>
"nmap <silent> ,do :diffoff<CR>
"nmap <silent> ,dO :windo :diffoff<CR>
nmap <silent> ,du :diffupdate<CR>
"" }}}
另外,如果您还没有...,请查看用于区分目录树的DirDiff插件。