如何将一个函数粘贴到一个单词上来包装它? (VIM)

时间:2012-02-24 02:53:26

标签: vim paste

是否可以将一个函数拉出并将其粘贴到一个单词上,使其将该单词作为参数?例如,如果我有

def foo(name):
    pass

"John"

我有什么方法可以将foo粘贴到"John"上,以便获得foo("John")

2 个答案:

答案 0 :(得分:2)

当然可以。您可以使用以下宏:

Yank:  <Esc>`<"ayf(f)"by`>
Paste: B"aPE"bp

让我们打开它们。 Yank 宏假定您已选择该功能并执行以下操作:

  1. <Esc> - 取消当前选择
  2. `< - 移至上次选择的开头
  3. "ayf( - 将开头括号内的文字放入并注册“a”
  4. f) - 移至右括号
  5. "by'> - 将所有内容在最后一次选择结束时拉入注册“b”
  6. 粘贴宏更简单:

    1. B - 移至当前字词的开头
    2. "aP - 在当前位置前粘贴注册“a”的内容
    3. E - 移至当前字词
    4. 的末尾
    5. "bp在当前位置
    6. 之后粘贴寄存器“b”的内容

答案 1 :(得分:0)

如果是一次性的话,你可以使用一个宏:

:map q 0ifoo(^vESCA)^vESC

在您想要更改的每一行上点击“q”。 如果单词本身不在一条线上,你就必须更聪明一点。