怎麼去實現乙個簡單文字編輯器?

時間 2021-05-06 17:58:27

1樓:Belleve

挺難的,比如說,你要在一行裡面同時寫天城文和阿拉伯文,排版和游標移動的處理就能搞死你……

這麼說吧,你按一下[→],對於複雜文種來說游標極有可能跳過不是乙個字元,甚至會因為 RTL 覆蓋的緣故向前跳。

給你說個最簡單的例子吧,游標在這個位置

的時候,它究竟是在「以色列」()這個詞的前面(England 之後),還是後面(該行的末尾)?

2樓:賈蜀

我沒做過,也沒這實力,但是我知道:

1. 字符集就搞死你....不要小看Win自帶的Notepad,自動識別編碼格式,解碼轉碼功能比這個好的不多.

2.大檔案支援又是個坑,當檔案大於一定尺寸,試試看查詢替換之類的功能,能迅速完成的都是高階編輯器

其他字型啥的的不說了,這兩點就做不到啊

所以我們可以耍流氓:

開啟VS,拖入Richtext控制項....

3樓:Cyandev

文字編輯器一向是比較難啃的骨頭。基本上,modern 一點的文字編輯器架構基本是由 View、Storage、LayoutManager組成的,如果只考慮純文字的話,也就是像記事本那樣的程式,Storage 基本就可以直接由 String 代替了,因為不涉及到格式化和大文字的問題。富文字拍版我沒有研究過,但是對於純文字來說,布局相對容易很多了。

所以簡單說說純文字。

首先,資料結構就不建議你自己造輪子了,字串類就可以用。但是 String 一般是 immutable 的,所以頻繁操作會有效能問題,不過初期時問題不大,建議這塊留出介面後期再優化。

然後說渲染部分,Key points 就是測量每個字元,計算出一行的長度,然後進行分行,如果考慮自動換行會複雜些。分好行後直接拿到繪圖 API 中 drawString 即可,對於選中的文字,你可能還要用反色去再 drawString 一遍。基本就是這樣,當然效能問題也會有,對於不在 viewport 裡的行,需要計算出來然後跳過那部分的 drawing。

4樓:靈劍

這有什麼資料結構的……不就是從字串當中刪掉乙個子串嗎……

content = content[:sel_start] + content[sel_end:]

除非你這個編輯器編輯的內容非常大,比如說有好幾個GB,才需要考慮效率問題。

為什麼一些文字編輯器(Sublime Text2 EditPlus VIM)可以取代eclipse myeclipse 等 IDE?當開發乙個大專案時,IDE 可以自動生成專案結構和一些複雜的配置檔案

editplus和sublime,vim等不在乙個量級上,並不能代替IDE 對於vim等擴充套件性極強的editor,就是重新用外掛程式造了乙個IDE的輪子 單單文字編輯器是組織不了乙個大專案的。文字編輯器只負責讀 寫檔案。在開發乙個專案的時候,還要用到makefile來build整個專案,要用到c...

用GNU nano作為終端下文字編輯器是一件應當被吐槽麼?

龍背上的騎兵 nano快捷鍵與tmux設定的衝突,也懶得改,所以平時都用vim.nano適合改個config用用,而且nano幾乎沒什麼配置,操作很簡單易懂,我一直感覺nano就像是乙個寵物,而不是編輯器,平時賣個萌蹦躂下用用。 如果學習Vim對自己沒有半毛錢的好處,就不要了,Nano足夠了。對於大...

Python如何找到乙個趁手的編輯器

已登出 根據小學二年級的馬克思主義哲學可知 一.可以看看知乎經驗貼獲得間接經驗,以指導實踐。但是,馬克思還告訴我們,真理是相對的。所以別人的經驗未必適用於你。二.實踐是檢驗真理的唯一標準。可以通過實踐來獲得直接經驗以指導實踐。即,全部安裝一遍試一試。三.如果你懶得看也懶得試,非要問我選哪乙個,我會告...