題 可以刪除Notepad ++樣式嗎? (我的意思是Style configurator的語言顏色樣式)


我遇到了Unix的以下問題 .SH Notepadd ++中的文件:

如果內容用一個包裝,整個文件將用一種顏色著色 定界符 命令。例如:

**<< 'EOF0'**

Content of the document --- All of which will be dyed in a single color.

**EOF0**

圖片示例:

1 - 沒有heredoc:

enter image description here


2 - 使用heredoc:

enter image description here


為什麼我剛才描述的情況有問題:

當使用非常長的腳本時,由於一個單一的(heredoc)命令,所有的顏色都是單色的,這可能會非常煩人,當你知道在一天結束時,擁有一個多的腳本會更舒服-color文件就像沒有這個命令一樣。

我試圖解決它:

我試著去 Settings > Style configurator > Language --- Bash 並以某種方式完全刪除HERE DELEM && HERE Q,但我沒有在GUI中找到這樣的方式。

我的問題:

如何從Notepad ++中刪除這兩種樣式(或任何其他樣式),以便它們不會影響.sh文檔中的文本顏色? (在我的情況下.sh文件)?

我只是沒有這樣的包裝器(heredocs是文本包裝器)可以用任何顏色著色......我只是想完全刪除它們的“原生”Notepad ++風格......


4
2017-11-19 04:52


起源


code.visualstudio.com  我使用notepad ++來做某些事情,但是對於我做的大部分編碼,visual studio代碼確實讓我更容易。免費。試試看,告訴我你的想法。 - DDJ
我剛嘗試過。它讓我想起了c ++,因為它將<<視為評論。因此<<內部的所有內容都將是單一顏色。這似乎是個問題。我也查了bash擴展,他們有一些,但沒有看到heredocs。如果你拿出<<然後我可以用不同的漂亮顏色看到它。 - DDJ
您還可以更新語言過濾器以查看<<註釋,然後它不會中斷。 - cengbrecht
如果您克隆sh語言文件並刪除突出顯示“<<”的部分,那麼它將不會全部變為藍色。 - cengbrecht


答案:


您嘗試實現的目標格式化樣式並不容易實現(但是,可能會以更難的方式實現),但您也可以通過簡單的技巧解決您的問題。我在這裡討論。

為什麼不直接可能: 

如果你去你的 Notepad++ 在Windows中的目錄中,您將找到一個名為的文件 SciLexer.dll。此文件是使用Notepad ++的原始源代碼構建的。的方式 Bash 代碼檢測 heredoc 命令在此文件中進行了硬編碼。此文件不能由用戶直接編輯。

然後如何編輯 SciLexer.dll

我們知道 Notepad++ 是一個開源軟件,我們可以建立 SciLexer.dll 由他們自己給出的源代碼。但要做到這一點,人們應該對編程語言有很好的了解,否則他就會搞砸所有這些事情。 這裡 你會找到完整的源代碼 Notepad++ 和 SciLexer.dll 以及如何構建它們的詳細說明。所以,如果你對編程有很好的了解,你肯定可以在那裡閱讀他們的教程,你會找到一個名為的文件 LexBash.cxx 在 scintilla > lexers 您可以編輯以刪除目錄的目錄 heredoc 檢測部分並根據該教程重建文件。最後你會得到新的 SciLexer.dll。如果用現在替換它 SciLexer.dll 在你的 Notepad++ 目錄,它將像魅力一樣工作。

現在的問題是如果由於缺乏編程知識或時間不足而無法完成所有這些事情,那麼還有其他任何方式!可能不是,但我找到了一個可以用來部分解決問題的技巧。

它會以你想像的方式工作:

如你所說:

我試著去 Settings > Style configurator > Language --- Bash並以某種方式完全刪除HERE DELEM && HERE Q,但我沒有   在GUI中找到這樣的方式。

