在vim中反转逗号分隔列表的最快方法是什么?

ben*_*ein 10 vim

我经常必须更正以下rails代码:

assert_equal value, expected
Run Code Online (Sandbox Code Playgroud)

assert_equal的两个参数是乱序的,应该是:

assert_equal expected, value
Run Code Online (Sandbox Code Playgroud)

在vim中,从第一行到第二行的最有效方法是什么?

Bri*_*per 6

通过正则表达式:

:s/\v([^, ]+)(\s*,\s*)([^, ]+)/\3\2\1/
Run Code Online (Sandbox Code Playgroud)

如果您经常这样做,您可以制作一张地图,例如:

:nmap <F5> :s/\v([^, ]+)(\s*,\s*)([^, ]+)/\3\2\1/<CR>
Run Code Online (Sandbox Code Playgroud)

将光标放在要翻转和点击的行上F5.


sou*_*rge 5

这个将光标所在的单词与下一个单词交换 - 只需在命令模式下按F9:

:map <F9> "qdiwdwep"qp
Run Code Online (Sandbox Code Playgroud)
  • "qdiw:将光标所在的字放入缓冲区'q'
  • dw:删除所有字符到下一个单词的开头(可能是逗号+空格)
  • e:转到结尾
  • p:粘贴(逗号+空格)
  • "qp:粘贴缓冲区'q'(第一个字)