天天看點

bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

Generic Mapping Tools (GMT)是地學界應用非常廣泛的一款繪圖兼資料處理的開源軟體。其開發團隊也是非常活躍,此軟體還在不斷的發展和更新中,變得越來越強大。目前已經有164個子產品,而每一個子產品又有很多指令參數。因為gmt是指令行軟體,沒有GUI界面,是以使用者必須記住,或知道怎麼從官方文檔中查詢這些參數并知道如何使用它。說起來容易,做起來難,如此大量的指令及參數,就連作者這樣的深度使用者都無法記住,也需要常常去通路文檔查找指令和參數。這是gmt使用者面臨的一大難題,也是初學者望而生畏的原因。 本文将介紹作者自己開發的一款VScode (Visual Studio Code) 插件,不僅可以提升gmt腳本檔案的顔值,而且還具有強大的代碼自動補全功能和智能提示功能,再也不用擔心-J後面跟啥參數這樣的問題了!

GMT的工作方式

GMT其實是由一系列的指令行程式組成的,每一個子產品(比如 pscoast)就是一個單獨的程式。而要完成一張圖的繪制,直接在終端一個一個敲指令肯定不現實,效率太低。一般可取的處理方式就是将一系列指令寫在一個腳本檔案中:windows系統中就是大家熟悉的批處理檔案,通常以 .bat 為字尾名;而Mac系統和Linux系統中是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.legendgmt end show
           

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

bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖1: GMT官方例子22

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

GMT腳本編輯器 : VScode

既然我們要用腳本檔案的方式來編輯和運作GMT指令集,那麼準備一個強大且美觀的代碼編輯器是必須的,工欲善其事必先利其器嘛!這種神器有沒有呢,答案是肯定的,而且還不止一種選擇,比如常用的 VScode, sublime, atom ,這三款都是跨平台的,而且其使用者也都非常多,都有自己的一部分鐵粉。當然了,很多大神看到了可能就不服氣了,說為啥不提我 vim ,這個是很強大,但是本人就是不喜歡用。除此之外還有windows下的 notePad++ ,這個似乎沒有Mac版本。當年還在用win系統的時候,用過一段時間,還湊合,不過放棄它已經很久了。

工具這麼多,蘿蔔青菜各有所愛,本人最喜歡VScode。這是個跨平台的,也就是你所有的使用習慣和軟體配置以及插件,換了系統照樣使用,完全不影響。VScode的使用者社群越來越龐大,很多大神們也貢獻了各種各樣的插件,使得VScode相當的好用!雖然像C++, python, java script這樣的程式設計語言已經有了太多太多好用的插件,但是GMT至今還沒有人貢獻GMT的插件(包括代碼高亮)。雖然GMT算不上程式設計語言,但是其指令之多參數之複雜,在某種程度上也可以算成一種腳本語言了。由于沒有GMT插件,導緻在使用的時候很難忍受它的顔值,那就來自己開發一個插件。下面我就來介紹這個插件:vscode-GMT

vscode-GMT

功能

代碼高亮

這個是基本款,隻有代碼高亮功能。目前是v0.0.2版本,可以高亮顯示的内容有:

  • gmt : gmt 這個詞
  • gmt的所有子產品名稱: 比如 pscoast
  • gmt的所有子產品的參數名稱:比如 -J, -G 等
  • gmt的所有配置參數,比如 MAP_GRID_CROSS_SIZE_PRIMARY
  • gmt内置的所有顔色名稱,比如 lightblue
  • gmt的所有投影參數,比如 -JM, -JX
  • 一些其他的bash類文法,比如數字,變量等

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

bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖2: 沒有使用vscode-GMT插件的素顔代碼

有人會問了,gmt的腳本檔案就是bash檔案呀,vscode已經有了bash的代碼高亮插件了,為啥還是沒有高亮?因為vscode的bash代碼高亮的插件隻是針對一小部分的bash文法和關鍵詞進行高亮的,其效果非常有限,正如上圖所示。大量的gmt指令它是識别不了的,想想這也是不可能的事兒。

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

bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖3: 使用vscode-GMT插件之後的美顔照

顔色主題

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

  • OneLight-gmt
  • OneDark-gmt

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

bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖4: vscode-GMT增強型亮色主題(OneLight-gmt)顯示效果

bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖5: vscode-GMT增強型暗色主題(OneDark-gmt)顯示效果

安裝

vscode-GMT的安裝非常簡單,跟vscode的正常插件安裝方法相同,可以線上安裝。因為我已經将此插件釋出到了vscode Marketplace上了,見下圖。

bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖6: vscode-GMT插件在Marketplace上的效果截圖

可以直接在vscode上聯網安裝,在插件管理器中輸入 gmt 就可以搜到我的插件了,然後點選安裝即可生效,見下圖。

bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖7: 在vscode插件管理器中線上安裝的界面截圖

切換專屬增強型主題的方法與正常切換主題的方法一樣,隻需要在主題搜尋欄中輸入gmt就可以過濾出來 OneLight-gmt 和 OneDark-gmt 這兩個專屬主題。操作流程為 ctrl+p -> 輸入>color theme -> 點選第一個 -> 輸入gmt 即可看到這兩個主題名字,點選即可。 第二種方法更簡單,在插件管理器中搜尋gmt,就可以找到已經安裝了的gmt插件,點選就可以看到右邊視窗中logo旁邊有一個 Set Color Theme 按鈕,然後就會彈出這兩個主題,選擇點選其中一個即可生效。

vscode-GMT Pro

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

功能

文法高亮

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

代碼自動補全

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

  • gmt子產品名稱: 輸入gmt然後按空格就會提示所有的gmt子產品指令和相應的解釋說明,可以按上下鍵進行選擇,選中後按Tab鍵就可以自動補全指令。
bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖8: gmt子產品自動補全示範

  • gmt子產品的參數:當輸入 gmt 然後選擇某個子產品指令之後,隻要按下 - 鍵就可以自動提示所有的與此子產品有關的參數和解釋,這個是非常實用的功能。同樣可以按Tab鍵進行補全。
bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖9: 子產品參數自動補全示範

  • -J參數後面的投影方式: 當輸入 -J 後會自動彈出提示可選的投影方式,同樣用上下鍵選擇,可以看到每個投影方式的解釋,然後用Tab鍵生效(補全)。
bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖10: 投影參數自動補全示範

  • -G和-S參數後面的顔色:與-J參數的自動補全類似,隻不過這兩個參數後面跟的是可選的顔色名稱。
bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖11: -G和-S顔色參數自動補全示範

  • 所有的gmt内置變量: 比如當你輸入 map 就會自動提示所有與map相關的内置變量,支援模糊輸入,這對于沒有準确記住内置變量名稱的情況非常有幫助。大大提升了效率。
bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖12: gmt内置變量的自動補全示範

代碼智能提示快捷鍵

上面的代碼提示功能是鍵盤輸入驅動的,比如當你輸入 - 的時候回驅動參數自動補全功能。但是如果你輸入 - 之後失去了滑鼠焦點,或者将一個參數删除到了 - 的時候,這種情況下是不會自動驅動代碼補全功能的。但是可以用快捷鍵進行強制啟動智能提示功能,快捷鍵為 ctrl+D 或者Mac系統下的 cmd+D 組合鍵盤。

bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖13: 智能提示快捷鍵 ctrl+D 或 cmd+D

滑鼠懸停提示

滑鼠懸停提示功能就是當你滑鼠放在一個指令或者參數上的時候,會自動提示這個指令或者參數的相關解釋。此功能已經實作,但是需要花時間補充相關的解釋文檔,會很快跟大家見面的。注意:滑鼠懸停提示隻針對gmt的指令區域有效,不在其他地方出現,就如下面的動圖中示範的那樣。

bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖14: 滑鼠懸停提示示範

安裝

由于Pro版插件的開發耗費了大量的時間和精力,是以沒有免費發行。如果想擷取,請從底部的【了解更多】按鈕處擷取下載下傳密碼,然後在我的公衆号裡面回複此密碼就可以得到安裝包下載下傳位址。 下載下傳完成後按下圖的方式安裝即可,也是非常容易的。

bat實用代碼_GMT文法高亮-智能提示-代碼補全插件GMT的工作方式GMT腳本編輯器 : VScodevscode-GMT功能代碼高亮顔色主題安裝vscode-GMT Pro功能文法高亮代碼自動補全代碼智能提示快捷鍵滑鼠懸停提示安裝

圖15: Pro版插件安裝流程截圖

繼續閱讀