经常,例如当我编写Latex代码时,我遇到了重新排列用逗号分隔的列表项的任务。如果两个项目都不在列表的开头或结尾,则会很快完成此操作。但如果他们处于边缘,就必须特别注意分离逗号。
作为一个例子考虑
\cite{GirR84, Tar00, Tem77}.
在vim中是否有一种聪明的方法可以将最后一项放在前面或中间位置?
答案 0 :(得分:10)
我实际上制作了一个插件来处理类似argumentative.vim的情况。 (对不起插头。)
Argumentative.vim提供以下映射:
[,
和],
动作将转到上一个或下一个参数<,
和>,
向左或向右移动参数i,
和a,
参数文本对象。例如da,
,ci,
或yi,
因此,使用此插件,您可以移至相关参数,然后根据需要多次执行<,
或>,
。它也可以计算,例如2>,
。
如果Tim Pope的优秀repeat.vim插件安装<,
,>,
可以通过.
命令重复使用。
答案 1 :(得分:4)
我在.vimrc
中有以下映射,我想我是从this tip on wikia获得的:
nnoremap <silent> gl "_yiw:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><c-o>/\w\+\_W\+<CR><c-l>
nnoremap <silent> gh "_yiw?\w\+\_W\+\%#<CR>:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><c-o><c-l>
gh
会将光标下方的字词向左移动,将gl
更改为右侧。
答案 2 :(得分:3)
您可以尝试使用vim插件vim-swap,非常强大且实用!
答案 3 :(得分:1)
从Vim Tips Wiki交换任意内容的另一种有趣方式:
:vnoremap <C-X> <Esc>`.``gvP``P