EditPad Lite有一个很好的功能(CTRL- E,CTRL- I),它会在您的代码中插入时间戳,例如"2008-09-11 10:34:53".
在Vim中获得此功能的最佳方法是什么?
(我在Linux服务器上通过SSH使用Vim 6.1.在目前的情况下,我们中的许多人共享登录,所以如果有另一种内置方式来获取时间戳,我不想在主目录中创建缩写. )
Swa*_*C H 106
要使其跨平台工作,只需将以下内容放入您的vimrc:
nmap <F3> i<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc>
imap <F3> <C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR>
Run Code Online (Sandbox Code Playgroud)
现在你可以随时在Vi/Vim内按F3,你会得到一个像2016-01-25 Mo 12:44光标插入的时间戳.
有关可用参数的完整说明,请查看C函数strftime()的文档.
Dar*_*mas 80
http://kenno.wordpress.com/2006/08/03/vim-tip-insert-time-stamp/
试了一下,它适用于我的mac:
:r! date
Run Code Online (Sandbox Code Playgroud)
生产:
Thu Sep 11 10:47:30 CEST 2008
Run Code Online (Sandbox Code Playgroud)
这个:
:r! date "+\%Y-\%m-\%d \%H:\%M:\%S"
Run Code Online (Sandbox Code Playgroud)
生产:
2008-09-11 10:50:56
Run Code Online (Sandbox Code Playgroud)
作为@Swaroop CH答案的延伸,
^R=strftime("%FT%T%z")
Run Code Online (Sandbox Code Playgroud)
是一种更紧凑的形式,也将打印时区(实际上与UTC的差异,符合ISO-8601标准).
如果您出于某种原因更喜欢使用外部工具,
:r !date --rfc-3339=s
Run Code Online (Sandbox Code Playgroud)
将为您提供完整的RFC-3339兼容时间戳; 使用ns而不是s类似Spock的精度,并通过管道tr ' ' T来使用大写T而不是日期和时间之间的空格.
您也可能会发现知道它很有用
:source somefile.vim
Run Code Online (Sandbox Code Playgroud)
将从以下命令读入命令somefile.vim:这样您可以设置一组自定义映射等,然后在该帐户上使用vim时加载它.
,R!日期
然后,如果您想要完全相同的格式,可以将格式添加到date命令(man date),并将其添加为vim别名
,R!日期+"\%Y - \%m - \%d \%H:\%M:\%S"
这会生成您在示例中显示的格式(shell中的日期不使用\%,但只是%,vim将%替换为当前文件的名称,因此您需要将其转义).
您可以在.vimrc中添加一个地图,以便它自动放置命令,例如,每次按F3时:
:map <F3> :r! date +"\%Y-\%m-\%d \%H:\%M:\%S"<cr>
Run Code Online (Sandbox Code Playgroud)
(从上面编辑:))(编辑:将文本部分更改为代码,以便
<F3>
Run Code Online (Sandbox Code Playgroud)
可以显示)
小智 6
来自Vim 维基百科。
我使用这个而不必移动我的手来敲击 F 键:
:iab <expr> tds strftime("%F %b %T")
Run Code Online (Sandbox Code Playgroud)
现在在插入模式下,只需输入 tds,只要我按空格键或回车键,我就会获取日期并继续输入。
我把它放在%b那里,因为我喜欢看到月份名称。这%F给了我一些按日期排序的东西。我可能会将其更改为%Y%m%d这样,单位之间就没有字符了。
小智 6
!!date
Run Code Online (Sandbox Code Playgroud)
!!date /t
Run Code Online (Sandbox Code Playgroud)