可能有更好的方法来做到这一点,但这正是我想要做的。 我有几个html文件,我需要在更新内容之前更新meta标签。 我试图通过使用类似于下面的键盘映射来自动执行此操作:
nnoremap <leader>mt /<meta name="developer"<cr>f";;lct"$username
这似乎与$username部分的例外。 我怎样才能使映射评估variables?
我有几个标签更新每页,但不知道如何做到这一点。 如果有人有更好的方法,我会很乐意听到。 我正在search的内容类似于以下内容:
<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将是我打开文件进行编辑的date,而expires date是从date一年
注意:这是Windows上的gvim,如果这改变了事情。
$username是指环境变量的username ,但要在映射中使用它,你必须坚持Vim的(不直观的,但完全一致的)解释规则。
“ ct"表示直到双引号为止 ,所以接下来是插入模式。要插入一个环境变量(或任何其他Vim表达式),使用<CR>= :
nnoremap <leader>mt /<meta name="developer"<cr>f";;lct"<CR>=$username<CR>
这将评估每个映射调用的环境变量。 (并保持插入模式;附加<Esc>返回到正常模式!)或者,您也可以将值烘焙到映射本身:
execute 'nnoremap <leader>mt /<meta name="developer"<cr>f";;lct"' . $username
我不知道这是否是最好的解决方案,但是对于unix机器上的用户名,您可以从vim调用'whoami'命令作为外部命令,并将其返回值存储在一个变量中以备后用
对于日期,vim中有一个strftime()函数。 您可以为VimEnter事件添加一个自动命令,并将当时的时间/日期存储在一个变量中,以便以后重用。