我正在使用该vim插件编写coffeescript,/src/
即使编译的文件可能位于其他地方(如/
或),我也希望保留所有源文件/public/js
。
我知道我可以使用以下命令(在中)将vim自动保存到当前目录.vimrc
:
autocmd BufWritePost *.coffee silent CoffeeMake!
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在每个文件的基础上进行更改。我正在尝试做这样的事情:
:autocmd BufWritePost server.coffee silent CoffeeMake! -o ../server.js
Run Code Online (Sandbox Code Playgroud)
但是,当我执行此操作(保存咖啡文件时)时,没有任何反应:不会创建任何新文件,也不会抛出任何错误。
如果可以为文件名指定一个占位符,我也喜欢它(像这样(如果这几乎是正确的,就不知道了)):
:autocmd BufWritePost @%.coffee silent CoffeeMake! -o ../@%.js
Run Code Online (Sandbox Code Playgroud)
谁能帮我按我想要的方式进行这项工作?
编辑:Coffee希望-o
参数只是目录(而不是文件),因此最终的解决方案应该是
:autocmd BufWritePost *.coffee silent execute 'CoffeeMake! -o '.expand('<afile>:p:h').'/../'
Run Code Online (Sandbox Code Playgroud)
...如果您想在Web应用程序的根目录中使用它。
请尝试以下命令。
:autocmd BufWritePost *.coffee
\ silent execute 'CoffeeMake! -o '.
\ expand('<afile>:p:h').'/../'.expand('<afile>:t:r').'js'
Run Code Online (Sandbox Code Playgroud)
可以使用<afile>
cmdline-special变量确定与自动命令匹配的文件名
。要在表达式中提取其值,请使用expand()
函数。其他修饰符允许提取完整路径,并删除文件扩展名(请参阅参考资料:help expand()
)。