在Vim中切换逗号分隔列表顺序的最快方法
Supose我有一个函数,比如在Vim中切换逗号分隔列表顺序的最快方法,vim,Vim,Supose我有一个函数,比如 myfunc(arg1 = whatever, arg2 = different) 我想把它转换成 myfunc(arg2 = different, arg1 = whatever) 实现这一点的最快命令序列是什么?假设光标位于第一个“m”上。我的最佳尝试是fadt,lpldt)%p我建议您稍微更改它,以便它可以从光标所在的位置工作,并且可以在任何参数上工作: 0f(ldt,lpldt)%p 我对您的方法所做的更改是添加了0以将光标移动到开头,并将fa更改为
myfunc(arg1 = whatever, arg2 = different)
我想把它转换成
myfunc(arg2 = different, arg1 = whatever)
实现这一点的最快命令序列是什么?假设光标位于第一个“m”上。我的最佳尝试是
fadt,lpldt)%p
我建议您稍微更改它,以便它可以从光标所在的位置工作,并且可以在任何参数上工作:
0f(ldt,lpldt)%p
我对您的方法所做的更改是添加了0
以将光标移动到开头,并将fa
更改为f(l
,这样无论参数名称如何,它都可以工作
现在,您可以将其放入宏中,或者,如果您经常使用它,可以将其作为映射:
nnoremap <C-k> 0f(ldt,lpldt)%p
nnoremap 0f(ldt,lpldt)%p
我在这里随意选择了Ctrl-k,你可以使用任何你喜欢的东西。有一个vim插件:
- 目视选择
arg1=任何内容
- 按Shiftx键
- 目视选择
arg2=不同
- 按Shiftx键
>,
,光标所在的参数将向右移动。它还提供了参数文本对象,形式为I,
和a,
,使用纯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
您也可以将其转换为宏,以便随时使用。我认为您的尝试相当不错。我想不出更好的方法。