这可能是一种更好的方法,但这正是我想要做的。我有几个html文件,我需要在更新内容之前更新元标记。我正在尝试使用类似于以下内容的键盘映射来自动执行此操作:
nnoremap <leader>mt /<meta name="developer"<cr>f";;lct"$username
除$username
部分外,这似乎有效。如何使映射评估变量?
我确实有一些标签要更新每页,但不知道如何做到这一点。如果有人有更好的方法,我会非常乐意听到它。我正在搜索的内容类似于以下内容:
<meta name="owner" content="someowner">
<meta name="developer" content="somedev">
<meta name="date" content="2012-07-26">
<meta name="expires" content="2013-07-26">
date
将是我打开要修改的文件的日期,而expires
将是date
注意:如果改变了这一点,这就是Windows上的gvim。
答案 0 :(得分:3)
$username
确实引用了环境变量username
,但要在映射中使用它,你必须坚持Vim的(有点不直观,但完全一致的)解释规则。
ct"
表示更改为双引号,因此接下来是插入模式。要插入环境变量(或任何其他Vim表达式),请使用<C-R>=
:
nnoremap <leader>mt /<meta name="developer"<cr>f";;lct"<C-R>=$username<CR>
这将评估每个映射调用的环境变量。 (并保持插入模式;附加<Esc>
以返回正常模式!)或者,您也可以将值烘焙到映射本身:
execute 'nnoremap <leader>mt /<meta name="developer"<cr>f";;lct"' . $username
答案 1 :(得分:0)
我不知道这是否是最佳解决方案,但对于unix机器上的用户名,您可以将来自vim的'whoami'命令作为外部命令调用,并将其返回值存储在变量中以供以后重用
对于日期,vim中有一个strftime()函数。您可以为VimEnter事件添加一个auto命令,并将当时的时间/日期存储在一个变量中,以便以后重复使用。