以逗号分隔的列表交换项目

Jan*_*Jan 5 vim

通常,例如,当我编写Latex代码时,我遇到了重新排列用逗号分隔的列表项的任务.如果两个项目都不在列表的开头或结尾,则会很快完成此操作.但如果他们处于边缘,就必须特别注意分离逗号.

作为一个例子考虑

\cite{GirR84, Tar00, Tem77}.
Run Code Online (Sandbox Code Playgroud)

在vim中是否有一种聪明的方法可以将最后一项放在前面或中间位置?

Pet*_*ker 11

我实际上制作了一个插件来处理类似的情况,名为argumentative.vim.(抱歉插头.)

Argumentative.vim提供以下映射:

  • [,以及],前一个或下一个论点的动议
  • <,>,向左或向右移动一个参数
  • i,a,参数文本对象.例如da,,ci,yi,

因此,使用此插件,您可以移动到相关参数,然后根据需要执行一次<,>,多次.它也可以计算,例如2>,.

如果您安装了Tim Pope的优秀repeat.vim插件,<,并且>,.命令可重复使用.


Tho*_*hor 5

我有以下映射.vimrc,我想我来自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>
Run Code Online (Sandbox Code Playgroud)

gh将在光标下方向左和gl向右交换单词。