2010-07-12 22 views
1

在Netbeans中,Ctrl-Shift-Up/Down複製當前行或選擇,Alt + Shift +向上/向下/向左/向右移動當前行或選擇。 VIM 7中如何實現這一點?在VIM中實現Netbeans風格的行移動和複製

到目前爲止,我能夠得到Alt + Shift +向上/向下使用這些映射工作:

:nmap <A-S-up> :m .-2<Enter> 
:imap <A-S-up> <Esc>:m .-2<Enter>gi 
:vmap <A-S-up> :m .-2<Enter>gv 

:nmap <A-S-down> :m .+1<Enter> 
:imap <A-S-down> <Esc>:m +1<Enter>gi 
:vmap <A-S-down> :m '>+1<Enter>gv 

我仍然strugging:

  1. 有ALT + SHIFT + j/k像Alt + Shift +向上/向下一樣工作。只需將「up」更改爲「k」即可。
  2. Ctrl-Shift-Up/Down映射不起作用。這是一個無法映射的序列嗎?
  3. 要將Alt + Shift +向上和Alt + Shift + k映射到同一個命令,是否有比將地圖命令複製到另一行更好的方法?

回答

1

並非所有的這VIM工作,但它在GVIM所有作品。

" Alt+Shift+Up/k moves content up 
:nmap <M-S-Up> :m .-2<Enter> 
:nmap <M-S-k> <M-S-Up> 
:imap <M-S-Up> <Esc>:m .-2<Enter>gi 
:imap <M-S-k> <M-S-Up> 
:vmap <M-S-Up> :m .-2<Enter>gv 
:vmap <M-S-k> <M-S-Up> 

" Alt+Shift+Down/j moves content down 
:nmap <M-S-Down> :m .+1<Enter> 
:nmap <M-S-j> <M-S-Down> 
:imap <M-S-Down> <Esc>:m .+1<Enter>gi 
:imap <M-S-j> <M-S-Down> 
:vmap <M-S-Down> :m '>+1<Enter>gv 
:vmap <M-S-j> <M-S-Down> 

" Ctrl+Shift+Up/k copies content up 
:nmap <C-S-Up> :co .-1<Enter> 
:nmap <C-S-k> <C-S-Up> 
:imap <C-S-Up> <Esc>:co .<Enter>gi 
:imap <C-S-k> <C-S-Up> 
:vmap <C-S-Up> :co '><Enter>gv 
:vmap <C-S-k> <C-S-Up> 

" Ctrl+Shift+Down/j copies content down 
:nmap <C-S-Down> :co .<Enter> 
:nmap <C-S-j> <C-S-Down> 
:imap <C-S-Down> <Esc>:co .<Enter>gi<Down> 
:imap <C-S-j> <C-S-Down> 
:vmap <C-S-Down> :co .-1<Enter>gv 
:imap <C-S-j> <C-S-Down> 

" Alt+Shift+Left/h shifts content left 
:nmap <M-S-Left> << 
:nmap <M-S-h> <M-S-Left> 
:imap <M-S-Left> ^D 
:imap <M-S-h> <M-S-Left> 
:vmap <M-S-Left> <gv 
:vmap <M-S-h> <M-S-Left> 

" Alt+Shift+Right/l shifts content right 
:nmap <M-S-Right> >> 
:nmap <M-S-l> <M-S-Right> 
:imap <M-S-Right> ^T 
:imap <M-S-l> <M-S-Right> 
:vmap <M-S-Right> >gv 
:vmap <M-S-l> <M-S-Right> 
0

除了輸入鍵序列外,請按Ctrl-V(或Windows上的Ctrl-Q),然後按鍵序列。

換句話說,而不是鍵入這樣的:

<-小號-üp>

類型此:

按Ctrl - QAlt鍵 - - 最多

我真的不明白爲什麼,但由於某種原因,Vim並不在路上所有的組合鍵轉換你認爲它會。例如,Alt - Shift - K對我來說顯示爲Ë,但關鍵映射仍然有效。和Alt - Shift - Up轉換爲<M-S-Up>而不是<A-S-Up>

至於你的第三個問題,將一個組合鍵映射到另一個。

:nmap <A-S-up> :m .-2<Enter> 
:nmap Ë <A-S-up> 

(請記住,ËAlt鍵 - - ķ,至少在我的機器上)

+0

順便說一句,Ctrl-V適用於GVIM,但不適用於VIM。 – 2010-07-12 19:20:58