1

我正在尝试自定义 vimdiff 的映射并使它们类似于 winmerge

在垂直 2 路拆分中,我想映射 alt-left<a-left>以将当前差异移动到左侧,而 alt-right<a-right>将当前差异移动到右侧。

对于合并,我可以使用:diffgand :diffp。但我需要知道我在哪个拆分,以便我可以使用:diffg/:diffp它。

有什么方法可以检测到我在哪个分割中。具体来说,有什么方法可以让我知道光标是在左分割还是右分割

Related Question 如何在 vim 中获取当前正在区分的文件列表

4

2 回答 2

1

假设只有两个窗口,该winnr()函数将返回1第一个窗口和2第二个窗口。您还可以使用winnr('$')来查看有多少个窗口::echo winnr('$')

也可以只使用dpand do,这样就不需要在窗口之间跳转太多了,而且比方向键更容易到达。

于 2010-03-19T03:05:40.253 回答
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 插件以区分目录树...

于 2010-03-19T09:36:15.837 回答