2012-07-30 65 views
2

可能有更好的方法來做到這一點,但這正是我想要做的。我有幾個html文件,我需要在更新內容之前更新meta標籤。我試圖通過使用類似於如下鍵盤映射自動完成:我可以在vim鍵盤映射中使用環境變量嗎?

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。

回答

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 
+0

真棒!非常感謝! – jktravis 2012-07-30 13:34:05

0

我不知道這是否是最好的解決方案,但對於unix機器上的用戶名稱,您可以將vim命令作爲外部命令調用'whoami'命令,並將其返回值存儲在變量中供以後重用

對於日期,vim中有一個strftime()函數。您可以爲VimEnter事件添加一個自動命令,並將當時的時間/日期存儲在一個變量中,以便稍後重用。

相關問題