静默执行vim命令然后在vim中回显

Ase*_*nar 2 vim bash shell

我想autocmd BufWrite在我的 中执行 shell 命令.vimrc,然后 echo (在 vim 中)\xc2\xa0a 消息说它已经完成,而不显示 shell。

\n\n

(基本上touch *.less),然后回显一条信息消息“文件已触及!”。

\n\n

第一部分有效,但第二个命令是在 shell 而不是 vim 中执行的。

\n\n

命令应该是这样的:

\n\n
autocmd BufWritePost *.less silent! !touch \'%:p:h\'/*.less | echo \'file  \'.expand(\'%:p:h\').\' touched !\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想我需要一种方法来“结束”命令并允许其他命令。

\n\n

我尝试了这个但没有取得更大的成功:

\n\n
:silent !touch \'%:p:h\'/*.less && exit 0 | unsilent! | echo "file touched"\n
Run Code Online (Sandbox Code Playgroud)\n\n

任何想法 ?

\n

cch*_*ere 6

如果你通过一个函数,它应该可以工作:

function! Cmd()
    silent! execute '! touch %:p:h/*.less'
    echo 'file '.expand('%:p:h').' touched !'
endfunction

autocmd BufWritePost *.less call Cmd()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢 !:) 有一些技巧可以禁用它:[link](http://vim.wikia.com/wiki/Avoiding_the_%22Hit_ENTER_to_continue%22_prompts) 但是,当您想通过触发器打印和读取某些内容时,这是必要的。 (2认同)