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

时间:2009-04-16 18:03:26

标签: vim

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

assert_equal value, expected

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

assert_equal expected, value

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

6 个答案:

答案 0 :(得分:6)

通过正则表达式:

:s/\v([^, ]+)(\s*,\s*)([^, ]+)/\3\2\1/

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

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

将光标放在要翻转的行上,然后点击F5

答案 1 :(得分:5)

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

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

答案 2 :(得分:1)

映射组合键以执行命令:

:s/^assert_equal \(.*\), \(.*\)$/assert_equal \2, \1

答案 3 :(得分:1)

我一直喜欢正则表达式搜索和替换这些类型的任务:

:s/\(\w*\), \(\w*\)/\2, \1/

将逗号分隔列表中的第一个单词与第二个单词交换。

答案 4 :(得分:0)

哼......我会说“tdwxx $ i,^ [”tp但这不是真的有效或简单,只是快速输入......

答案 5 :(得分:0)

对于这个简单的事情,我只想制作一个小宏

qadf ea, ^[pxxq

然后@a远离