Sign in Join
Wiki copytemporary

CudaText VS other editors: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11# CudaText advantages over Sublime Text 3
22
33- Open source, more operating systems are supported
44- The Python API is easier to use
55- The Python API allows management of dialogs and UI-controls, including the CudaText editor control
66- Code-Tree for most of lexers (ST has only plugin for very limited set of languages)
77- Powerful EControl lexer format, and it's easier to create/edit lexers (GUI in external program)
88- Floating (separate window) mode of side panel and bottom panel
99- Floating (separate window) groups of UI-tabs (in addition to normal 6 groups)
1010- [[CudaText|Toolbar]], configurable via plugin
1111- [[CudaText|Configurable statusbar]]
1212- Horizontal ruler above text
1313- [[CudaText|Micromap]]
1414- [[CudaText|Markers]] in editor
1515- [[CudaText|Sessions system]]
1616- Caret position after end-of-line
1717- Better support for encodings, including UTF-32
1818- Better support national keyboards on Linux
1919- Correctly saves binary files
2020- API for inter-line gaps, helping to several plugins (Differ, Insert Pics, Embedded Editor)
2121- [[CudaText|Viewer]] for files of unlimited size
2222- [[CudaText|Hex display of special chars]]
2323- [[CudaText|UI-tabs features]]: colored tabs, icons (Tab Icons plugin), tabs on the left/right
2424- Plugin "Options Editor" to configure CudaText via simple GUI
2525- [[CudaText|Character Map dialog]]
2626- UI can be scaled by option (up to 500%)
2727- Single-instance mode is supported on all OS'es
2828- Scrolling after middle-button click (called "Autoscrolling" in Firefox)
2929- [[CudaText plugins|Show pictures in the text]]
3030- [[CudaText plugins|Colorize the text]]
3131- [[CudaText|Activating internet links]]
3232- [[CudaText|Automatic folding of comments]]
3333- [[CudaText|HTML auto-completion suggests file/folder names]]
3434- [[CudaText|File URI file:/// auto-completion]]
3535- [[CudaText|HTML color codes underlining]]
3636- [[CudaText plugins|Macros plugin]] also records actions performed in the Find/Replace dialog, and mouse clicks
3737- CudaText and its plugins support i18n (text strings can be translated)
3838- Function "Find in files" is [[CudaText plugins|implemented in plugin]], with much more features
3939- [[CudaText|Tab switcher]] dialog
4040- Can split single UI-tab, for single file or 2 different files (helps to work with Differ plugin)
4141- Color themes do not have per-lexer settings
4242- [[CudaText|Picture file viewer]] supports zooming of a picture
4343- [[CudaText|Dialog "Go to"]] gives more features
4444- Option "tab_smart" for smart-tabs, known from several other text editors
4545- Option "caret_proximity_vert" to set minimal distance of caret to top/bottom edge
4646- Option for "zebra" mode
4747- Windows version can use different Python engine (packages in add-ons)
4848- Add-ons do not disappear due to GitHub repository deletions
4949- Find/Replace dialog:
5050 - Dialog has "Allowed syntax elements" option
5151 - Dialog has "Find first" button (ST: only "Find" which means "Find next")
5252 - Dialog has "Immediate search" option (ST: search is always immediate)
5353
5454# CudaText advantages over Visual Studio Code
5555
5656- VSCode has the option "maximal count of ui-tabs", because its ui-tabs are memory hungry. CudaText allows to open 1000+ ui-tabs without problems.
5757- VSCode is slow for file sizes 10M...100M, while CudaText allows this without problems. For size 2M+ CudaText disables lexers, but "lite lexers" (Log, XML, JSON) work always.
5858- VSCode doesn't have customizable toolbar.
5959- VSCode doesn't allow to show side-panels in floating (detached) window.
6060- VSCode has internal "find in files" but CudaText has FindInFiles-4 plugin with much more features.
6161- VSCode cannot show inter-line gaps with pictures. CudaText plugin "Insert Pics" is based on this feature.
6262- VSCode doesn't have the analog of CudaText "Color Text" plugin (not 100% sure here).
6363- VSCode doesn't have the analog of CudaText "Draw Lines" plugin.
6464- VSCode cannot place text caret beyond end-of-line (not 100% sure here).
6565- VSCode has the add-on "Macros", with it you need to create/configure command sequences by hands. Not simple task. CudaText has the plugin "Macros" and it records usual keypresses. Much eaiser to do.
6666- CudaText gives [[CudaText|viewer for files of unlimited size]].
6767- CudaText plugins API is simpler.
6868- CudaText supports UTF-32 LE/BE encoding.
6969
7070# CudaText disadvantages compared to Sublime Text / VSCode
7171
7272- CudaText doesn't use 3D acceleration on rendering, so it may lag (and/or consume lot of CPU) if you scroll text, with big window size (not on Windows, Windows API works fast enough).
7373- CudaText doesn't provide "Go to anything" command, instead it gives several separate commands:
7474 - Go to line number,
7575 - Go to project file,
7676 - Go to bookmark,
7777 - Go to code-tree symbol, ...
7878- CudaText lexers are "simple": they don't parse text as deeply as ST/VSCode; so you need the LSP plugin if you need IntelliSense features.
7979- CudaText key bindings are simpler: commands don't have "arguments" and cannot be set per-project (but can be set per-lexer).
8080- CudaText plugins API doesn't support async events.
8181- CudaText doesn't support some encodings (e.g. Shift-JIS).
8282
8383# CudaText performance
8484
8585## Startup time
8686
8787CudaText starts quite fast: about 0.3 sec with about 30 plugins (all preinstalled + some popular plugins), on Linux, on CPU x64 Intel Core i3 3GHz.
8888
8989- If no additional plugins are installed, or Python engine is disabled (ie not configured on Unix, or Python DLL files are deleted on Windows), then it starts even faster.
9090- If configuration/history are clean, it starts faster.
9191- If bottom panel is hidden on start, via option "ui_bottom_on_start":2, it starts faster.
9292
9393## Performance of loading huge files
9494
9595How fast Linux editors open huge files?
9696
9797Test file has about 300M size, it has 4M ASCII lines, it's created by Python script:
9898
9999``` python
100100f = open("a.log", "w")
101101for n in range(4*1000*1000):
102102 k = 120-n%100
103103 f.write(str(n+1)+' '+chr(k%26+ord('a'))*k+'\n')
104104```
105105
106106Testing on Ubuntu 20.04, CPU: Intel Core i3 3GHz, RAM: 12G. Each time is average of 2-3 tries in the same session.
107107
108108- CudaText 1.211.0: 8 sec
109109- Sublime Text 4 4169: 8 sec
110110- Geany 1.36: hangs, waited for it 90 sec
111111- Kate 23.08.4: 5 sec, then go to end (Ctrl+End hotkey) took additional 30 sec
112112- Vim 8.1.1847: 2 sec
113113- Emacs GUI 29.2: 2 sec, after showing confirmation for big file
114114- gedit 3.36.2: 19 sec, then go to end (Ctrl+End hotkey) hangs: waited for it 100 sec
115115
116116## Performance of editing huge lines
117117
118118Tested several editors on Ubuntu 20.04 on Intel Core i3 CPU.
119119
120120XML file: single line of length 4M. XML file contains line like \<id name="nnnnnnn"\> with the huge "name" value of 4M. Python script to generate XML file:
121121
122122``` python
123123#!/usr/bin/python3
124124f = open("a.xml", "w")
125125f.write('<id name="')
126126for n in range(1, 4096):
127127 f.write("n" * 1024)
128128f.write('">\n')
129129```
130130
131131- CudaText 1.211.0. Opens file: 1 sec. Caret moves at the end of line: very fast (\<0.1 sec). Editing of this line: adding each char is about 0.1-0.2 sec.
132132
133133- Sublime Text 4 4169. Opens file: 1 sec. Caret moves at the end of line: very fast (0.1-0.2 sec). Editing of this line: adding each char is about 0.1-0.2 sec.
134134
135135- Geany 1.36. Opens file: 7 sec, then to go to end (Ctrl+End hotkey) it took 4 sec. Caret moves at line begin: fast, caret moves at line end: fast (delay about 0.3 sec after each Left/Right key). Moving up/down between 1st huge line and 2nd empty line: 3-4 sec. Editing at the end: adding each char is about 6 sec.
136136
137137- Kate 23.08.4. Gives colored panel "The file ... was opened and contained lines longer than ... Those lines were wrapped and the document is set to read-only mode ...". Caret moves at the end of wrapped line: fast. But editing is disabled.
138138
139139- Vim 8.1. Opens file: 1 sec. In word-wrapped mode and with partially colored line. Caret moves at the end of line: each Left/Right command (Vim hotkeys) is 2 sec delay. Editing of this line: adding each char is about 3 sec.
140140
141141- Emacs 29.2 GUI. Opens file: 3 sec. Caret moves at the end of line: very fast. Editing of this line: adding each char is instant.
142142
143143- gedit 3.36.2. Hanged on opening file (from command line and from GUI), waited it for 20 sec.
144144
145145- Bluefish 2.2.11. On opening file, gives the warning about too long lines, on choosing "don't split lines" it hanged, waited for 30 sec.
146146
147147## Performance of mass replace in huge lines
148148
149149Compared a few editors in the task of replacing 25K single-char matches by two-chars-string in a 1.5MB file with a line with 800K chars. Running on Linux x64, CPU: Ryzen 5 1600, RAM: 32GB. Results:
150150
151151- SciTE 5.4.1: after 6 min I could see the replaced text, but editor was still unresponsive (frozen). Awaited 6 more minutes and nothing changed, so I had to kill the window/process.
152152- Kate 23.08.4: complained about line length, took a long time to open the file, very poor performance while it was open... I couldn't even try replacing, it was unusable.
153153- Sublime Text 4 4169: crashed after 4 min processing the replace.
154154- Sublime Text 3.2.2: it took 2 min 30 sec to replace, the best one after CudaText.
155155- Notepad++ 8.6.4 with Wine: froze while replacing. I waited for 6 minutes but was still unable to do anything after that, so I had to quit.
156156- CudaText 1.211.0: did the task in 1 second.
157157
158158## Performance of built-in sorting
159159
160160Test on ~100M text file with short ASCII lines. Test on Ubuntu 19.10 on Intel i3 CPU.
161161
162162CudaText 1.97:
163163
164164- sort time of Command Palette command "(without undo) sort asc.": 18 sec
165165- sort time of Command Palette command "(without undo) sort asc., ignore case": 19 sec
166166- memory used after file loading: ~1.0 G
167167- peak memory used on sorting: the same (because sorting is inplace, in the same list)
168168
169169Sublime Text 3.2:
170170
171171- sort time: 14 sec
172172- sort time with ignoring case: 16 sec
173173- memory used after file loading: ~1.3 G
174174- peak memory used on sorting: ~3.3 G
175175
176176# CudaText vs Sublime Text, different answers to questions
177177
178178## How to call external programs/compilers?
179179
180180ST3: Use feature of editor called "build systems".
181181
182182CudaText: Use plugin "External Tools", which adds "Tools" item to the top menu. Or: use plugin "Runner". Both plugins are described here: [[CudaText plugins]].
183183
184184Alternative answer for CudaText: Use plugin "Runner" which handles build-systems almost compatible with Sublime's build-systems.
185185
186186## How to change settings for one OS only?
187187
188188ST3: You need to use platform-specific config files. E.g. for macOS, platform-specific config is "Preferences (OSX).sublime-settings".
189189
190190CudaText: You need to use the config user.json, but write there options with OS specific suffixes. E.g. Windows option is "font_name", and macOS option is "font_name__mac". Possible suffixes are listed in default.json: __linux, __mac, __freebsd etc. Only limited count of options support OS suffixes, this is marked in the default config (default.json).
191191
192192## How to change settings for one syntax only?
193193
194194ST3: To edit syntax-specific config, call "Preferences / Settings - Syntax Specific".
195195
196196CudaText: To edit lexer-specific config, see [[CudaText|CudaText#Configs]].
197197
198198## How to add commands to top/context menu?
199199
200200ST3: You need to create *.sublime-menu files: <https://www.sublimetext.com/docs/3/menus.html#available_menus>
201201
202202CudaText: You need to install plugin "Configure Menu". In its dialog, create "menu.json" file which has default items of top menu and context menu. Then edit that file.
203203
204204## How to find/replace text in many files?
205205
206206ST3: Use built-in command "Find in files".
207207
208208CudaText: Use plugin FindInFiles. It has 2 major versions: v3 is frozen, and new v4 is evolving.
209209
210210## How to find file in a project?
211211
212212ST3: Use "Goto Anything" (Ctrl+P on Windows/Linux, Command+P on macOS).
213213
214214CudaText:
215215
216216- To find file by name, use command "Plugins / Project Manager / Go to file...". After file is focused in project, press Enter to open it.
217217- To find file by contents, use plugin FindInFiles (v3) which allows to search in project files. Quote from its help:
218218
219219 Set special value "<Project Folders>" (in short <p>) for field "In folder" to search in project files.
220220
221221## How to show vertical lines on some columns?
222222
223223ST3: Use option
224224
225-`"rulers": [40, 80, 120],`
225+```text
226+"rulers": [40, 80, 120],
227+```
226228
227229CudaText: Use option
228230
229-`"margin_string": "40 80 120",`
231+```text
232+"margin_string": "40 80 120",
233+```
230234
231235## How to highlight pair brackets?
232236
233237ST3: Brackets highlight is built-in feature, turned on by default.
234238
235239CudaText: Brackets highlight is built-in, but it's off by default. Use several "bracket_" options, see comments in the "Options Editor" plugin.
236240
237241## How to highlight pair HTML tags?
238242
239243ST3: Use plugin, e.g. <https://packagecontrol.io/packages/BracketHighlighter>
240244
241245CudaText: Use options for "dynamic highlighting", "lexer_dynamic_" in "Options Editor" plugin.
242246
243247## How to add custom syntax support?
244248
245249ST3: You need to create syntax file, <https://www.sublimetext.com/docs/3/syntax.html>
246250
247251CudaText: You need to create lexer, see [[CudaText|CudaText#Lexers]].
248252
249253## How to customize hotkeys?
250254
251255ST3: You need to edit keybinding files like "Default (Windows).sublime-keymap".
252256
253257CudaText: In the Command Palette dialog, focus needed command item, press F9 - additional dialog will appear to set the hotkey. Method 2: install plugin "Configure Hotkeys" which gives alternative dialog.
254258
255259## How to use Emmet?
256260
257261ST3: Install plugin "Emmet". Emmet here is written in JavaScript.
258262
259263CudaText: Use pre-installed plugin "Emmet". Emmet here is written in Pascal with minor differences (e.g. "lorem" works differently).
260264
261265## How to show 2/3/4 files at once?
262266
263267ST3: Use "View / Layout" menu.
264268
265269CudaText: Use "=" item in the top menu.
266270
267271## How to split window for single file?
268272
269273ST3:
270274
271275- menu "File / New View into File"
272276- menu "View / Layout / Columns: 2 (or Rows: 2)"
273277- drag the tab into another group
274278
275279CudaText: menu "View / Split tab / Toggle split".
276280
277281## How to detect syntax by first line of file?
278282
279283ST3: It's configured in syntax file: <https://superuser.com/questions/752025/sublime-text-3-detect-syntax-based-on-file-header>
280284
281285CudaText: Use config described in [[CudaText|CudaText#Detection_by_first_file_line]].
282286
283287## How to assign syntax to undetected file extension?
284288
285289ST3: Open your file, click statusbar item for syntax, use item "Open all with current extension as...".
286290
287291CudaText: Use "file types config", see [[CudaText|CudaText#File_types_config]].
288292
289293## How to select several occurrences of a word?
290294
291295ST3: Use command "Selection / Expand selection to word".
292296
293297CudaText: Use command "Selection / Add next occurrence of selected word".
294298
295299There is a difference in CudaText implementation: CudaText command first checks, is first selection 'whole word' or not. If it's whole word, command adds selections which must be also whole words. In ST, command does not check 'whole word' state of next selections. You may switch to ST behaviour. How? CudaText "Command Palette" gives two commands:
296300
297301- A: add next occurrence of selected word
298302- B: add next occurrence of selected text (not whole-word)
299303
300304You can reassign hotkey from the command A to the command B, so hotkey will give the behaviour of Sublime Text.
301305
302306## How to select all occurrences of a word?
303307
304308ST3: In the Find dialog, enter a word, check "whole words", press "Find All".
305309
306310CudaText:
307311
308312- In the Find dialog, enter a word, check "whole words", press "Select all".
309313- Plugin "Highlights Occurrences" gives command "Select all occurrences".
310314
311315## How to record macros?
312316
313317ST3: Use menu items in the "Tools" menu.
314318
315319CudaText: Install plugin "Macros", which adds item "Macros" to the top menu.
316320
317321## How to use "Go to symbol"?
318322
319323ST3: Use menu item "Go to symbol".
320324
321325CudaText: It doesn't have "Go to anything" but it has "Go to symbol" for a lexer, if lexer finds such symbols for Code-Tree. Install plugin "CudaExt", which gives menu "Plugins / Cuda-Ext / Code-Tree" with several menu items. One item is "Symbols list" which shows Code-Tree items in the menu dialog.
322326
323327## How to switch between C++ header/implementation files?
324328
325329ST3: Use command "Switch header/implementation".
326330
327331CudaText: Use plugin "Switch Header" (it's not only for C++, it's configurable for all lexers).
328332
329333## How to jump to next/previous modified lines?
330334
331335ST3: Use commands "Next modification", "Previous modification".
332336
333337CudaText: Use plugin "CudaExt" which gives commands:
334338
335339- "Jump: to next/previous changed lines",
336340- "Jump: to next/previous working lines",
337341- "Jump: to next/previous saved lines".
338342
339343See [[CudaText|CudaText#Line_states]].
340344
341345## How to detect indentation characters in a file?
342346
343347ST3: Menu item "View / Indentation / Guess settings from buffer".
344348
345349CudaText: Plugin "Detect Indent" which does the same.
346350
347351## How to change indentation characters in a file?
348352
349353ST3: Click statusbar cell "Tab size..."/"Spaces...", it has menu items "Convert indentation to spaces", "Convert indentation to tabs".
350354
351355CudaText: The same as for ST3.
352356
353357## How to install plugins without package manager?
354358
355359ST3: Open terminal, go to Packages folder, run "git clone" in that folder, or copy plugin there.
356360
357361CudaText: Open terminal, go to "py" subfolder, run "git clone" in that folder, or copy "cuda_" plugin folder there.
358362
359363## How to make vertical/column selection?
360364
361365ST3: See the official documentation page "Column Selection".
362366
363367CudaText:
364368
365369- Mouse shortcuts: [[CudaText|CudaText#Mouse shortcuts]].
366370- Keyboard commands: "column select: up / down / left / right / ....".
367371- Click the statusbar cell "-", it will toggle to "\|\|", and usual mouse selection will perform column selection.
368372
369373## How to swap line up/down
370374
371375ST3: Commands "Edit / Line / Swap Line Up/Down".
372376
373377CudaText: Commands "Edit / Line operations / Move line(s) up/down".
374378
375379## How to show menu of tabs, project files, symbols
376380
377381ST3: "Goto anything" (Ctrl+P) for all stuff.
378382
379383CudaText:
380384
381385- List of opened tabs: command "ui: switch tab, dialog".
382386- List of files in the current project: "plugin: Project Manager: Go to file".
383387- List of "symbols" in the current document: "plugin: Cuda-Ext: Code-Tree: Symbols list" (shows the same symbols as code-tree can show).
384388
385389## How to use 'atomic saving'
386390
387391'Atomic' file saving is saving to a temporary file, then renaming that file to the destination. 'Atomic' saving is not implemented in CudaText, because users of Sublime Text 3 consider it as harmful feature.
388392
389393- It drops extended file attributes (on NTFS on Windows; Unix-like have similar problem too?)
390394- It drops NTFS file streams, on Windows
391395- Problems with files located on Network drives, on Windows
392396- Problems with symlinks
393397- It needs additional options like "on which drives to use atomic saving"
394398
395399# CudaText vs Notepad++
396400
397401(From user **dinkumoil**, quote from the Notepad++ forum.)
398402
399403But since this thread has the potential to be a useful information and I’m a user of CudaText as well, I respond to it (I also contributed to the CudaText source code, wrote a plugin similar to my AutoCodepage and AutoEolFormat plugins for Notepad++, helped to improve the SQL and VBScript lexers and currently maintain the German translation file).
400404
401405Indeed, CudaText is a powerful text editor and its author is an experienced dev in writing text editors and software components needed for that as he is also the author of the discontinued SynWrite editor. Since the above feature list is only a usual catalog for text editors, I want to go a little bit into the details.
402406
403407**Advantages**
404408
405409- Quick evolving project.
406410- Quick responding and very active developer.
407411- Constant, nearly daily work at the project (have a look at the commit tracker).
408412- No political activities.
409413- Extensive and always up-to-date wiki and API documentation .
410414- The UI follows Windows settings for font size in menus and dialog boxes, important when using high-DPI monitors.
411415- The whole UI is themeable, not just the edit window.
412416- Up to 6 edit windows, each with an unlimited number of tabs. Even a single tab can be splitted in two areas.
413417- A plugin allows to fully customize the whole main menu.
414418- Very well working Code Tree (in Notepad++ called Function List) that supports automatically all languages which are supported by lexers.
415419- Monitoring of opened files for changes from other programs seems to work more reliable than in Notepad++.
416420- Separate lexer creation tool with sophisticated abilities. It supports using regular expressions.
417421- Plugins can be written in Python (but this has to be paid with lower execution speed for sophisticated tasks).
418422- Only for the records, no advantage over Notepad++: Lots of useful plugins available, one of them is a plugin manager. It allows installing, updating and removing of plugins.
419423
420424**Disadvantages**
421425
422426- In some details slightly slower working speed than Notepad++.
423427- Configuring the toolbar is a little bit tricky. It requires a plugin and needs intensive work.
424428- Translations for the UI into other languages are available but a lot of them are outdated.
425429- The Search & Replace feature uses a rather old regular expression engine which lacks some sophisticated features (IMO the biggest drawback). *Edited by Alexey: RegEx engine was much improved since the time of this complain.*
426430- There is no built-in preferences dialog. Instead you have to edit a JSON file (but that’s far better than writing CSS code like in Atom). There is a plugin available that tries to work like a preferences dialog but it’s only a tableized, textual view of all settings and a primitive UI to change them.
427431- Under Windows, a plugin installs an Explorer context menu. But since its only backed by a shell\CudaText\command registry entry and not with a real shell handler like Notepad++'s context menu entry, it is not possible to open more than 15 files at once using the CudaText Explorer context menu entry. That’s a common limitation for all non-shell-handler context menu entries (tested under Windows 7 x64). *Edited by Alexey: this is not actual anymore, since we have dedicated Explorer shell extension DLL.*
428432- Releases of CudaText are published only as ZIP files without an installer. So, updating means all plugins, custom icons, additional lexers, autocompletion files, language files, theme and lexer customizations and so forth have to be migrated to the directory of the new version. You need a file and directory based diff tool for that.
429433- Only a small community, the forum mostly is a lonely place. Like the developer a lot of the people commenting in the GitHub issue tracker are russian, thus they tend to write in cyrillic. But this is clearly an advantage for people from Russia which have to take the burden to write and read in English, written in latin letters here in the Notepad++ forum and in the GitHub repo.
430434- Somewhat chaotic project structure. Source code on GitHub, binary releases on SourceForge, forum on a SourceForge-hosted home page, lots of relations to the discontinued SynWrite editor (e.g. lexers are hosted in a separate SourceForge project called SynWrite add-ons, the lexer creation tool is an excerpt of that particular part of SynWrite).
431435
432436**Conclusion**
433437
434438All in all I would say CudaText is an excellent addition to Notepad++, but I personally will continue to use both editors since both of them have their strengths and weaknesses. And since I think the CudaText project deserves more support, I hereby appeal to participate in this project as well, if possible.
435439
436440---
437441*From the Free Pascal wiki, page "CudaText VS other editors", as it stood on 2024-04-18 after a change by Alextp, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
438442Category: CudaText
439443Category: Tools

Back to history