如何使vim打印提示在编译之前保存未保存的文件?
在编译之前,我总是忘记使用vim build-in-compile命令如何使vim打印提示在编译之前保存未保存的文件?,vim,Vim,在编译之前,我总是忘记使用vim build-in-compile命令:make,将所有文件保存在缓冲区中。那么,是否可以让vim打印一个关于保存文件的提示,就像我们在保存文件之前退出时所做的那样?只需创建一个简单的映射,如: nnoremap <leader>m :wa <BAR> :make<CR> nnoremap m:wa:make :wa写入所有缓冲区 :生成 |在两者之间按顺序执行命令 编辑Re: 我发现“autowrite”选项在某些方面可
:make
,将所有文件保存在缓冲区中。那么,是否可以让vim打印一个关于保存文件的提示,就像我们在保存文件之前退出时所做的那样?只需创建一个简单的映射,如:
nnoremap <leader>m :wa <BAR> :make<CR>
nnoremap m:wa:make
写入所有缓冲区:wa
:生成
在两者之间按顺序执行命令|
:au QuickFixCmdPre * write
此示例将在执行make时保存文件。有关更多信息,请参阅
当然,这只有在使用vim的情况下才会起作用
:make
如果您使用其他程序,请不要使用例如:!scons-C src
,但使用:se makeprg=scons \-C\src
和常规:make
触发所有
有关更灵活的自动写入,请参见:
`
自动写入
`
我只是用
:set autoread autowrite
在我的.vimrc中;这实际上是非常安全的,每当您冒着丢失缓冲区或磁盘上的更改的风险时,都会收到警告
在windows上工作时,同时在另一个程序中打开相同的文件(例如,Visual Studio或Notepad++;两者都可以配置为在更改时自动加载文件),这也非常好
最好的一点是,它也会在最小化时自动保存,因此每当您点击C-z进行最小化时,文件都会被写入(假设它在磁盘上也没有更改),当您恢复窗口(或在终端上下文中使其前景化)时,您会自动获得最新的文件内容。我发现“自动写入”选项可以在某些方面解决此问题,但在键入
next
,previous
,标记时也会自动写入。我正在寻找一个更好的解决方案。有更新的答案与替代使用自动命令。(当然,您需要Vim compile和+autocmd功能)您可能需要退出管道,否则它将把map
命令与make
分开。通过设置这些,我发现实际上可以自动读取和写入数据。但我似乎从来没有警告过你?所以,您能否更详细地解释一下当您有可能丢失缓冲区或磁盘上的更改时,您会收到警告?谢谢(假设:searaw
:)1。在vim中打开文件,2。在vim 3外部编辑。在vim 4中编辑一些。最小化vim,或执行:w
-->“警告:文件在读取后已更改!!!是否确实要写入它(y/n)?”步骤2。其实很难做到。我只是做了sleep5;echo bye>>test.txt
在终端中,并在5秒钟之前切换回vim。否则,Vim将只检测“外部编辑”并重新加载。:au QuickFixCmdPre*write
这就是我想要的。我很好奇,你怎么对维姆了解这么多。我只是一个vim新手,最近从eclipse迁移了。@user674199:我的秘诀是:花10年时间使用它。每年,都要阅读完整的文档(跳过那些令人厌烦的部分)。每次你拿起一大堆你错过的新的有价值的工具。哦,这很好:只需遵循所有vim问题!