3

我想在 vim 中自动运行几个命令,即通过键入:repl. 命令是:

:ConqueTerm lein repl
<Esc>
:set syntax=clojure
<i>

如何定义执行上述操作的自定义 vim 函数(命令)?

关于以上:

4

2 回答 2

2

您可以只创建一个函数,然后将命令放入该函数中:

fun! LeinCMD()
    execute 'ConqueTerm lein repl'
    execute 'set syntax=clojure'
    execute 'normal! i'
endf
command! Repl call LeinCMD()

您可以获取上述代码,然后键入:ReplEnter测试它是否适合您。

编辑

@Zyx的评论非常好。我只是将它们放在答案中,以便读者将来不会错过有价值的信息。

  1. 你不需要:execute在这里打电话。
  2. :normal!i 没用,要从函数启动插入模式有 :startinsert 和 :call feedkeys(),应该首选前者。// 注意::normal! i这里“有效”是因为 :startinsert由 . 运行:ConqueTerm。即由于 Conque 的编写方式,您根本不需要:startinsert,但如果它还没有,:normal! i将继续做任何有用的事情。

刚刚提到:使用 : 这样会更好,command -bar这样你就不需要:execute用管道符号链接你的命令(尝试Repl | echo "Here"使用和不使用 -bar 作为 的第二个参数:command)。我认为这是默认选项,不知道为什么 Bram 喜欢在许多地方设置不好的默认值。

于 2013-03-31T21:32:42.363 回答
0

你有没有尝试过?

function custom_function ()
  execute 'ConqueTerm lein repl'
  execute 'set syntax=clojure'
  return custom_function
endfunction

我不知道这段代码是否有效,因为我没有测试过

于 2013-03-31T21:05:04.640 回答