jEdit分類文章 顯示方式:簡文 | 列表

2007年11月17日

[jEdit] 使用BeanShell巨集自行擴充功能

jEdit提供了多種擴充機制(BeanShellJPython等)讓使用者能自行增加功能,原本以為擴增的程序會很複雜,並且可能要使用不熟悉的語法來撰寫,沒想到原來BeanShell根本就是Java的語法,如果你已經會Java了,那麼幾乎不用學習就能馬上用BeanShell寫擴充巨集了。最快學會擴充巨集的方法,就是由閱讀其內建的巨集程式開始。

首先用jEdit開啟C:\Program Files\jEdit\Macros\Text\Insert_Date.bsh,我們看到的就像是一個標準的Java程式,先是定義了一個函數insertDate( ),最後面再叫用此函數,百分之九十五的程式都是一看就懂,在第53~55行的地方才是我們要注意的重點:
  // inserting date and internet time to textarea
textArea.setSelectedText(Calendar.getInstance().getTime().toString()
+ " @" + (int)swatch + " /Internet Time/");
此段程式使用系統變數textArea的setSelectedText( ) method把目前時間插入選取文字。

jEdit有幾個預設好了的系統變數,用來表示jEdit的各項主要元件,透過這些變數就能存取jEdit的各個設定並做需要的操作:
  • textArea:代表的是編輯區的文字區域
  • buffer:代表了目前編輯中的檔案緩衝區
  • view:代表了目前編輯中的檢視物件,UI的輸出都要透過此物件
第58~61行出現了另一個jEdit的類別Macros:
if (buffer.isReadOnly())
Macros.error(view, "Buffer is read-only.");
else
insertDate();
buffer.isReadOnly( )判斷目前編輯檔案是否是唯讀狀態,如果是唯讀的檔案則不能插入時間,而以Macros.error( )於當前的view顯示錯誤對話窗。Macros類別提供了許多放的method,按F1開啟jEdit Help找到'jEdit API Reference'裡的org.gjt.sp.jedit package,其內有包含Macros在內的許多系統類別;Macros有幾個method經常會使用到:
  • Macros.error(view, "message"): 顯示錯誤訊息窗
  • Macros.message(view, "message"); 顯示訊息窗
  • Macros.input(view, "message", default-value); 顯示輸入對話窗

再來看另一個巨集:C:\Program Files\jEdit\Macros\Text\Insert_Tag.bsh,這個巨集將選取文字組成HTML標籤。重點解說如下:
行號程式碼片段說明
29caret = textArea.getCaretPosition();取得目前游標位置
30tag = Macros.input(view, "Enter name of tag:");讓使用者輸入標籤名稱
32text = textArea.getSelectedText();取得選取文字
38textArea.setSelectedText(sb.toString());把組好的文字寫回選取文字
我們可以注意到caret、tag、text等變數都沒有宣告型別而能直接使用,這是BeanShell和Java的一個重大差異,在BeanShell裡的變數可以不用事先宣告且能任意變型,這個特性當然能帶來方便性,但要小心日後的維護性。

##

Posted by emisjerry at 樂多Roodo!18:47回應(0)引用(0)

2007年10月29日

[jEdit] 關鍵字(縮寫)擴展的強大插件:SuperAbbrevs

無論是稱做Live Templates(IntelliJ-IDEA)或Abbreviations(NetBeansjEdit),達成的結果都是相同的:輸入一個較短的關鍵字,再按特定按鍵(一般是Tab空白鍵)後即擴展成較多的一連串文字。例如輸入sop再按Tab則擴展成System.out.println("");。原本以為IntelliJ-IDEA的作法已經很有彈性了,沒想到SuperAbbrevs更是方便。

要使用SuperAbbrevs當然是先由Plugin Manager安裝此插件,再把jEdit提供相同功能的Abbreviations的Space bar expands abbrevs給關閉,以免互有干擾。

使用縮寫擴展

預設的擴展按鍵是Tab鍵,例如輸入class再按Tab,編輯區會出現原本建立好的樣板文字,並且游標會移到定義好的位置讓使用者輸入,輸入完畢後再按Tab移到第二個定位處,繼續輸入再按Tab...重覆此步驟直到定位處皆擴展完畢;而要退回上一個欄位是按Shift+Tab

