GMT語法高亮-智能提示-代碼補全插件

GMT(Generic Mappint Tools)是地學界應用非常廣泛的一款繪圖兼數(shù)據(jù)處理的開源軟件。其開發(fā)團隊也是非持栊牵活躍跃巡,此軟件還在不斷的發(fā)展和更新中,變得越來越強大什猖。目前已經(jīng)有164個模塊票彪,而每一個模塊又有很多命令參數(shù)。因為gmt是命令行軟件卸伞,沒有GUI界面抹镊,所以用戶必須記住,或知道怎么從官方文檔中查詢這些參數(shù)并知道如何使用它荤傲。說起來容易垮耳,做起來難,如此大量的命令及參數(shù)遂黍,就連作者這樣的深度用戶都無法記住终佛,也需要常常去訪問文檔查找命令和參數(shù)。這是gmt用戶面臨的一大難題雾家,也是初學者望而生畏的原因铃彰。
本文將介紹作者自己開發(fā)的一款VScode (Visual Studio
Code
)
插件,不僅可以提升gmt腳本文件的顏值芯咧,而且還具有強大的代碼自動補全功能和智能提示功能牙捉,再也不用擔心-J后面跟啥參數(shù)這樣的問題了!

GMT的工作方式

GMT其實是由一系列的命令行程序組成的敬飒,每一個模塊(比如pscoast)就是一個單獨的程序邪铲。而要完成一張圖的繪制,直接在終端一個一個敲命令肯定不現(xiàn)實无拗,效率太低带到。一般可取的處理方式就是將一系列命令寫在一個腳本文件中:windows系統(tǒng)中就是大家熟悉的批處理文件,通常以.bat為后綴名英染;而Mac系統(tǒng)和Linux系統(tǒng)中是bash腳本文件揽惹,通常以.sh 為后綴名。這樣用腳本文件的方式處理四康,對代碼的二次利用有很大的益處搪搏。比如下面這樣一段GMT的命令,

gmt begin ex22
   gmt set FONT_ANNOT_PRIMARY 10p FONT_TITLE 18p FORMAT_GEO_MAP ddd:mm:ssF
   file=`gmt which @usgs_quakes_22.txt -G`
   n=`gmt info $file -h1 -Fi -o2`
   first=`gmt info -h1 -f0T -i0 $file -C --TIME_UNIT=d -I1 -o0 --FORMAT_CLOCK_OUT=-`
   last=`gmt info -h1 -f0T -i0 $file -C --TIME_UNIT=d -I1 -o1 --FORMAT_CLOCK_OUT=-`
   me="GMT guru @@ GMTbox"
   gmt makecpt -Cred,green,blue -T0,100,300,10000 -N
   gmt coast -Rg -JK180/9i -B45g30 -B+t"World-wide earthquake activity" -Gburlywood -Slightblue -A1000 -Y2.75i
   gmt plot -C -Sci -Wfaint -hi1 -i2,1,3,4+s0.015 $file
   gmt legend -DJBC+o0/0.4i+w7i/1.7i -F+p+glightyellow neis.legend
gmt end show

可以繪制一張如下圖所示的全球的地震分布的圖,還是非常美觀的箭养。這個例子來源于GMT的官方例子:
example-22
.

這個例子是最新版的gmt的語法慕嚷,使用了所謂的modern模式,比之前的版本在使用上精簡了很多,功能也更強大了喝检。

GMT腳本編輯器 : VScode

