Question

I am trying to customize the mappings for vimdiff and make them similar to winmerge

In a vertical 2 way split, I want to map alt-left <a-left> to move current diff to left side and alt-right <a-right> to move current diff to right side.

For merging i can use :diffg and :diffp. But I need to know which split i am in so that i can use :diffg/:diffp in that.

Is there any way by which i can detect which split i am in. Specifically is there is any way by which i can know whether the cursor is in left split or right split

Related Question how-to-get-list-of-files-which-are-currently-being-diffed-in-vim

Was it helpful?

Solution

Assuming there are only two windows, the winnr() function will return 1 for the first window and 2 for the second window. You can also use winnr('$') to find out how many windows there are: :echo winnr('$').

You can also just use dp and do, then you don't need to jump betweem windows as much, and it's easier to reach than the arrow keys.

OTHER TIPS

Not an answer to your specific question, but here are some nice diff tweaks that might help.

"" Diff options; ignore whitespace.
set diffopt+=iwhite

I don't like the :diffon :diffoff because they mess with word wrap (turns it on when exiting diff). So i only set diff, scrollbind, foldmarker and 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>
"" }}}

Also, check out the DirDiff plugin for diffing directory trees if you haven't already...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top