請使用幾個縮寫關鍵字多試幾次就會清楚其操作方式了。另外,不同的檔案格式(jEdit稱為編輯模式)使用不同的縮寫設定,另外也可設定一組所有模式共用的Global縮寫。可惜不能讓幾個Mode共用同一組設定,例如JSP與Java無法共用而必須分別設定。

建立縮寫的方法

用Plugin Options再進入SuperAbbrevs新增縮寫是標準作法,但步驟多了點,其實我們可以用下列步驟以快速建立縮寫關鍵字及其內容:
  1. 先在編輯區裡輸入你要使用的縮寫關鍵字,例如:class
  2. 輸入好後按Shift+Tab,編修縮寫的對話窗就會出現供你編輯樣板內容

在樣板裡可以用$1、$2等來指定按Tab時的定位點,$1是第一個定位點,$3是第三個定位點,以此類推。這些定位定義能夠重覆多次,當相同的定義輸入後,別的同名的定義會自動更新成輸入的內容。例如我們設定一個縮寫itar (Iterate Array):
  for (int $1=0; i < $2.length; $1++) {
$3 $4 = $2[i];
out.println("$2[" + $1 + "] = '" + $4 + "';");
$end
}
解釋上面的使用意義:
  1. 共定義了4個定位變數$1、$2、$3、$4
  2. $1 供使用者輸入計數變數名,我們可以將$1加上額外屬性,讓游標進入$1位置時顯示此額外文字:${1:i} 或 ${1:counter} 或 ${1:計數器變數},提示文字依需求自行指定
  3. $2 是陣列變數名稱
  4. $3 是變數$4的型別
  5. $4 是存放陣列一個元素的變數
  6. $end是最後游標停留的位置
加入提示文字後的內容如下:
  for (int ${1:計數器}=0; i < ${2:陣列}.length; $1++) {
${3:型別} ${4:元素變數} = $2[i];
out.println("$2[" + $1 + "] = '" + $4 + "';");
$end
}
另外,還可以用${1=函數}的方法把輸入的文字做格式變化,例如下列產生get/set程式片段,其中的firstUp( )就是把輸入文字的第一個字元轉成大寫:
/**
* Getter function for the field $1
*/
public ${2:Type} get${1=firstUp(s)}() {
return ${1:field};
}
/**
* Setter function for the field $1
*/
public void set${1=firstUp(s)}($2 $1){
this.$1 = $1;
}

轉換用函數主要是放在C:\Documents and Settings\使用者\.jedit\SuperAbbrevsn\abbrev_functions.bsh裡。

 

## 


Posted by emisjerry at 樂多Roodo!22:46回應(2)引用(0)

2007年10月28日

[jEdit] 方便的主控台插件Console

Console是jEdit的一個功能強大的插件,其文件列舉了四大功能:
  1. 執行外部的程式與命令
  2. 解析外部命令的輸出並輸出到ErrorList插件
  3. commando功能提供圖形介面以產生XML檔供命令列使用
  4. 提供可擴充的功能平台供別的插件輸出使用
看來功能頗為強大與複雜,以下僅以我有試過的部份做介紹。

Console插件的設定

  1. 我 們必須在Plugin Options裡把Console的字元編碼方式改成x-windows-950,才能在Console裡正常顯示繁體中文:【功能表 Plugins→Plugin Options...→Console→General→Character encoding】選取x-windows-950
  2. 我 們也可以設定一個快捷鍵來開啟Console對話窗:【功能表Utilities→Global Options...→Shortcuts】,在Edit Shortcusts裡選取Plugin: Console→在Command欄位裡找到Console後,在Primary shortcut按一下,再按下你要用來顯示Console視窗的按鍵。
  3. 或者,也可以再把它放到側邊,我以下列步驟把Console停 駐在底部:【功能表Utilities→Global Options...→Docking】找到Console後把它的Docking position由floating改成Bottom,如此Console就會顯示在底部,按一下Console按鈕就能切換顯示與否。

Console的系統Shell使用

Console內建兩個Shell:System shell與BeanShell shell,System shell讓我們在jEdit裡執行作業系統的各項指令,BeanShell shell則提供jEdit內的BeanShell直譯器供我們操作。
  • 在系統Shell裡我們可以執行作業系統的命令,如dir、copy、del等。指令輸入時可以按Tab 鍵做自動完成(Auto Complete)的動作,例如要查看目前資料裡有那些AU開頭的檔案,們可以用dir AU*.*,也可以用dir AU{按Tab}:
