CTAGS解析PowerShell檔案

2021-06-19 09:01:17 字數 1417 閱讀 3727

命令列

ctags.exe --options=ctags.cnf -l *

ctags.cnf內容(此檔案編寫最好是utf-8或ascii的,因為ctags.exe有時會因為編碼問題不能正確讀入此檔案)

--langdef=powershell

--langmap=powershell:.psm1.ps1

--regex-powershell=/^[\t ]*function[\t ]*([a-v]:)?([a-z_-]+)/\2/m, method/i

-f ctags.txt

正則稍微說一下吧:

([a-v]:)? 為匹配scope,如private, local, global, script

([a-z_-]+) 為匹配函式名稱,因沒有在函式中使用數字的習慣,所以沒有新增帶有數字的模式,如果要帶數字,則用([a-z0-9_-]+)

\2 讓ctags把第二個括號所匹配的內容當作函式名來記錄,如果改為\1後,當函式宣告帶有scope時,ctags認為函式名為scope,即把"private:", "local:", "scripts:"等等當作函式名稱來記錄

/i 代表忽略大小寫

這個檔名(ctags.cnf)可以隨便定義,不過預設ctags.exe會自動在當前路徑或環境變數%ctags%(如果存在的話)中載入ctags.cnf這個檔案,所以如果你用的此檔案儲存命令,在命令列可以這樣寫

ctags.exe -l*
哦,對了,使用檔案定義命令時,

-f 一定要寫在檔案裡,在命令列中新增這個命令是無效的,會被ctags.exe認為二次定義而報錯,從而使用

ctags為預設輸出檔案

如果沒用檔案來定義命令,在命令列寫入時,正則一定要用引號引起來,因為正則中帶有空格,會被ctags.exe認為是分隔符

此定義可以匹配的function格式:

function script:test-path 

function test-path

function test

我在ultraedit中使用ctags時,要跳轉時需要選中完整的函式名稱,因為ultraedit認為

-  是隔離符號而非函式名稱的一部分

我只是定義了如何搜尋function,沒定義怎樣搜尋variable,因variable名字重複率高且定義格式又有很多種(主要是人太懶了)。

如果你想variable的正則,自ctags.cnt中另起一新行寫入下面的引數即可

--regex-powershell=你寫的variable正則

Windows指令碼初探之PowerShell初識

windows powershell是針對網路系統管理而開發出來的,是微軟開發的下一代命令列外殼以及指令碼語言,可以用於取代目前的cmd.exe命令列介面以及vbscript指令碼語言。cmd.exe命令列介面是dos命令列的繼任者,而vbscript最開始主要針對用於網頁設計。windows po...

在Centos 7上面安裝Powershell

powershell開源已經有一段時間了,在technet的blog上面也有簡單的介紹。powershell on linux and open source windows powershell blog 下面是在centos 7上面安裝powershell工具。安裝完成後,我們可以執行get c...

ctags使用簡介

linux下軟體開發者必備利器 ctags使用簡介 vi 大家都很熟悉,某些情況下它是我們在linux下唯一可用的文字編輯器。其實我們平時所指的vi其實是 vim viimproved,vi增強版 有人常常拿vim和emacs比較,vim儘管不象emacs那樣有那麼多的功能,但是比emacs更方便 ...