【发布时间】:2011-06-17 19:47:48
【问题描述】:
我已在脚本中插入映射模式date<Tab> 以以YYYY-MM-DD 格式插入当前日期。
inoremap <script> <silent> <buffer> date<Tab> <C-R>=strftime("%Y-%m-%d")<CR>
当我在插入模式下开始输入模式时,Vim 只显示最后输入的字符,而不是显示完整的模式,然后仅在按 Tab 时将其替换为日期字符串当我不想使用它时很讨厌。例如,如果我输入“日期”,这就是 Vim 显示的内容(“|”是光标表示):
|d|a|tdata|
另外,我安装了 Snipmate vim 插件,它使用 Tab 键将 sn-ps 替换为代码模板,当我输入 sn-p 时,它不起作用就像我之前描述的那样。 Snipmate 所做的是仅映射 Tab 键,当按下该键时,它会获取前一个单词并检查它是否与它的一个 sn-ps 匹配。
也就是说,我会留下两个问题,其中一个问题的答案解决了我的问题:
有没有办法配置 Vim 在将其更改为映射之前不显示完整模式?
我可以让两个插件使用相同的映射吗?就像如果我也映射 Tab 键,只要光标前的单词是“日期”,我的插件就会起作用,而 Snipmate 在其他情况下会起作用。
【问题讨论】:
-
我认为您最好的选择是编写一个名为 'date' 的 sn-p,它可以扩展为您想要的内容。如果我没记错的话,snipmate 在 sn-ps 中支持本机 vimscript,所以这应该很容易实现。第一个问题的答案是否定的。
-
实现您想要的最佳方式是通过在插入模式下键入时自动扩展的缩写。您可以参考this answer I gavehow to insert the current time 上的问题,了解有关实施的详细信息。
-
@Randy Morris - 映射用于脚本,所以对我来说没问题,但我不能假设每个人都使用 Snipmate。不过谢谢!
标签: vim