D:\DOC> dir AU{按Tab鍵}
/-- Possible completions:
autoCorrect.txt
autocvs.bat
autoexp.doc
AutoRuns.txt
\-- End of completions.
  • 用cd指令可以切換到別的資料夾,但要切換到另一個磁碟機時,不能如同在DOS提示命令裡一般用C:或D:變換,必須用 cd 磁碟機代號 的方式同時切換磁碟機和資料夾。
  • 回到切換之前的資料夾:用 cd - 或只輸入減號
  • 回到使用者的家目錄:用 cd ~ 或只輸入 ~ 字元 (即C:\Documents and Settings\使用者代碼)。
  • 如果我們要把Console命令的執行結果寫回jEdit編輯區的話,輸入命令後不要按Enter,而是改用Ctrl+Enter,那麼執行後的內容會導向到新的編輯區裡。例如:把dir的目錄內容寫到編輯區裡。

Console的環境變數

Console的環境變數能以Windows格式(%環境變數%)、UNIX格式(${環境變數})或$環境變數來取存,其內建的環境變數列舉幾個:
內建變數功用說明
${c}目前編輯中的Base檔名Java檔案會以完整的類別名稱顯示(即com.xxx.yyy.類別的格式),其他則以不含路徑與副檔名的Base name格式顯示
${d}目前編輯中的檔案目錄名稱 
${f}目前編輯中的檔案完整名稱包含路徑、Base name、副檔名等的完整檔名
${n}目前編輯中的檔案完整名稱包含Base name和副檔名
${JEDIT_HOME}jEdit的系統目錄在Windows裡是"C:\Program Files\jEdit"
${JEDIT_SETTINGS}jEdit設定檔案之存放目錄在Windows裡是"C:\Documents and Settings\使用者代碼\.jedit"
以上這些變數有何用處呢? 一個簡單的應用是把編輯中的檔案在Console裡送交到Subversion,例如:
svn commit -m "增加日期的控制" ${n}

Console的內建命令

列舉幾個Console的內建命令:
內建命令功用範例
%browse 路徑開啟檔案系統瀏覽器至指定的路徑%browse c:\windows\system32
%browse -n 路徑以新視窗開啟檔案系統瀏覽器至指定的路徑%browse -n c:\windows\system32
%edit 檔案開啟指定的檔案到新的編輯區%edit c:\windows\system32\eula.txt
%run 腳本檔名執行BeanShell等scripts 
%help顯示Console的說明文件 
%{按Tab鍵}輸入百分號後再按Tab鍵,會顯示所有Console的內建命令 


Console的commando留待下回再行說明了。

## 


Posted by emisjerry at 樂多Roodo!19:20回應(0)引用(0)

2007年10月26日

[jEdit] 系統畫面組成之說明

以下畫面係取材自美國Denison大學Using jEdit一文;文字則為本人所寫。

1. jEdit的外觀(View)

  • 這是把組成jEdit的各個組件一次呈現的畫面。左、右兩側的檔案系統瀏覽器與剪輯器(Clipper,這個翻譯不知是否妥當?)是可以用Docker插件將之設成自動隱藏,如此才不會佔用編輯區的可用空間。在下面的畫面再將各個組件做細部介紹。
  • 畫面底部左、右一、右二、右三位置可以雙擊開啟對話窗
位置功用雙擊功能
左側游標列位置,行位置 當頁在檔案位置的百分比Go to Line,可輸入游標要移到那一列
右一(目前的編輯模式,摺疊模式,編碼)jEdit的編輯模式(Mode)比較像是程式語言的樣板,摺疊模式則是把程式區塊收起與展開的設定。

雙擊開啟緩衝區選項設定對話窗。

jEdit的緩衝區(Buffer)指的是開啟檔案的記憶體內容,可以簡單的先當做就等同於編輯的檔案
右二列的分隔字元模式雙擊切換成Windows、Mac OS、Unix等三種換行符號
右三Java記憶體使用狀況雙擊時會執行記憶體回收處理

2. 檔案系統瀏覽器(File System Browser)

  • 用來尋找檔案、建目錄、刪檔案等的檔案操作
  • 按Commands按鈕能直切變換資料夾到家目錄、根目錄等
  • 常用的資料夾則可自行加到Favorites裡

3. 工具列

  • 工具列圖示可以在【Utilities→Global Options...→Tool Bar】裡自行更換

4. 編輯區

  • 文字處理的主要區域,右鍵功能表可以用其【Customize This Menu...】來設定

5. 緩衝區頁籤(BufferTabs)

  • BufferTabs是另行安裝的插件,方便做檔案切換

6. Clipper插件

  • Clipper也是要自行安裝的插件,常用的文字內容供快速引用

Posted by emisjerry at 樂多Roodo!23:46回應(0)引用(0)

[jEdit] 指定啟動參數以提升運行效率

在Windows裡是使用jedit.bat來啟動jEdit,此批次檔的內容如下:
@echo off
start "jEdit startup" "C:\JDK1.6\bin\javaw.exe" -Xms64M -Xmx192M -jar "d:\jEdit\jedit.jar" -reuseview %*
  • jedit.jar: 是jEdit的主程式
  • -Xms64M: 設定啟始記憶體為64M
  • -Xmx192M: 設定最大記憶體為192M
若你經常要編輯超大檔案,則可將192的值變大;若你的記憶體較少,可以把64改小一點使記憶體用少一些。

另一個提升開檔速度的方法是用「兩階段」啟動,這個方法適合記憶體較多的環境使用:
  • 將下列批次檔(可命名為jedit_server.bat)內容存入啟動資料夾,讓Windows登入後自動執行,以建立jEdit的主機環境(Server mode):
rem d:\jEdit是jEdit的安裝資料夾
"d:\jEdit\jEdit.bat" -background -nogui
  • 爾後再用jedit.bat啟動時,因為大部份需要的資源都已存在記憶體裡了,因此能很快的顯示出jEdit視窗

 ##


Posted by emisjerry at 樂多Roodo!0:15回應(0)引用(0)

2007年10月25日

jEdit編輯器的初始設定與必裝插件

jEdit是以Java開發的,因此在安裝jEdit之前必須先安裝Java的開發套件(就是慣稱的JDK)。

2007/10/28修訂:由於網友的建議,我把要下載的部份再多做更精確的補充:
  • 如果不準備使用Java做開發,請安裝JRE即可(下載網址如上列之JDK網址,選Java Runtime Environment (JRE) 6 Update 3),檔案大小為13.93 MB
  • 如果會以Java做開發則請安裝完整的開發套件:JDK 6 Update 3,檔案大小為65.64 MB
  • 如果原本已經有安裝了JRE或JDK,請確定至少是1.5或以上的版本;部份新版的插件都要求必須有1.5版。請用regedit.exe檢視現有使用的JRE/JDK版本:
    • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment其內的CurrentVersion就是你安裝的JRE版本
    • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit 其內的CurrentVersion就是你安裝的JDK版本


安裝時先以預設值安裝即可。啟動後第一個感覺應該都是「真是醜弊了」吧:-)

請先用下列步驟來美化它的外觀:
  • Icons and Images網頁下載調整過、較美觀的圖示,我使用的是這個XP樣式的圖示
  • 將下載的檔案複製到你的JDK安裝資料來\jre\lib\ext資料夾裡
重新啟動後果然整個美觀不少。如果仍然不甚滿意的話,我們可以用【Utilities→Global Options...→Tool Bar】在要變更的圖示上按一下,再按視窗下方最右邊的修改按鈕,再指定新的圖示(大小約為22x22)。


jEdit 的插件安裝非常簡單,打開【Plugins→Plugin Manager...→Install】勾選要使用的插件後按Install就可以了,而且安裝後立即生效不用重新啟動jEdit。插件的預設目錄是% USERPROFILE%\.jedit\jars(亦即C:\Documents and Settings\用戶名稱\.jedit\jars),如果你希望要把設定存到jEdit安裝目錄以方便攜帶時,請務必在安裝插件之前先做下列設定:
  • 【Utilities→Global Options...→Plugin Manager】將原本的jEdit settings directory改成jEdit application directory

以下是我建議要先安裝的插件:
插件名稱功用
BufferTabs將開啟檔案以頁籤樣式呈現。在Plugin Options裡勾選Enable BufferTabs by default;頁籤預設顯示在底部,也可由選項變更移動到上方。
原本顯示在上方的檔案切換列則可由【Utilities→Global Options...→View】將Show buffer switcher取消勾選
ColumnRuler在文件編輯區上方顯示水平尺規,以方便檢視文字長度與游標位置。在Plugin Options裡勾選Active by Default
Console顯示類似DOS命令列視窗,可方便檔案的copy、delete等操作
Docker側邊停駐設定管理,jEdit裡的視窗可以自由放置到側邊
EditorScheme編輯器配色樣式選擇,可以做更進一步的美化
MacroManager巨集管理程式,方便管理巨集
OpenIt指定好搜尋路徑,輸入部份檔名自動篩選出符合的檔名
ProjectViewer專案管理的瀏覽器,還可將數個專案組成一個群組,例如Web專案,與Java專案整併成開發專案,屆時開啟ProjectViewer時能很方便的在專案間切換目錄與找尋檔案
SideKick剖析檔案的語法結構形成樹狀以方便檢視

jEdit的一個方便之處是文件還算完整,安裝插件的同時,其說明文件也整合到Help系統裡,由Plugin Manager右下方的Help也可以輕易的連結到。

接著將插入放置到側邊:
  • 開啟【Utilities→Global Options...→Docking】
  • 預設的視窗停靠點都是floating(浮動式),我的操作習慣是將File Browser、Project Viewer、Sidekick都變更到左側
打開側邊的某個視窗後,該視窗會一直保持開啟狀態,透過Docker插件就以做自動隱藏(Auto-Hide)的設定,如果把File Browser設成Auto-Hide,則由File Browser點選某個檔案後並開啟後,File Browser就會自動隱藏;設定步驟如下:
  • 【Plugins→Plugin Manager...→Docker】
  • 把4個位置的Auto Hide都打勾
  • 由下拉選單中選取不要自動隱藏的視窗用Add加進入Override清單裡
##

Posted by emisjerry at 樂多Roodo!23:37回應(0)引用(0)

文字編輯器印象與jEdit

說起文字編輯器(Text Editor)的重要性,或許是比IDE(Integrated Development Environment)還更重要。IDE把編輯、編譯、偵錯等編程流程都整合在一套工具裡,讓程式師能很方便地編寫程式,但隨著功能越來越多,耗用的系 統資源也越多,活脫就是大恐龍的翻版,在Java的環境裡,無論是IntelliJ-IDEANetBeansEclipse,都是龐然巨物。因此,當只是要編輯文字檔、XML檔、HTML檔、JSP檔等文本檔案時,一般都會使用適合的文字編輯器,在眾多的文字編輯器裡,根據我個人的非正式統計,使用率最高的應該是UltraEdit。UltraEdit應該是個很好的編輯器,但可惜我從來都沒用過,因此無法進一步評斷高下。

以下我把我仍有印象且使用過的編輯器臚列如下:
編輯器名稱作業系統說明
EdlinDOS可能大多數人都不知道這個編輯器吧 :-) 陽春的行編輯器(Line Editor)
PE2DOS+倚天中文在PC席捲市場初期,市面上找不到像樣的編輯器,當IBM的PE2出現且無料流通後,PE2幾乎是人手一套,接著就出現了許多國人模仿的xxE編輯器
漢書WindowsWindows 95以後,編輯器的選擇就更多了,當時因為專案的關係,使用了許久的漢書(Hyper Editor,HE)
EmEditorWindows當Unicode逐步出現在各式文件後,不支援Unicode的漢書只能被支援良好的EmEditor取代了。EmEditor出自日本,因此對於中文有很好的功能性
PSPadWindowsPSPad是這幾年用得最久的編輯器,但它對中文的支援不佳,游標在中文區域裡移動時,經常會造成中文顯示異常,因此有時必須和EmEditor合用才能完成中文文字的修改
jEdit跨平台由於使用Linux的機會變多,因此希望能找到在各作業系統裡都能使用的編輯器,此時老牌的jEdit就脫穎而出了

jEdit是以Java開發的功能強大編輯器,擴充能力超強,有150多個插件(Plugin)可供直接擴充,我們也可以使用BeanShell腳本語言自行撰寫巨集。經由Google搜尋,發現jEdit的繁體中文介紹相當缺乏,因而自不量力地將在日後逐步介紹jEdit,希望讀者們能更了解這個方便的編輯器,而能大幅增進工作的生產力。

##


Posted by emisjerry at 樂多Roodo!0:38回應(0)引用(0)
 [1]