在Vim中切换逗号分隔列表顺序的最快方法

时间:2014-09-13 11:24:15

标签: vim

我有一个像

这样的功能
myfunc(arg1 = whatever, arg2 = different)

我想将其转换为

myfunc(arg2 = different, arg1 = whatever)

实现此目的的最快命令序列是什么?假设光标位于第一个" m"。我最好的尝试是fadt,lpldt)%p

4 个答案:

答案 0 :(得分:1)

有一个vim插件:vim-exchange

  • 视觉选择arg1 = whatever
  • Shift x
  • 视觉选择arg2 = different
  • Shift x

答案 1 :(得分:0)

我建议你稍微更改它,以便它可以在光标所在的任何地方工作,以便它可以在任何参数上工作:

0f(ldt,lpldt)%p

我改变了你的方法后,我添加了0将光标移动到开头,我将fa更改为f(l,这样无论参数名称如何都可以使用。

现在你可以把它放到一个宏中,或者,如果你经常使用它,你可以把它作为一个映射:

nnoremap <C-k> 0f(ldt,lpldt)%p

我在这里随意选择了Ctrl-k,你可以随心所欲地使用它。

答案 2 :(得分:0)

我编写了一个用于操作名为Argumentative的函数参数的插件。有了它,你只需执行>,,光标所在的参数将向右移动。它还以i,a,

的形式提供参数文本对象

答案 3 :(得分:0)

使用纯vim,将光标放在行的开头:

%3dB%pldt,lp

这是我当场想到的最快(12杆)。 只要等号周围总是有空格,这应适用于所有名称。

%     " Jump to closing brace
3dB   " Delete to the beginning of 3 WORDS, backwards
%     " Jump to the beginning brace
p     " Paste the deleted text from the default register
l     " Move right one character
dt,   " Delete until the next comma
l     " Move right one character
p     " paste the deleted text from the default register

您也可以将其转换为宏,以便随时使用。