我试图绑定F5以在当前文件上运行sass --update
。我被困的地方是输出。我决定的解决方案是在输入文件的第一行包含输出文件的注释,例如:
//C:\Users\wuffie\Projects\output.css
如何读取线条,修剪起始斜线,并将其放入我的命令中?它需要一个完整的功能吗?以下是我到目前为止的情况:
au BufEnter,BufNew *.sass nmap <F5> :w<CR>:tabnew <bar> silent :r !sass --update expand('%:p'):
答案 0 :(得分:1)
让我们首先清理你的命令(为简洁起见,我省略了:autocmd
;或者,您可以将:map
放入~/.vim/after/ftplugin/sass.vim
,假设文件类型被检测为{{1} }}):
sass
:noremap
;它使映射不受重映射和递归的影响。nnoremap <buffer> <F5> :w<Bar>tabnew<Bar>silent :r !sass --update %:p<CR>
关键字,仅为文件的缓冲区定义映射,而不是污染其他缓冲区。<buffer>
,并添加缺少的结论<Bar>
。<CR>
无法正确评估,并且没有必要,expand()
已由%:p
解释。 (但我们需要扩展名,请继续阅读):现在,让我们将第一行的读数构建到:
:r
这使用nnoremap <buffer> <F5> :execute 'w<Bar>tabnew<Bar>silent :r !sass --update ' . expand('%:p') . ':' . getline(1)[2:]<CR>
来构建命令行,使用:execute
来访问文件的第一行。我使用String索引来切断前两个注释字符(getline(1)
);你也可以在这里使用[2:]
,或者strpart()
用于更详细的案例。为了使这个防弹,请将最终表达式包装在substitute()
。
shellescape(..., 1)