2

可能有更好的方法来做到这一点,但这就是我想要做的。我有几个 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,如果这会改变的话。

4

2 回答 2

3

$username确实引用了 environment variable username,但是要在映射中使用它,您必须遵守 Vim 的(有点不直观,但完全一致的)解释规则。

直到 double-quotect"平均变化,所以接下来是插入模式。要插入环境变量(或任何其他 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
于 2012-07-30T13:29:20.563 回答
0

我不知道这是否是最好的解决方案,但是对于 unix 机器上的用户名,您可以从 vim 调用 'whoami' 命令作为外部命令,并将其返回值存储在变量中以供以后重用

对于日期,vim 中有一个 strftime() 函数。您可以为 VimEnter 事件添加一个自动命令,并将当时的时间/日期也存储在一个变量中,以便以后重用。

于 2012-07-30T13:24:35.963 回答