我想在 vim 中自动运行多个命令,即通过键入:repl
。命令是:
:ConqueTerm lein repl
<Esc>
:set syntax=clojure
<i>
如何定义执行上述内容的自定义 vim 函数(命令)?
关于以上内容:
-
clojure
- Clojure 编程语言(语法由vim-clojure-静态 https://github.com/guns/vim-clojure-static
-
ConqueTerm http://www.vim.org/scripts/script.php?script_id=2771- 一个 vim 插件,可以在 vim 缓冲区中交互运行 shell
-
lein
- 莱宁根 https://github.com/technomancy/leiningen, Clojure 构建工具
您可以创建一个函数,然后将命令放入该函数中:
fun! LeinCMD()
execute 'ConqueTerm lein repl'
execute 'set syntax=clojure'
execute 'normal! i'
endf
command! Repl call LeinCMD()
您可以获取上面的代码,然后输入:Repl
and Enter
测试它是否适合您。
EDIT
非常好的评论@Zyx。我只是把它们放在答案中,以免读者以后错过有价值的信息。
- 你完全不需要
:execute
打电话到这里。
-
:normal!
i 没用,要从函数启动插入模式,有 :startinsert 和 :call feedkeys(),前者应该是首选。 // 笔记::normal! i
在这里“有效”是因为:startinsert
是由:ConqueTerm
。 IE。由于 Conque 的编写方式,你不需要:startinsert
根本没有,但如果它还不存在的话:normal! i
会继续做任何有用的事情。
刚刚提到:使用起来会好得多command -bar
: 这样你就不需要:execute
用管道符号链接你的命令(尝试Repl | echo "Here"
有和没有 -bar 作为第二个参数:command
)。我认为这是默认选项,不知道为什么布拉姆喜欢在很多地方使用糟糕的默认选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)