编写新文件时运行commandtflush命令
题
每当新文件撰写时,我都试图使VIM运行命令“ commandtflush”。对于不使用命令-T插件的人,“命令tflush”命令用于重建当前目录中的文件索引。
我要做的是在将文件写入磁盘后运行命令,以便CommandTflush会找到该文件并将其添加到其索引中。
我已经尝试过自己编写一个函数,但是要么不会发射或发射得太早(在编写文件之前,要点是将文件添加到索引中):
au! BufWritePre * ks| call NewFilesUpdatesCommandT()
function! NewFilesUpdatesCommandT()
let filename=@%
if !filereadable(filename)
CommandTFlush
endif
endfunction
我怀疑可以通过在bufwritepre中设置一些布尔值var(iSthefilenew)来解决它,然后如果刚刚创建了文件,则可以在bufwritepost中执行commandTflush命令,但我无法弄清楚该语法。另一个解决方案可能是从BufWritePre回调中设置/解开BufWritePost回调,如果可能的话...
有人可以在这里帮我吗? )
解决方案
augroup NFUCT
autocmd!
autocmd BufWritePre * call NFUCTset()
augroup END
function NFUCTset()
if !filereadable(expand('%'))
augroup NFUCT
autocmd BufWritePost * call NFUCT()
augroup END
endif
endfunction
function NFUCT()
augroup NFUCT
autocmd!
autocmd BufWritePre * call NFUCTset()
augroup END
CommandTFlush
endfunction
这是您第二个建议的实现。
其他提示
这是我的解决方案。每当写文件时,每当VIM的窗口获得焦点时,它都会触发命令tflush。当您在VIM之外创建文件时,这很有用 - 例如,通过在版本控制系统中的分支之间切换。重新输入VIM后,新文件将立即在Commandt中找到。
augroup CommandTExtension
autocmd!
autocmd FocusGained * CommandTFlush
autocmd BufWritePost * CommandTFlush
augroup END
不隶属于 StackOverflow