vim - 是否有一个好的 Vi(m) 命令用于在函数调用中转置参数? Emacs 的奖励积分

标签 vim emacs keyboard-shortcuts

例如,如果我有一些代码,如:

foo = bar("abc", "def", true, callback);

是否有一个很好的命令可以将 true 移动到第 1 个或第 2 个位置而保持逗号完好无损?

P.S 作为奖励,我的 friend 想知道这是否也适用于 Emacs。

最佳答案

在 Vim 中,如果将光标放在第一个单词的开头并执行 dWWP那么就会有想要的效果。这是一个分割:

dW   delete the current word, including the comma and the following whitespace
W    move to the start of the next word
P    insert the deleted text before the cursor

如果在要交换的对之后还有更多参数,这将起作用 - 如果只有两个参数或您想交换最后两个参数,则需要修改它,因为它将在右括号后粘贴文本。

或者,您可以使用正则表达式替换:
:%s/(\([^,]\+\),\s*\([^,)]\+\)/(\2, \1/ 

这将找到左括号后的前两个参数并交换它们。

更新 :

搜索 vim.org 找到了 swap parameters插件,它应该完全符合您的要求,并且可以处理上述任何一种方法都无法处理的情况。

关于vim - 是否有一个好的 Vi(m) 命令用于在函数调用中转置参数? Emacs 的奖励积分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3490897/

相关文章:

emacs - 如何在组织模式下为下一个循环/重复任务取消勾选复选框

javascript - 为您的 HTML5 应用程序创建键盘快捷键?

visual-studio - Visual Studio 中类似 ViM 的搜索突出显示可能吗?

session - 如何在 Vim 的状态行中添加当前 session 文件名?

vim - 奇怪的 vimscript 冒号语法

linux - emacs:未定义终端类型 xterm-256color

emacs - 为什么 elisp 局部变量在这种情况下保持其值?

Xcode Command-Slash 注释快捷方式有时仅有效

java - 将组合键绑定(bind)到 JFrame

vim - 如何每隔一行删除,并在选择后粘贴删除的结果?