因爲 SublimeText 有很多插件都是使用 Py 寫的,而我想使用 dotnet core 給 SublimeText 寫一個編譯插件,也就是在我使用 Markdown 的時候可以點擊編譯,將 Markdown 轉 doc 或者做其他的。
在 SublimeText 有一個功能就是使用 Tools 的 Build System
添加新的 Build
通過點擊new Build System
就可以新建一個用 sublime-build
結束的文件
將會這個文件保存到 SublimeText 所在的文件夾,在C:\Users\用戶名\AppData\Roaming\Sublime Text 3\Packages\User
就可以添加編譯
先來創建一個 dotnet core 項目,這個項目先給一個隨意的名字
這個項目只是用來輸出拿到的參數
static void Main(string[] args) { var str = new StringBuilder(); foreach (var temp in args) { str.Append(temp + "\r\n"); Console.WriteLine(temp); } File.WriteAllText(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "KeameaMouhalis"), str.ToString()); }
代碼很簡單,上面用Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
因爲想寫文件到運行的文件夾
例如這個項目編譯出的路徑是 D:\lindexi\github\PisairtekaDrallhairlo\PisairtekaDrallhairlo\bin\Debug\netcoreapp2.0\PisairtekaDrallhairlo.dll
在剛纔打開的 sublime-build
可以添加下面代碼
{ "file_patterns":["*.md"], "cmd": ["dotnet" , "D:\\lindexi\\github\\PisairtekaDrallhairlo\\PisairtekaDrallhairlo\\bin\\Debug\\netcoreapp2.0\\PisairtekaDrallhairlo.dll","$file"] }
這裏的 file_patterns
就是表示在什麼的文件可以使用這個編譯,第二個就是調用 cmd 運行命令
可以傳入的參數很多,這裏的 $file
表示當前進行編譯文件,可以選的參數請看下面
$file_path
當前文件所在路徑,比如C:\Files
$file
當前文件的完整路徑,比如C:\Files\Chapter1.txt
$file_name
當前文件的文件名,比如Chapter1.txt
$file_extension
當前文件的擴展名,比如 txt$file_base_name
當前文件僅包含文件名的部分,比如 Document$packages
Packages 文件夾的完整路徑$project
當前項目文件的完整路徑$project_path
當前項目文件的路徑$project_name
當前項目文件的名稱$project_extension
當前項目文件的擴展部分$project_base_name
當前項目僅包括名的部分
現在將 sublime-build
文件存放到 SublimeText 所在的文件夾,注意給一個名字,然後就可以在 Build 裏看到,現在選擇 Build System 的對應的方式進行編譯,點擊 Build 就可以看到輸出編譯
在剛纔的項目寫文件是因爲在 SublimeText 的控制檯看到的是如下界面
對於所有的中文都沒有顯示,所以寫入文件就可以從文件裏看,可以看到傳入的文件是不會和 SublieText 顯示一樣
現在有了需要編譯的文件的路徑,就請發揮想想開發自己的編譯插件
參見:Build Systems – Sublime Text 3 Documentation
Build Systems — Sublime Text非官方文檔(中文翻譯版)