相关疑难解决方法(0)

在shell中出现时在Vim中转义"%",所以它没有扩展到文件名?

假设我将此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)

但这真的是最好的方式吗?我敢肯定我应该逃避更多的角色.为此目的是否有特定的逃逸功能?还是一个更好的方式来掏出来?

vim

7
推荐指数
2
解决办法
1601
查看次数

如何使用vim将当前时间插入文件

我只是在记录一些工作,每一行都是一个动作,我会每隔几分钟尝试一次.是否有一种插入日期/时间的技巧方式:

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

5
推荐指数
1
解决办法
2542
查看次数

vim将时间戳放在文件名中

我一直在尝试在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时间而不是当地时间,那就太棒了!

vim filenames timestamp

2
推荐指数
1
解决办法
865
查看次数

标签 统计

vim ×3

filenames ×1

timestamp ×1