在vim中写入文件之前,通过外部工具重新格式化文件

时间:2018-11-08 03:28:54

标签: vim

当我编写BUILD.gn文件时,我希望vim调用':!gn格式的BUILD.gn',我的.vimrc是(版本1)

autocmd BufWritePre  *.{gn,gni} call GnFormat()
function! GnForamt()
  exec '!gn format %'
endfunction

但是当我按':w'时它不起作用,它显示错误消息为

Error detected while processing BufWrite Autocommands for "*.gn":
"BUILD.gn" 67L, 1423C written

如何显示更多详细的调试信息以及调用外部格式工具的正确方法是什么?

我也尝试了以下方法,但也失败了(版本2)

autocmd BufWritePre  *.{gn,gni} call GnFormat()
function! GnForamt()
  exec '%!gn format --stdin'
endfunction

:11verbose w的版本2 .vimrc的输出结果是

Executing BufWrite Autocommands for "*.{gn,gni}"
autocommand call GnFormat()
Error detected while processing BufWrite Autocommands for "*.{gn,gni}":
"BUILD.gn" 27L, 538C written
Executing BufWritePost Autocommands for "*"
autocommand cal s:record(expand('<abuf>', 1))
Executing BufWritePost Autocommands for "*"
autocommand call s:BufWritePostHook(expand('<afile>', 1))

在版本2中,我可以手动使用:call GnForamt()重新格式化缓冲区,而不会出现任何错误消息。

只知道原因

autocmd BufWritePre  *.{gn,gni} call GnFormat()
function! GnFormat()   " <--- typo of Format as Foramt
  exec '%!gn format --stdin'
endfunction

1 个答案:

答案 0 :(得分:0)

尝试:debug w(请参阅:h debug)或:13verbose w。参见:h verbose:h 'verbose'

:[level]verbose将允许您为单个动作激活详细模式