在Netbeans中,Ctrl-Shift-Up / Down复制当前行或选择,Alt + Shift +向上/向下/向左/向右移动当前行或选择。如何在VIM 7中实现这一目标?
到目前为止,我可以使用这些映射来使Alt + Shift + Up / Down工作:
: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
我仍然坚持:
答案 0 :(得分: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>
答案 1 :(得分:0)
不要输入键序列,而是按Ctrl-V(或Windows上的Ctrl-Q),然后按键序列。
换句话说,而不是输入:
&lt; A - S - u p &gt;
输入:
Ctrl - Q Alt - Shift - Up
我真的不明白为什么,但由于某种原因,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 - Shift - K ,至少在我的机器上。)