在编译之前如何制作关于保存未保存文件的vim打印提示?

Fra*_*eng 5 vim

我总是忘记在使用vim内置编译命令进行编译之前将所有文件保存在缓冲区中:make.那么有可能让vim打印一个关于保存文件的提示,就像我们在保存文件之前退出时一样吗?

rom*_*inl 5

只需创建一个简单的映射,如:

nnoremap <leader>m :wa <BAR> :make<CR>
Run Code Online (Sandbox Code Playgroud)
  • :wa 写所有缓冲区
  • :make 建立
  • | 两者之间按顺序执行命令.

  • 您可能需要转义管道,否则它会将`map`命令与`make`分开. (3认同)

seh*_*ehe 4

编辑回复:

我发现“自动写入”选项可以在某些方面解决这个问题,但是当我输入下一个,上一个,标签时我也会自动写入。我正在寻找更好的解决方案

您可以使用 QuickFixCmdPre:

:au QuickFixCmdPre * write
Run Code Online (Sandbox Code Playgroud)

此示例将在执行 make 时保存文件。请参阅 参考资料 了解更多信息:he autocmd

当然,这只有在你使用 vim 的情况下才有效

:make
Run Code Online (Sandbox Code Playgroud)

如果您使用其他程序,请不要使用eg :!scons -C src,而是使用:se makeprg=scons\ -C\ src和regular:make来触发所有内置的Quickfix功能

如需更灵活的自动写入,请参阅:


` autowrite`

我只是用

:set autoread autowrite
Run Code Online (Sandbox Code Playgroud)

在我的 .vimrc 中;这实际上非常安全,每当您面临丢失缓冲区内或磁盘上的更改的风险时,您都会收到警告。

在 Windows 上工作时,同时在另一个程序中打开相同的文件(例如 Visual Studio 或 Notepad++;两者都可以配置为在更改时自动重新加载文件),这也非常方便。

最好的部分是它也会在最小化时自动保存,因此每当您点击C-z最小化时,文件都会被写入(假设它也没有在磁盘上更改),并且当您恢复窗口(或将其置于前台时,在终端上下文中)您将自动获取最新的文件内容。