2014-12-13 82 views
1

我想有一個特殊的文件,其中每行一個時間戳開始,現在我可以用例如縮寫做到這一點:如何在新行的開頭添加自動文本?

:iab <expr> ts strftime("%F %T") 

,如果我手動鍵入ts當我添加一個新的生產線工作。但有什麼方法可以在開始時自動創建帶有預填充時間戳的新行,並且如果該行上沒有文本,則根本不包括時間戳。

試圖爲自己製作一份審計日誌,以便在編程期間從我的環境中捕獲任何中斷,並且確實希望只鍵入文本併爲其添加時間戳。

回答

3

如果你想插入是自動的,你需要重寫命令,用於插入一個新行,通常o

:nnoremap <buffer> <expr> o 'o' . strftime("%F %T") 

爲了使這個只適用於你的特殊的文件,使用<buffer>和如果您計劃更多的定製,或特殊的語法高亮通過

:autocmd BufRead /path/to/audit/log nnoremap ... 

定義這個命令,更好地定義自定義文件類型:help new-filetype一個nd把映射在~/.vim/ftplugin/myfiletype.vim

+0

這很好。當我插入模式時,並沒有真正覆蓋,只是按下輸入...但現在猜測它已經足夠好了。 – Evgeny 2014-12-13 18:51:36

+1

謝謝!您也可以添加':imap's,但一般的建議是避免長時間處於插入模式。而你創建的映射越多,它干擾的概率就越高。 – 2014-12-13 18:55:17

+0

使用 imap ''。 strftime(「%s」) 工程就像一個魅力!這只是針對這個充當中斷日誌的特殊文件,所以不應該影響其他文件。 – Evgeny 2014-12-13 18:59:57

相關問題