vim 創建文件自動生成頭部注釋


知識點:

1. autocmd命令: 當讀寫一個文件時,自動執行指定的命令;

2. autocmd event: BufNewFile 當文件不存在時開始寫文件;

3. exec命令
  execute命令 將一個字符串當做vimscript命令執行
4. g命令
  :[range]global/{pattern}/{command}
  global命令在[range]指定的文本范圍內(缺省為整個文件)查找{pattern},然后對匹配到的行執行命令{command},如果要對沒匹配上的行執行命令,則使用global!或vglobal命令。
5. s命令
  :[range]s/pattern/string/[c,e,g,i]
     c 表示每次替換前會詢問
     e 表示不顯示error
     g 表示替換所有匹配項
     i 表示不區分大小寫


實例詳解:

 

1 "在新建文件的頭部注釋中自動添加文件的創建時間
2 fun CreatedTime()
3     "exe "1," . l . "g/Created Time:.*/s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
4     "exe "g/Created Time:.*/s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
5     exe "g/Created Time:.*/s//Created Time:" .strftime("%Y-%m-%d %T")
6     "exe "1," . l . "s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
7 endfun

分別對以下四種命令(相同的作用)進行詳細說明:

 1. exe "1," . l . "g/Created Time:.*/s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
   "1,".l --- 假設l=30, 那么表示range為1-30,即在文件的1-30進行查找匹配
   g/Created Time:.* --- 表示g/{pattern},即在1-30行查找"Created Time:.*",如果找到了,則執行后面的command
   s/Created Time:.*/Created Time:". strftime("%Y-%m-%d %T") --- 表示 {command},即執行s命令進行替換
   所以,該組合命令的作用就是 在1至l行中匹配"Created Time:.*",然后替換成"Created Time:".strftime("%Y-%m-%d %T)
 2. exe "g/Created Time:.*/s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
   因為不指定[range],g命令的搜索范圍模式是整個文件,所以這條命名省去了指定行數范圍
 3. exe "g/Created Time:.*/s//Created Time:" .strftime("%Y-%m-%d %T")
   功能同上
 4. exe "1," . l . "s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
   僅用s命令進行在指定range內替換

綜上所述,可以結果exec命令,g命令,s命令對新建文件的頭部注釋中的指定部分進行動態寫入

 

autocmd BufNewFile *.py 0r ~/.vim/vim_templation/vim_python_header
autocmd BufNewFile *.py,*.[ch],*.sh ks|call CreatedTime()|'s

"autocmd BufNewFile *.py 0r ~/.vim/vim_templation/vim_python_header
"0r 表示從新建文件的第一行開始讀入

~/.vim/vim_templation/vim_python_header 表示從該文件中讀入內容寫入新建文件,而這個文件就是所謂的skeleton template

 

完整的配置及模板:

https://github.com/suonikeyinsuxiao/trunk/tree/master/tool/vim


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM