jEdit 設定集


設定文件使用的緩衝區編碼為 UTF-8

[功能表] → Utilities → Global Options → jEdit → Encoding → Default character encoding = UTF-8


設定文件使用的格式為 Unix

[功能表] → Utilities → Global Options → jEdit → General → Default line separator = Unix(\n)


設定顯示區域使用的字型為支援 Unicode 的字型

將字型放在 Java 的 lib\fonts 資料夾,重新啟動 jEdit,即可在挑選字型的清單找到它。

[功能表] → Utilities → Global Options → jEdit → Text Area → Text Font = DialogInput

Java 以前不支援文字渲染,所以有些字型在舊版 jEdit 有字數過長時程式變慢的問題,建議使用 5.6 版。


如何 Ctrl + Y 復原

Ctrl + e,然後按 Ctrl + z

不習慣的話,可修改 Shortcuts。


避免自動對齊功能使用 Tab 字元

[功能表] → Utilities → Global Options → jEdit → Editing → Change settings for mode → global defaults → Soft (emulated with spaces) tabs = (核取)

[功能表] → Utilities → Global Options → jEdit → Editing → Change settings for mode → Java → Use default settings


減少錯誤縮排

使用預設的:

[功能表] → Utilities → Global Options → jEdit → Editing → Mode Settings → Automatic Indentation = Full

設定為 Simple 的話,會連字元游標後面的空白或 Tab 都一起縮排,變成錯誤縮進。