既然我們要用腳本文件的方式來編輯和運行GMT命令集嗅辣,那么準備一個強大且美觀的代碼編輯器是必須的,工欲善其事必先利其器嘛挠说!這種神器有沒有呢澡谭,答案是肯定的,而且還不止一種選擇损俭,比如常用的VScode,[sublime(https://www.sublimetext.com), atom,這三款都是跨平臺的蛙奖,而且其用戶也都非常多,都有自己的一部分鐵粉杆兵。當然了雁仲,很多大神看到了可能就不服氣了,說為啥不提我vim 琐脏,這個是很強大攒砖,但是本人就是不喜歡用。除此之外還有windows下的
notePad++日裙,這個似乎沒有Mac版本吹艇。當年還用win系統(tǒng)的時候,用過一段時間昂拂,還湊合受神,不過放棄它已經(jīng)很久了。

工具這么多格侯,蘿卜青菜各有所愛鼻听,本人最喜歡VScode。這是個跨平臺的联四,也就是你所有的使用習慣和軟件配置以及插件精算,換了系統(tǒng)照樣使用,完全不影響碎连。VScode的用戶社區(qū)越來越龐大,很多大神們也貢獻了各種各樣的插件驮履,使得VScode相當?shù)暮糜糜阏蓿‰m然像C++,python, java
script這樣的編程語言已經(jīng)有了太多太多好用的插件,但是GMT至今還沒有人貢獻GMT的插件(包括代碼高亮)玫镐。雖然GMT算不上編程語言倒戏,但是其命令之多參數(shù)之復雜,在某種程度上也可以算成一種腳本語言了恐似。由于沒有GMT插件杜跷,導致在使用的時候很難忍受它的顏值,那就來自己開發(fā)一個插件。下面我就來介紹這個插件:vscode-GMT

vscode-GMT

功能

代碼高亮

這個是基本款葛闷,只有代碼高亮功能憋槐。目前是v0.0.2版本,可以高亮顯示的內(nèi)容有:

  • gmt : gmt 這個詞
  • gmt的所有模塊名稱: 比如 pscoast
  • gmt的所有模塊的參數(shù)名稱:比如 -J, -G
  • gmt的所有配置參數(shù)淑趾,比如 MAP_GRID_CROSS_SIZE_PRIMARY
  • gmt內(nèi)置的所有顏色名稱阳仔,比如 lightblue
  • gmt的所有投影參數(shù),比如 -JM, -JX
  • 一些其他的bash類語法扣泊,比如數(shù)字近范,變量等

比如上面繪圖的這段代碼,如果沒有使用vscode-GMT插件延蟹,其顯示效果如下圖所示的素顏代碼:

有人會問了评矩,gmt的腳本文件就是bash文件呀,vscode已經(jīng)有了bash的代碼高亮插件了阱飘,為啥還是沒有高亮斥杜?因為vscode的bash代碼高亮的插件只是針對一小部分的bash語法和關鍵詞進行高亮的,其效果非常有限俯萌,正如上圖所示果录。大量的gmt命令它是識別不了的,想想這也是不可能的事兒咐熙。

使用了vscode-GMT插件之后的美顏效果如下圖所示:

顏色主題

這個代碼高亮效果可以隨著VScode的顏色主題的改變而改變弱恒,按自己喜好選擇light類主題或者dark類主題。此外棋恼,vscode-GMT插件還自帶了兩款增強版的主題:

  • OneLight-gmt
  • OneDark-gmt

一個是亮色主題一個是暗色主題返弹,自帶的主題會對gmt的一些特有的語法進行增強高亮,已達到更好的高亮效果爪飘。這兩者的高亮效果分別如下圖所示义起。

安裝

vscode-GMT的安裝非常簡單,跟vscode的常規(guī)插件安裝方法相同师崎,可以在線安裝默终。因為我已經(jīng)將此插件發(fā)布到了vscode
Marketplace上了,見下圖犁罩。

可以直接在vscode上聯(lián)網(wǎng)安裝齐蔽,在插件管理器中輸入 gmt
就可以搜到我的插件了,然后點擊安裝即可生效床估,見下圖含滴。

切換專屬增強型主題的方法與正常切換主題的方法一樣,只需要在主題搜索欄中輸入gmt就可以過濾出來
OneLight-gmtOneDark-gmt
這兩個專屬主題丐巫。操作流程為 ctrl+p -> 輸入>color theme ->
點擊第一個 -> 輸入gmt 即可看到這兩個主題名字谈况,點擊即可勺美。
第二種方法更簡單,在插件管理器中搜索gmt碑韵,就可以找到已經(jīng)安裝了的gmt插件赡茸,點擊就可以看到右邊窗口中l(wèi)ogo旁邊有一個
Set Color Theme
按鈕,然后就會彈出這兩個主題泼诱,選擇點擊其中一個即可生效坛掠。

vscode-GMT Pro

GMT Pro

上面介紹的這個vscode-GMT是基本款,而vscode-GMT-Pro具有更強大的功能治筒,具體如下屉栓。

功能

語法高亮

代碼高亮功能與vscode-GMT插件完全相同。

代碼自動補全

目前版本的代碼補全功能包括以下幾項:

  • gmt模塊名稱:
    輸入gmt然后按空格就會提示所有的gmt模塊命令和相應的解釋說明耸袜,可以按上下鍵進行選擇友多,選中后按Tab鍵就可以自動補全命令。
  • gmt模塊的參數(shù):當輸入 gmt
    然后選擇某個模塊命令之后堤框,只要按下 -
    鍵就可以自動提示所有的與此模塊有關的參數(shù)和解釋域滥,這個是非常實用的功能。同樣可以按Tab鍵進行補全蜈抓。
  • -J參數(shù)后面的投影方式: 當輸入 -J
    后會自動彈出提示可選的投影方式启绰,同樣用上下鍵選擇,可以看到每個投影方式的解釋沟使,然后用Tab鍵生效(補全)委可。
  • -G和-S參數(shù)后面的顏色:與-J參數(shù)的自動補全類似,只不過這兩個參數(shù)后面跟的是可選的顏色名稱腊嗡。
  • 所有的gmt內(nèi)置變量: 比如當你輸入 map
    就會自動提示所有與map相關的內(nèi)置變量着倾,支持模糊輸入,這對于沒有準確記住內(nèi)置變量名稱的情況非常有幫助燕少。大大提升了效率卡者。

代碼智能提示快捷鍵

上面的代碼提示功能是鍵盤輸入驅(qū)動的,比如當你輸入 -
的時候回驅(qū)動參數(shù)自動補全功能客们。但是如果你輸入 -
之后失去了鼠標焦點崇决,或者將一個參數(shù)刪除到了 -
的時候,這種情況下是不會自動驅(qū)動代碼補全功能的底挫。但是可以用快捷鍵進行強制啟動智能提示功能嗽桩,快捷鍵為
ctrl+D 或者Mac系統(tǒng)下的 cmd+D 組合鍵盤。

鼠標懸停提示

鼠標懸停提示功能就是當你鼠標放在一個命令或者參數(shù)上的時候凄敢,會自動提示這個命令或者參數(shù)的相關解釋。此功能已經(jīng)實現(xiàn)湿痢,但是需要花時間補充相關的解釋文檔涝缝,會很快跟大家見面的扑庞。注意:鼠標懸停提示只針對gmt的命令區(qū)域有效,不在其他地方出現(xiàn)拒逮,就如下面的動圖中演示的那樣罐氨。

安裝

由于Pro版插件的開發(fā)耗費了大量的時間和精力,所以沒有免費版滩援≌ひ或許眾籌是個思路!

需要的可以訪問此鏈接獲取安裝包下載口令玩徊,SciByte公眾號里面回復此口令就可以得到安裝包下載地址租悄。
下載完成后按下圖的方式安裝即可,也是非常容易的恩袱。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泣棋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子畔塔,更是在濱河造成了極大的恐慌潭辈,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澈吨,死亡現(xiàn)場離奇詭異把敢,居然都是意外死亡,警方通過查閱死者的電腦和手機谅辣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門修赞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屈藐,你說我怎么就攤上這事榔组。” “怎么了联逻?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵搓扯,是天一觀的道長。 經(jīng)常有香客問我包归,道長锨推,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任公壤,我火速辦了婚禮换可,結果婚禮上,老公的妹妹穿的比我還像新娘厦幅。我一直安慰自己沾鳄,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布确憨。 她就那樣靜靜地躺著译荞,像睡著了一般瓤的。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吞歼,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天圈膏,我揣著相機與錄音,去河邊找鬼篙骡。 笑死稽坤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的糯俗。 我是一名探鬼主播尿褪,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼叶骨!你這毒婦竟也來了茫多?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤忽刽,失蹤者是張志新(化名)和其女友劉穎天揖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跪帝,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡今膊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了伞剑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斑唬。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖黎泣,靈堂內(nèi)的尸體忽然破棺而出恕刘,到底是詐尸還是另有隱情,我是刑警寧澤抒倚,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布褐着,位于F島的核電站,受9級特大地震影響托呕,放射性物質(zhì)發(fā)生泄漏含蓉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一项郊、第九天 我趴在偏房一處隱蔽的房頂上張望馅扣。 院中可真熱鬧,春花似錦着降、人聲如沸差油。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厌殉。三九已至食绿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間公罕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工耀销, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留楼眷,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓熊尉,卻偏偏與公主長得像罐柳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子狰住,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345