7

经常,例如,当我编写 Latex 代码时,我遇到了重新排列列表中以逗号分隔的项目的任务。如果两个项目都不在列表的开头或结尾,则可以快速完成此操作。但如果它们处于边缘,则必须特别注意分隔逗号。

作为一个例子考虑

\cite{GirR84, Tar00, Tem77}.

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

4

4 回答 4

12

我实际上制作了一个插件来处理类似的情况,称为argumentative.vim。(对不起插头。)

Argumentative.vim 提供以下映射:

  • [,以及],将转到上一个或下一个参数的动议
  • <,并将>,论点左移或右移
  • i,a,参数文本对象。例如da,ci,yi,

因此,使用此插件,您可以移动到有问题的论点,然后根据需要执行一次<,>,多次。它也可以计数,例如2>,

如果您安装了 Tim Pope 出色的repeat.vim插件<,,并且>,可以使用该.命令进行重复。

于 2013-02-07T00:04:55.700 回答
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>

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

于 2013-02-06T10:58:08.317 回答
3

从Vim Tips Wiki交换任意事物的另一种有趣方式:

:vnoremap <C-X> <Esc>`.``gvP``P
于 2013-02-06T11:21:52.113 回答
3

你可以试试 vim 插件vim-swap,非常强大和有用!

于 2017-03-22T15:59:02.693 回答