避免按 { 字元時自動縮排

[功能表] → Utilities → Global Options → jEdit → Editing → Change settings for mode → global defaults → Indent width = 1

[功能表] → Utilities → Global Options → jEdit → Editing → Change settings for mode → Java → Use default settings


多行縮排

選取多行然後按 Tab 鍵,會整列增加縮排。

選取多行然後按 Shift + Tab 鍵,則是整列減少縮排。


縱向選取

Alt + \ 後,可用 Shift + 方向鍵 縱向選取,適合多行修改。


複合選取

Ctrl + \ 後,可用 Shift + 方向鍵 跳躍式選取不同區塊來修改。


複製當前行、移動當前行

這些功能放在 [功能表] → Macros → Edting 的 Duplicade Lin Belowe、Move Lines Down、Move Lines Up,請自行建立快捷鍵(Shortcut)。


程式碼片段

jEdit 也有像 Visual Studio Code 的 Snippets 功能,敲簡單幾個字後按 Tab 鍵,會轉換成程式片段。請到如下位置設定:

[功能表] → Utilities → Global Options → jEdit → Abbreviations

預設按空白鍵轉換,但必須勾選 Space bar expands abbrevs

要修改成 Tab 鍵的話的話:

[功能表] → Utilities → Global Options → jEdit → Shortcuts → Expand Abbreviation = Tab


自訂語法高亮度關鍵字

進入 jEdit 所在資料夾,再修改 modes 裡面各語法的 xml 檔。


*.html 的 <style></style> 遇到含 : 字元的屬性就解析錯誤

jEdit 5.1.0 有這個問題,但 jEdit 5.2pre1 有解決。

可以考慮把 html.xml 裡面的如下語法給刪除:

<!-- stylesheet -->
<SEQ_REGEXP TYPE="MARKUP" DELEGATE="STYLE_TAG"
    HASH_CHAR="<"><(?=STYLE\b)</SEQ_REGEXP>


讓 JavaScript 支援 Template literal 的多行字串與插值

編輯 modes 資料夾裡的 javascript.xml,如下修改內容:


如果你想讓變數名稱和 ${} 符號不同色的話,上面的設定修改為:


或者直接下載 Roman Tsourick 修正好的 javascript.xml,網址是:

http://sourceforge.net/p/jedit/patches/613/


套用第三方語法高亮度配色主題

jEidt 雖然能修改高亮度顏色,但資料與整個 jEdit 的組態檔放在一起,無法個別保存,不容易將自訂好的主題配色分享給他人套用。

透過 Plugins 下載 Editor Scheme 即可解決這個缺憾,可以自行製作多種主題配色,而且已內建多套主題配色。


顯示空白字元

用 Plugin Manager 下載 WhiteSpace

記得到 Plugin Options 設定預設開啟,順便調整顏色。


取消 80 字元準線

[功能表] → Utilities → Global Options → jEdit → Text Area → Wrap guide = (不核取)


開啟行號

[功能表] → Utilities → Global Options → jEdit → Gutter → Line numbering = (核取)


設定行號的字型

[功能表] → Utilities → Global Options → jEdit → Gutter → Gutter font = DialogInput


啟用摺疊功能

[功能表] → Utilities → Global Options → Editing → Folding mode → indent

這會根據縮排來摺疊,速度快又實用。

設定為 explicit 是摺疊 {{{ 開頭和 }}} 結尾。


Folding markup

jEidt 有一套自己摺疊內容的語法,首先在文件開頭加入這段宣告:

<!--:folding=explicit:collapseFolds=1:-->

然後將想要摺疊起來的內容,用下面所示標記包起來,就可以摺疊了:

<!--{{{ 註解 -->

<!--}}}-->


關閉預設的緩衝區選擇器

[功能表] → Utilities → Global Options → jEdit → View → Show buffer switcher = (不核取)


頁簽式緩衝區選擇器

用 Plugin Manager 下載 BufferTabs

[功能表] → Plugins → Plugin Options → BufferTabs → Enable BufferTabs by default = (核取)

設定頁簽式緩衝區選擇器的位置:

[功能表] → Plugins → Plugin Options → BufferTabs → Location on BufferTabs = top


啟用 Java Swing 外觀

[功能表] → Utilities → Global Options → Apperance:

1. Draw window borders using Swing look & fell = (核取)
2. Draw dialog box borders using Swing look & fell = (核取)

重新啟動 jEdit。


更換工具列圖示

將下載回來的 JAR 檔案放到 JRE 的 lib\ext 裡面。

例如 gnome_jedit_icons.jar 檔案。


手動調整程式視窗大小

修改 Documents and Settings\[User]\.jedit\perspective.xml

WIDTH="800" HEIGHT="600"


取消自動備份

[功能表] → Utilities → Global Options → Autosave & Backuspan = (全部空白)


開啟檔案時預設為作用中文件所在資料夾

[功能表] → Utilities → Global Options → File System Browser → General→ Default path = Parent directory of current buffer


自動偵測與手動切換字元編碼


自動

[功能表] → Utilities → Global Options → Encodings → List of fallback encodings 輸入會用到的字元編碼,像是 Big5 和 UTF-16,並勾選 Auto-detect file encoding when possible


手動

[功能表] → File → Reload with Encoding

可在 [功能表] → Utilities → Global Options → Encodings → Selected encoding(s) 設定可選的字元編碼。

由於 MS950 是 jEdit 必定可選的字元編碼 ,因此不用設定 Big5 和 GB2312,只要留 UTF-16 即可。預設使用 UTF-8 的話,也不用設定 UTF-8。


補充

jEdit 會記錄每個檔案自動偵測或手動切換後的字元編碼狀態,導致下次開始同一個檔案時,不再自動偵測正確的字元編碼,而是沿用上次使用的字元編碼。


Regular expressions 搜尋


() 捕獲群組與 $1 變數

勾選這項目,除了可以用正規式搜尋,還可以讓正規式多重匹配後,用 $1 代表結果。

比如有段文字:

PhelloAworldBR

在 Search for 用正規式的 () 多重匹配:

(P|A|BR)

在 Replcace with 輸入:

<$1>

在匹配結果前後加上 < 和 > 符號,這樣就會取代為:

<P>hello<A>world<BR>


$2 到 $9

如果有好幾組 () 匹配,可用 $2$9 表示。

比如有段文字:

worldhello

在 Search for 用兩組正規式的 () 匹配,注意!要按照會找到的順序:

(world)(hello)

第一個找到的 world 會放在 $1,第二找到的 hello 會放在 $2。於是在 Replcace with 輸入:

$2 $1

便會取代為:

hello world


在 jEdit 開啟 URL 路徑格式的檔案

在 jEdit 按 Ctrl + O 開啟檔案時,會發現無法開啟 file:// 開頭、含 # & ? 符號的路徑。

這問題可以改用 [功能表] → Macros → Files → Open Path 解決,有需要用到的人,不妨將這功能設定快捷鍵(Shortcut)。


用網頁瀏覽器開啟正在編輯的 HTML 檔案

用 Plugin Manager 下載 Console

先設定快捷鍵:

[功能表] → Utilities → Global Options → Shortcuts → Run Current Buffer

然後設定指令,在:

[功能表] → Plugins → Plugin Options → Console → Compile & Run → Set compiler/interpreter for edit mode: html → Interpreter → Use custom command

輸入:

$f

就能以預設的網頁瀏覽器開啟 HTML 檔案來檢視。

如果不想為此下載 Plugin 的話,可以自己寫個 Macro:

Runtime.getRuntime().exec("C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe " + buffer.getPath());

命名為 Run_Path.bsh,放在 jEdit 的 macros 資料夾裡,再建立快捷鍵即可。


直譯或執行正在編輯的 JavaScript 檔案

到 Plugin Manager 下載 Console

先設定快捷鍵:

[功能表] → Utilities → Global Options → Shortcuts → Run Current Buffer

然後設定指令,以 Rhino 直譯 *.js 檔案為例,在:

[功能表] → Plugins → Plugin Options → Console → Compile & Run → Set compiler/interpreter for edit mode: javascript → Interpreter → Use custom command

輸入:

java -cp ".;%JAVA_HOME%\lib\rhino.jar" org.mozilla.javascript.tools.shell.Main -version 200 -encoding UTF-8 $f

就能按快捷鍵執行正在編輯的 JavaScript 程式碼。

也可以把直譯命列寫在批次檔,跟每個 JavaScript 程式碼放在一起,改成執行批次檔裡面的命令,這時輸入的是:

$d\run.bat


Docking 往左還是往右

如果平常縮起來,要用的時候才展開,那就往右靠!因為往左靠的話,會往右展開,這時 text area 也會往右邊挪移位置,導致原本關注好的閱讀文字失去焦點。往右靠,往左展開,不會造成 text area 的文字挪移,而是就地展開。

如果永遠展開的話,沒有往右展開的問題,加上為了增加空間讓 docking 展開,會把視窗尺寸拉長,這樣還能把 text area 往螢幕中間位置挪移,更方便看文字。


File System Browser 和 File Browser 的差別

File Browser 是 open file 或 save as 之類用的檔案對話視窗,用完會自動關閉。

File System Browser 是可以 dock 到側邊欄用的視窗,這樣就會一直停留在側邊欄,方便反覆操作。

然而,在 Utilities → Global Options → Docking 中,File System Browser 也是名叫 File Browser,只能說這是可以 dock 到側邊欄的 File Browser。


HyperSearch 和 Markers 還有 Registers

除了 File Browser 可以 dock 到側邊欄,HyperSearch Results、Markers、Registers 也可以!

HyperSearch Results 是搜尋內容時,產生一個清單,能直接看所有符合的搜尋結果,通盤了解該修改的情況,方便逐筆修改內容。然而,HyperSearch 出來的對話視窗,原本就不會點了自動關閉,而是一直留著,還可以視需要調整視窗大小、視需要拖曳來拖曳去放在不同位置,以免它擋到文字,或占用文字區域的空間,因此 dock 到側邊欄不見得比較好用。

Markers 像是書籤一樣,你可以把文字檔案的不同行數,加入到 Markers 清單中,以便先到某一行修改文字後,可以點一下清單中的行數,快速回到想要的行,尤其是要在特定好幾個行跳來跳去修改時,非常好用。這原本是在功能表操作,但可以 dock 到側邊欄,滑鼠移過去就能點來用,順手很多。

Registers 是複製貼上的內容檢視器,但沒那麼簡單,你可以在檢視器先修改複製的內容,在逐一貼上到想要的地方。這功能原本要點 Edit > More Clipboard > View Registers 叫出來,但也可以 dock 到側邊欄,滑鼠移過去點一下就能用。


內建的 QuickNotepad 非常邪惡

千萬不要用 QuickNotepad 打開任何檔案,它會把非 ASCII 字元編碼的檔案變成亂碼後儲存檔案,導致內容全毀!

QuickNotepad 是 jEdit 內建的 Plugin,然而,它並不是一款簡易型文字編輯器,而是快速筆記板,主要用來 dock 在側邊欄,隨手寫一些文字內容用的。

QuickNotepad 有個看起來像「開啟舊檔」的按鈕,但那更像是電玩遊戲的「讀取進度檔」,有 Save 1.txt、Save 2.txt、Save 3.txt⋯是專門給 QuickNotepad 讀寫資料用的檔案。因為那個按鈕叫做 Choose notepad file,而不叫 Open file,你只該用它來開啟 QuickNotepad 儲存的檔案,而不是用它開啟其它檔案來檢視。

用 QuickNotepad 來開啟舊檔的話,它會以 Windows 預設的 ASCII(Big5)編碼開啟檔案。如果你這個文字檔案使用 UTF-8,就會得到亂碼!然後在關閉 jEdit 時,因為 QuickNotepad 會自動把「進度存檔」儲存起來,於是把那堆亂碼寫入檔案,你這檔案的文字內容就全毀了~

因為這東西有個 Notepad 的字樣,非常誤導人,以為是簡易型的文字編輯器。如果你平常沒在使用這功能,不清楚它其實是用來做什麼的,哪天就會犯傻用它來開啟檔案,所以強烈建議按 Plugins → Plugin Manager 把 QuickNotepad 移除,不要留著它,以免哪天帶來無可挽救的災情。

但如果你經常一邊用 jEdit,又一邊開 Windows 記事本暫時保留一些待會要用的文字內容,那 QuickNotepad 還是不錯用的。只要平常有在用,知道這是怎樣的東西,就比較不會有犯傻用它來開啟檔案的,但還是要謹守這條原則:「死都別用它 Choose notepad file 的按鈕。」


提升 jEdit 啟動速度

先建立 jedit.exe -nogui 捷徑,放在開始功能表的「啟動」裡面,這樣每次開機就預熱執行,解決 jEdit 第一次啟動時間過長的問題。

再建立 jedit.exe -background 捷徑,用來執行 jEdit,這樣會常駐在背景處理程序,每次執行都秒開。

最後是用檔案關聯的方式開啟 jEdit 也能背景執行!使用登錄編輯程式,切換到 HKEY_CLASSES_ROOT\Applications\jedit.exe\shell\open\command,編輯裡面的字串,在 "%1" 前面加上 -background。然後搜尋所有用 jedit.exe 開啟的 xxx_auto_file,同樣在每個 "%1" 前面加上 -background。


properties

jEdit 設定過的資料,會永遠留在 properties 組態檔裡面。即使把設定回復到原先的狀態、或者移除 plugin,組態檔依然會保留這些用不到的設定。長期設定下來,properties 檔案會變大,裡面有三分之二以上都是用不到的設定⋯什麼設定都想按看看、什麼 plugin 都想下載用看看,那十分之九都是殘留的設定值也不誇張。

有潔癖的人,不妨每個階段,就保存一份 properties,以便日後還原到過去乾淨的狀態。

雖然檔案大小不會很大,20KB ~ 100KB,但設定筆數 1000 行以上,對啟動速度多少有影響。

沒隨便亂修改太多設定、也沒下載一堆 plugin 的話,正常應該 10KB 以下,400 行以下。超過的話不妨打開 properties 檔案看看,裡面是不是有一堆過去殘留下來的設定~


手動清除檔案游標位置

刪除 recent.xml 檔案。


備份整個設定檔

Documents and Settings\[User]\.jedit(Windows XP)或 [User]\AppData\Roaming\jEdit(Windows Vista)資料夾保存起來,以後再放回去即可。


Java 版本問題

使用 Java 14 或以上版號,跑 jEdit 5.6 或 jEdit 5.7,在點 jEdit 視窗標題列獲得駐點的情況下,將檔案拖曳進來,有高機率讓程式當掉。

使用 Java 20 以後的版本,遇到單行文字過長,會有卡頓的情形,甚至會整個卡死不動。

也就是說,到 jEdit 5.7 為止,不適合用最新的 Java,建議使用 Zulu 13.0.14

希望預覽版的 jEdit 5.8 在正式推出後,有解決這問題,能用最新版的 Java 執行。


jEdot 版本問題

5.7 版的 Default line separator 有 BUG,下拉清單是空的,導致如果設定過 Global Options 的話,換行字元的設定會清空,變成作業系統預設的。

這問題已在 GitHub 修正,但是要等到 jEdit 5.8。

在那之前,Windows 下希望預設的換行字元是 UNIX 的 \n,解決辦法是修改 startup.bsh,在裡面加入這行程式:

jEdit.setProperty("buffer.lineSeparator","\n");

這樣就會在每次啟動 jEdit 時,將 buffer.lineSeparator=\n 寫入 properties 檔案裡面,等於每次都自動設定。