假设我将此vimscript设为"/tmp/example.vim":
let g:input = "START; % END"
exec("! clear && echo " . shellescape(g:input))
Run Code Online (Sandbox Code Playgroud)
如果我打开该文件并运行它:so %,输出将是
START; /tmp/example.vim END
Run Code Online (Sandbox Code Playgroud)
因为"%"扩展为缓冲区名称.我想要输出
START; % END
Run Code Online (Sandbox Code Playgroud)
我可以使用泛型escape()方法来逃避百分号.这有效:
let g:input = "START; % END"
exec("! clear && echo " . escape(shellescape(g:input), "%"))
Run Code Online (Sandbox Code Playgroud)
但这真的是最好的方式吗?我敢肯定我应该逃避更多的角色.为此目的是否有特定的逃逸功能?还是一个更好的方式来掏出来?
我只是在记录一些工作,每一行都是一个动作,我会每隔几分钟尝试一次.是否有一种插入日期/时间的技巧方式:
14 June 2011 15:01:00 Downloaded source code from GIT
Run Code Online (Sandbox Code Playgroud)
会做得很好......虽然考虑到这一点,但在添加新行时插入日期可能也不错......
任何其他人在尝试实现类似目标时使用的快捷方式也会受到欢迎.
(Win32,vim6.4)
编辑
这是我最终得到的:我输入:附加'vlog'然后是空格,就像这样
that was 30 minutes well spent vlog
Run Code Online (Sandbox Code Playgroud)
我的日志条目是:
that was 30 minutes well spent
Jun-14 16:50
Run Code Online (Sandbox Code Playgroud)
随着我准备键入下一行,使用.vimrc(_vimrc)条目:
"use this for file logging
:iab vlog <cr><c-r>=strftime("%b-%d %H:%M") <cr>
Run Code Online (Sandbox Code Playgroud)
肺心病!现在让我们回来30分钟......欢呼回复!
我一直在尝试在vim中的文件名中插入时间戳.我找到的最好的例子就是这个.虽然这适用于将时间戳放在文件中,但它在命令行中不起作用.这是我在vimrc中的内容:
nmap <F3> a<C-R>=strftime("%Y%m%d%H%M")<CR><Esc>
imap <F3> <C-R>=strftime("%Y%m%d%H%M")<CR>
Run Code Online (Sandbox Code Playgroud)
在命令行中输入:
:sav i<C-R><F3>.txt
Run Code Online (Sandbox Code Playgroud)
希望得到:
i201102121400.txt
Run Code Online (Sandbox Code Playgroud)
相反,我得到:
E15: Invalid Expression: <F3>
E15: Invalid Expression: <F3>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
此外,我正在使用Windows和Linux,所以它必须同时工作.
额外奖励:如果我能得到它来获得UTZ时间而不是当地时间,那就太棒了!