【问题标题】:Indent code using vim autocommand使用 vim 自动命令缩进代码
【发布时间】:2018-04-05 14:48:05
【问题描述】:

我想使用 indent linux 实用程序在保存时缩进当前文件。我试过了

autocmd BufWritePre *.[ch] :!indent -kr -nut %

在我的 .vimrc 文件 (~/.vim) 中。

我手动尝试了该命令

:!indent -kr -nut %

只有在提示我加载文件后才有效,如下所示,

See ":help W12" for more info.
[O]K, (L)oad File:

【问题讨论】:

  • autocmd BufWritePost *.[ch] :!indent -kr -nut % 有效,但仍要求类似于手动命令的加载文件

标签: vim autocmd


【解决方案1】:

您不需要BufWritePre,因为它会在保存文件之前修改您的文件。相反,尝试做BufWritePost:

autocmd BufWritePost *.[ch] !indent -kr -nut %

这仍然会要求您按 Enter,但在我测试时它不会提示加载文件。如果您不想在保存后按回车键,可以将其更改为:

autocmd BufWritePost *.[ch] exec "!indent -kr -nut %" | redraw

另外,请注意我是如何从您的命令中删除 : 的。这是因为 autocmd 会查找 ex 命令,因此不需要 :。

【讨论】:

  • 仍然提示Load或Ok
  • @vishwanathpatil 好吧,我不知道该告诉你什么,因为当我在本地运行它时它不会提示我。抱歉
  • autocmd VimLeave *.[ch] exec "!indent -kr -nut %" | redraw ,使用 VimLeave 可以正常工作
  • 来自similar answer using astyle,我用它来格式化Golang代码;在~/.vim/plugin/go.vim 我添加了autocmd BufWritePre *.go silent! exec "%!goimports";不幸的是它仍然将光标移动到文件的顶部
猜你喜欢
  • 1970-01-01
  • 2011-06-03
  • 2012-01-13
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多