我正在努力跟踪我的工作时间,我必须详细记录我正在编辑哪些文件以及何时编辑。在我的.vimrc脚本中,我有:
:silent !clock_in_script.sh %:p
这个clock_in_script.sh将文件的位置作为参数,只是将文件名和时间写入日志。
退出vim时有没有办法同样调用脚本?如果没有,有没有办法可以编写我正在编辑的文件的名称和从vim写入日志文件的时间?
提前谢谢!
答案 0 :(得分:3)
有一个事件VimLeave
(:h VimLeave)符合您所描述的要求。
但是,这可能无法满足您的需求。因为您可以在一个vim实例中打开许多文件。我总是以这种方式使用vim。在这种情况下,您只能保存当前缓冲区/文件的状态。
您可以:h event
查看vim自动命令支持的事件。还要考虑编写一个小函数来循环所有缓冲区并调用命令。或修改您的shell脚本以接受多个文件名作为参数,以便您只能调用一次脚本。
答案 1 :(得分:3)
感谢那些提出autocmd事件的人。 我发现最合适的事件是 BufWinEnter 和 BufWinLeave 。这正是我在vim中的内容:
:autocmd BufWinEnter * !clock_edit %:p
:autocmd BufWinLeave * !clock_close %:p
clock_edit bash脚本:
#!/bin/bash
echo "`date`:: opened file $1" >> ~/.clock_log
clock_close:
#!/bin/bash
echo "`date`:: closed file $1" >> ~/.
例如,当我打开config.txt
时,vim将调用clock_edit /node/proj/config.txt
。
如果我打开几个文件作为选项卡,我打开的每个文件将调用clock_open,我关闭的每个文件将调用clock_close,并将相应的文件名和路径作为参数传递。更好的是,当我打开和关闭文件时切换标签或窗口焦点时,它不会重复此过程。
感谢您的帮助!
编辑:autocmd是一种将vim命令绑定到vim中的事件(如保存文件)的有用方法。有关详情,请参阅autocmd here。
答案 2 :(得分:2)