我想使用 Ctrl+Shift+箭头键上下移动选择项,类似于其他编辑器。我目前在 .vimrc 中的内容如下:
" from https://superuser.com/a/825561
:behave mswin
:set clipboard=unnamedplus
:smap <Del> <C-g>"_d
:smap <C-c> <C-g>y
:smap <C-x> <C-g>x
:imap <C-v> <Esc>pi
:smap <C-v> <C-g>p
:smap <Tab> <C-g>1>
:smap <S-Tab> <C-g>1<
" from https://vi.stackexchange.com/a/2682
nnoremap <C-S-Up> :m-2<CR>
nnoremap <C-S-Down> :m+<CR>
inoremap <C-S-Up> <Esc>:m-2<CR>
inoremap <C-S-Down> <Esc>:m+<CR>
" enable syntax highlighting
syntax enable
" show line numbers
set number
" set tabs to have 4 spaces
set ts=4
" indent when moving to the next line while writing code
set autoindent
" expand tabs into spaces
set expandtab
" when using the >> or << commands, shift lines by 4 spaces
set shiftwidth=4
" show a visual line under the cursor's current line
set cursorline
" show the matching part of the pair for [] {} and ()
set showmatch
" enable all Python syntax highlighting features
let python_highlight_all = 1
" remove wrong indentation when pasting
augroup auto_comment
au!
au FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
augroup END
使用 Ctrl+Shift+ArrowUp/Down 移动一行很方便,但如果我选择文本然后尝试移动所选内容,则只会移动当前行,所选内容将被取消选择。我在谷歌上搜索没有找到帮助。非常感谢您的帮助!:-)
答案1
使用,添加到.vimrc
移动选择ctrl + shift + up
:ctrl + shift + down
vnoremap <C-S-Up> :m '<-2<CR>gv=gv
vnoremap <C-S-Down> :m '>+1<CR>gv=gv
答案2
对于视觉移动,您可以使用这些绑定:
xnoremap <C-S-Up> xkP`[V`]
xnoremap <C-S-Down> xp`[V`]
xnoremap <C-S-Left> <gv
xnoremap <C-S-Right> >gv
我个人CTRL+hjkl
更喜欢使用箭头键,但可以使用最适合您的键。
现在,为了在插入模式下移动当前行,我使用这个函数,它可以向上或向下移动 n 行。将它绑定到-1
和+1
效果很好。
function! MoveLineAndInsert(n) " -x=up x lines; +x=down x lines
let n_move = (a:n < 0 ? a:n-1 : '+'.a:n)
let pos = getcurpos()
try " maybe out of range
exe ':move'.n_move
call setpos('.', [0,pos[1]+a:n,pos[2],0])
finally
startinsert
endtry
endfunction
inoremap <C-S-Up> <Esc>`^:silent! call MoveLineAndInsert(-1)<CR>
inoremap <C-S-Down> <Esc>`^:silent! call MoveLineAndInsert(+1)<CR>
try
/块finally
和`^:silent!
映射的部分在这里使其在缓冲区的边缘优雅地降级。
编辑
为了实现这一点,
答案3
使用,添加到.vimrc
移动选择ctrl + shift + up
:ctrl + shift + down
noremap <C-S-Up> :m -2 <enter>
noremap <C-S-Down> :m +1 <enter>
inoremap <C-S-Up> <esc> :m -2 <enter>
inoremap <C-S-Down> <esc> :m +1 <enter>
使用,添加到.vimrc
移动选择ctrl + shift + k
:ctrl + shift + j
noremap <C-S-k> :m -2 <enter>
noremap <C-S-j> :m +1 <enter>
inoremap <C-S-k> <esc> :m -2 <enter>
inoremap <C-S-j> <esc> :m +1 <enter>