人生苦短,我用Python灭贷。
問題描述:
最近在使用ST3進(jìn)行代碼編寫斥季,之前用的是Atom或是vscode卫枝,并沒有一個十分中意的代碼編輯器讹挎,主要還是看使用的心情吧,有的時候使用不同的編輯器马篮。由于部分的代碼是在本地機(jī)器(Macbook pro)上編寫測試怜奖,等到測試成功或是可以使用的時候直接上傳到服務(wù)器(n多核+高性能GPU+ubutun)上面,讓服務(wù)器去跑實(shí)驗(yàn)迁央,這個時候就需要使用ssh將本地的代碼文件或是目錄上傳到server上面滥崩。但是每次都用scp去上傳總是有點(diǎn)麻煩夭委,所以這里就直接編寫了一個ST3的插件募强,讓插件自動完成代碼的上傳擎值。(這是受啟發(fā)于pycharm pro的功能)
前置條件:
- ssh已經(jīng)將你的公鑰上傳到server中逐抑,所以能夠?qū)崿F(xiàn)免密登錄。并且在terminal中scp的時候也可以不用輸密碼进每;
- 熟悉python編碼命斧;
- 本地代碼庫有專門的地址
- server上面有也專門的代碼庫国葬,一般是存放在你的個人用戶目錄下
預(yù)期結(jié)果:
- 打開文件編輯之后,通過鼠標(biāo)右鍵或是快捷鍵就能將剛才編輯的文件上傳到服務(wù)器上接奈。
- 通過再ST3的左邊的打開的目錄列表上通過鼠標(biāo)右鍵的菜單能夠?qū)⑦x中的目錄下的所有文件上傳到服務(wù)器上通孽。
- 可以設(shè)置多個服務(wù)器,當(dāng)服務(wù)器只有一個的時候默認(rèn)上傳到這個服務(wù)器上互捌;當(dāng)有多個服務(wù)器的時候糠惫,在使用菜單或是快捷鍵的時候會出現(xiàn)選擇服務(wù)器的界面硼讽,能夠?qū)⑽募蟼鞯街付ǖ姆?wù)器上固阁。
下一步實(shí)現(xiàn):
- 能夠在ST3的terminal中顯示scp的傳輸過程(python調(diào)用shell命令scp的時候不顯示過程)
- 將服務(wù)器的配置寫在配置文件中而不是硬編碼
- 將用戶名和密碼放在配置文件中
插件結(jié)果截圖:
怎樣編寫插件
ST3的插件使用的語言主要是Python备燃,在ST3的安裝目錄中我們可以發(fā)現(xiàn)兩個python文件sublime.py
和sublime_plugin.py
這兩個不同的插件并齐。這兩個module就是ST3在生成新插件的時候默認(rèn)導(dǎo)入的兩個模塊,里面包含了不同的class撕贞。通過繼承不同的class來完成插件的編寫测垛。
定義好了插件之后,還可以添加頂部菜單号涯,右鍵菜單以及編輯器左邊的sidebar的右鍵菜單锯七。同時還能夠定義不同的快捷鍵來調(diào)用相應(yīng)的功能。由于文件和文件夾通過scp使用的是不同的命令久又,所以這里需要定義兩個不同的插件效五。
首先畏妖,我們通過ST3的[tools]->[Developers]->[New Plugin] 來自動的建立一個插件,可以看出自動建立的插件是一個python的類半夷,并且這個類繼承的TextCommand類迅细,插件的主要功能代碼就是寫在run函數(shù)里面。將你需要實(shí)現(xiàn)的功能寫在這個run函數(shù)里面湘换。主要就是解析path统阿,然后構(gòu)造server上面的代碼的path。再添加到一個右鍵快捷菜單中帆离。
文件夾下的所有文件
此時并不能得到的一個特定的文件路徑结澄,如果需要將某個文件下的所有文件全部上傳到server上的話岸夯,那么scp中需要帶有一個-r
的命令表示遞歸猜扮。需要找到文件夾的路徑破镰,我們在左側(cè)的project樹狀結(jié)構(gòu)中可以使用右鍵菜單压储,但是我們可以看到,系統(tǒng)自帶的只有[new file][rename][new folder][delete folder][find in folder]這幾種菜單孕似,通過查看API(非官方的API)可以看到通過定義一個Side Bar.sublime-menu 文件就能將菜單和功能相互連接起來了刮刑。
通過上圖我們可以看出sublime-keymap是快捷鍵的配置雷绢,sublime-menu是右鍵菜單的配置,Context指的是在文件編輯狀態(tài)下的右鍵菜單蔽氨,而Side Bar則是左邊的樹狀結(jié)構(gòu)中的右鍵菜單設(shè)置帆疟。
最后,通過編碼和連接菜單就能完成預(yù)期得功能自赔,接下來就是利用這個插件代替你打開命令行手敲scp命令了柳琢。happy coding