tags:

views:

93

answers:

2

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

+1  A: 

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.

too much php
dp do may be easy, but it doesn't come naturally to me. I have been forced on to vim from IDE world, but now i am trying to make vim map to what i used in IDE. This exercise has made me learn much more about vim than just commands
Yogesh Arora
just tested it and winnr solution works perfectly
Yogesh Arora
+1  A: 

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...

RymdPung