顯然,在GUI中沒有刪除這些屬性的選項,但我們可以刪除這些屬性。要做到這一點,在Windows中你必須轉到這個目錄:

%AppData%\Notepad++ (將目錄複製粘貼到Windows資源管理器地址欄)

在那個目錄中你會找到一些 xml 文件。我們需要的是 stylers.xml。所以,找到並打開它 Notepad++ 或其他好的文本格式和編輯工具作為默認Windows記事本搞亂了格式。在該文件中搜索 bash。你會發現這樣的事情:

這些都是造型內部的所有屬性 Bash 文件。在最後兩行中,它描述了 HERE DOC。因此,您可以考慮刪除這些行並保存文件。通過這種方式,您將不再看到在Notepad ++的GUI中提到的上述兩個選項。但不要這樣做。

實際上,他們會刪除 HERE DELIM 和 HERE Q 格式化樣式 Notepad++ Bash腳本,但不會解決您的問題。因為,正如我之前所說的, heredoc 格式化樣式是硬編碼的 SciLexer.dll。因此,當您刪除這些屬性時, Notepad++ 仍然可以檢測到 heredoc 命令,因為它找不到合適的格式化樣式,然後它將覆蓋默認樣式,這意味著所有行都是黑色的。因此,您的問題無法以您的思維方式解決。

一個簡單的技巧,可以部分解決您的問題:

Notepad ++可以訪問近52種編程語言的格式化風格,但並不是每個人都需要它們。所以,我的訣竅是編輯另一種類似格式化風格的語言 Bash 文件。 我發現了 NSIS 使用幾乎相同的格式樣式 Bash。所以,在編輯或寫作期間 .sh 或其他 Bash 打開文件後的文件 Notepad++,只需選擇語言為 NSIS

這樣就可以了,但你可以看到關鍵字仍然是黑色的,我們需要將其塗成藍色。所以我們必須替換關鍵字 NSIS 使用關鍵字 Bash。要再次執行此操作,請轉到以下目錄:

%AppData%\Notepad++ (將目錄複製粘貼到Windows資源管理器地址欄)

這一次,我們需要名為的文件 langs.xml。所以打開它使用 Notepad++。搜索 bash。你會發現這樣的事情:

將該部分複製到其他地方。現在再次搜索 nsis 在那個文件中 langs.xml。你會發現這樣的事情:

現在終於更換了 nsis 部分與先前複製的部分如下:

並保存文件。現在,重新啟動Notepad ++並查看更改。希望它會對你有所幫助。您將在此方法中找到的問題是變量with $ 標誌與其他顏色沒有區別。但可能這不是一個大問題。希望能幫助到你。乾杯。


4
2017-12-28 11:53



謝謝你的回答。我給了你賞金和拇指,我鼓勵你編輯答案,盡可能縮短它,並在序言,正文和結尾之間添加一些分隔符。保持原始概念,但盡可能簡短和格式化(如果需要)將為所有用戶提供簡單的閱讀,並將向您承諾更多的拇指。不要猶豫,根據需要多次編輯。所有的使用都會受益。 - JohnDoea
非常感謝您提出的寶貴建議。我試著一步一步解釋一切都無法理解它變得那麼大了。我一定會以更友好的方式編輯它。再次感謝。 - Rakibul Islam
親愛的Rakibul。我的Notepad ++中沒有NSIS語言,但您對創建一個新的自定義語言樣式配置器有何看法,它將是Bash XML代碼的副本,但沒有Here-styles? - JohnDoea
Ow..really ??? NSIS不存在???您使用的是哪個版本的Notepad ++?我已經測試過最新版本 7.2.2 。嘗試升級Notepad ++。 - Rakibul Islam
是的,我也試圖自己創建自定義語言,但這有點棘手,我對bash沒有太多了解。所以,我做不到。你可以創建新的語言,它們提供了很好的gui工具 Language 標籤 Menu Bar 它說的地方 Define your language.. - Rakibul Islam