2010-03-18 54 views
1

我想自定義映射vimdiff同時,使他們類似的WinMerge如何檢測Vim窗口的位置

在垂直2路分裂,我要地圖ALT左<a-left>移動當前DIFF向左側移動,並右移<a-right>將當前差異移至右側。

對於合併我可以使用:diffg:diffp。但我需要知道我在哪個分組,以便我可以在那裏使用:diffg/:diffp

有沒有什麼辦法讓我能夠檢測出分裂我很英寸 特別是有什麼辦法讓我可以知道光標是否位於左拆分或向右分流

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

+0

我喜歡這個問題,但我建議您嘗試不使用箭頭。 Vim如此高興的一部分是你不必移動你的手! :)左右使用類似alt和< and >的東西會踢屁股! (雖然如果你有水平的差異是沒有意義的,但我很少這樣做)。 – Hannes 2010-03-19 09:26:27

+0

我使用的是''和'',因爲我也映射了''和''移動到next或prev diff。這只是讓事情更直觀。 正如我已經說過,我這樣做是因爲vim doesnt自然而然地給我,我更習慣於與IDE和eclipe/visual studio – 2010-03-19 15:48:17

回答

1

假設只有兩個窗口,winnr()函數將爲第一個窗口返回1,爲第二個窗口返回2。您也可以使用winnr('$')找出有多少個窗口::echo winnr('$')

你也可以只使用dpdo,那麼你不需要在窗口之間跳過那麼多,而且比箭頭鍵更容易到達。

+0

dp做可能很容易,但它不會自然而然地給我。我一直被迫從IDE的世界,但現在我正在嘗試使vim映射到我在IDE中使用。這個練習讓我學到了更多關於vim的知識,而不僅僅是命令 – 2010-03-19 04:34:13

+0

剛剛測試過它並且winnr解決方案完美無缺 – 2010-03-19 15:43:00

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插件版本比較的目錄樹,如果你還沒有準備好......