当前位置:  开发笔记 > 编程语言 > 正文

vim fu,交换方法调用的参数

如何解决《vimfu,交换方法调用的参数》经验,为你挑选了2个好方法。

在Vim中为方法调用交换两个参数的最有效方法是什么?

例如,我想改变:

call "hello mister 123", 2343

至:

call 2343, "hello mister 123" 

(假设光标位于行的开头.)

理想情况下,这个技巧适用于像

call "hello, world" , "goodbye, world"

Brian Carper.. 17

这个正则表达式将为您的示例做到:

:s/\vcall ("[^"]+"|[^,]+)\s*,\s*("[^"]+"|[^,]+)/call \2, \1/

如果您在其中一个参数中转义了引号和此类内容,则此正则表达式将需要逐渐变得更加讨厌.

实际上,我只是突出显示一个参数(在可视模式下),点击d,突出显示其他参数,然后点击p; Vim会很好地粘贴寄存器中的内容,覆盖突出显示的内容,并将删除的文本交换到寄存器中.然后移动光标p再次点击.突出显示,d突出显示,p移动光标,p是一种常见的组合,至少在我的vimming中.

所以将光标放在行的开头,第一个例子:

wva"dlvawpF,P

含义移过单词"call"(w),突出显示带引号的字符串(va"),删除它(d),向右移动一个空格(l),突出显示单词(vaw),粘贴(p),向后移动到逗号(F,),在它之前粘贴(P).

第二个例子:

wva"dlva"p_f,P

一旦习惯了移动命令,这并不难.



1> Brian Carper..:

这个正则表达式将为您的示例做到:

:s/\vcall ("[^"]+"|[^,]+)\s*,\s*("[^"]+"|[^,]+)/call \2, \1/

如果您在其中一个参数中转义了引号和此类内容,则此正则表达式将需要逐渐变得更加讨厌.

实际上,我只是突出显示一个参数(在可视模式下),点击d,突出显示其他参数,然后点击p; Vim会很好地粘贴寄存器中的内容,覆盖突出显示的内容,并将删除的文本交换到寄存器中.然后移动光标p再次点击.突出显示,d突出显示,p移动光标,p是一种常见的组合,至少在我的vimming中.

所以将光标放在行的开头,第一个例子:

wva"dlvawpF,P

含义移过单词"call"(w),突出显示带引号的字符串(va"),删除它(d),向右移动一个空格(l),突出显示单词(vaw),粘贴(p),向后移动到逗号(F,),在它之前粘贴(P).

第二个例子:

wva"dlva"p_f,P

一旦习惯了移动命令,这并不难.



2> Jim Stewart..:

查看sideways.vim,一个@AndrewRadev的插件.它可以处理移动参数和其他分隔列表项,具有一些很好的功能,例如将嵌套列表作为单个单元移动.它也处理没有括号的Ruby风格的方法调用.非常便利.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有