我的 Vim 有個功能,是從別的編輯器/IDE 抄來的:
按著 Shift 上下移動,就能移動某行程式碼。
選取 n 行再按著 Shift 上下移動,甚至能一次移動多行。
這樣的好處也很明顯,就不用再 DD
(delet a line)然後再 y
(yank),可以直接上下移動該行程式碼,操作速度上快很多,也蠻順手的。
config 裡的設定也很簡單,把這段放在 ~/.vimrc
裡面就好。
" move line up/down
nnoremap <S-DOWN> :m .+1<CR>==
nnoremap <S-UP> :m .-2<CR>==
inoremap <S-DOWN> <Esc>:m .+1<CR>==gi
inoremap <S-UP> <Esc>:m .-2<CR>==gi
vnoremap <S-DOWN> :m '>+1<CR>gv=gv
vnoremap <S-UP> :m '<-2<CR>gv=gv
若不想要用 shift
而想要用其他的,就只要把 <S-UP>
和 <S-DOWN>
中的 S 改成對應的字就好,ctrl
是 C,其他我就不太確定了。
記得之前在研究的時候還有看到很多別種寫法(有的也很 hack,直接 ddjy
之類的XD),我自己測試的結果上面這段是最好用也最穩定的,而且就算是在 insert mode 和 visual mode 也都能運作得很優雅。
在 visual mode 也能運作的意思就是,我們可以先 shift+v
選取 n 行,再按 shift+up/down
就能一次移動多行,這超級方便的啊。
另外還有個附加效果:在移動的時候,我的編輯器還會自動幫選中的行進行縮排。有時候要做 beautify 就直接選取然後移上移下就完成了。雖說這效果還不確定是不是因為我的其他設定值所導致的,還沒有去研究,之後再考慮要不要抓時間查看看。
Update: 後來經過 telegram 的朋友提醒,發現自動進行縮排的是指令後面的 ==
的效果。
I like to move it move it~
其他連結
- 本站其他和 Vim 相關的文章: vim
- www.vim.tw
- Vim Taiwan 的 telegram group: http://t.me/vim_tw