我可以在vim键盘映射中使用环境变量吗?

时间:2012-07-30 13:01:01

标签: windows environment-variables vim

这可能是一种更好的方法,但这正是我想要做的。我有几个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。

2 个答案:

答案 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命令,并将当时的时间/日期存储在一个变量中,以便以后重复使用。