2009-07-01 67 views
2

有沒有人知道一個編輯器能夠執行精確的行長度(如果允許通過文件名/擴展名關聯最大行長度,那麼獎金)?可以強制執行精確(不是最大)行長度的編輯器?

我的意思是確切的行長度是編輯器總是會保存每行填充到最大行長度(由用戶定義)。例如,如果文件的行長度應爲120個字符,則文件中的每行將爲120個字符,如果需要填充空白,請按照適當的換行符指示符進行操作。當某人編輯一行時,如果行長度達到最大長度,編輯器將阻止他們輸入。

平臺是Win XP/Vista。

+0

我會咬人:爲什麼? – Beska 2009-07-01 18:26:26

+0

簡短的回答是:我們將系統從z/OS移植到WIN32。一個模塊處理從定製文件系統將數據加載到內存中。我們有很多其他模塊依賴於正在加載的數據的結構。由於大型機上數據集的性質,記錄被填充到數據集的LRECL屬性中。在大型機上,用戶可以使用ISPF Edit編輯這些數據表。我們需要給用戶一種像往常一樣編輯數據的方式,但是不用擔心非精明的用戶會搞砸數據。 – 2009-07-01 20:24:23

+0

我也在尋找阻力最小的解決方案。在這一點上,時間不在我們這邊。 – 2009-07-01 20:25:18

回答

0

Vim

 
:syn match Error /^.{,119}$/ 
:syn match Error /.{121,}/ 

這將導致長的任何線!= 120到與固體紅色背景(在默認顏色方案)被高亮顯示。

如果你寫這個(沒有前導冒號)爲$VIMRUNTIME/syntax/foo.vim,並放置

 
:au BufRead,BufNewFile *.foo set filetype=foo 
:au Syntax foo source $VIMRUNTIME/syntax/foo.vim 
vimrc

或通常ftdetectsynload.vim位置,然後只要語法高亮顯示已啓用,這些規則就會自動將適用於您在Vim中打開的任何*.foo文件。

(見:h mysyntaxfile-add如果要添加到現有的語法文件,看看:h rtp你的平臺上的默認路徑$VIMRUNTIME

0

我不知道有一個編輯器處理這種類型的輸入,但是,我可以說,總的來說,實際創建一個以這種方式工作的系統並不難。

0

Zeus editor不能強制執行這一規則,而是通過使用2階段搜索和替換它將有可能將文件轉換爲半自動時尚這種格式。

第一步:通過運行以下正則表達式搜索並替換以填充字符串,使所有行長度超過120個字符。

Search: (.*)\n 
Replace: \1        \n 

注:的取代如上所示應有120空白字符而不僅僅是30中所示的字符串。

第二步:使用此正則表達式搜索和替換,修剪120個字符標記處的行。

Search: ^(.{120,120})(.*)\n 
Replace: /1\n 

此時文件中的所有行長度都是120個字符。

但是,爲了確保這些長度棒,確保宙斯選項的白裝飾線條上保存被禁用;)

此外,由於宙斯是編寫腳本,這將是可能的半自動化這個過程通過編寫一個簡單的宏腳本來運行這兩個操作。

最後Zeus有一個選項可以在觸發器上運行一個宏腳本,這樣就可以將該宏添加到save trigger以使其成爲半自動。

我確定可以配置任何腳本編輯器來做類似的事情。

相關問題