Text editor linux windows

Home » KB » SysAdmin » 5 Best Command-Line Text Editors for Linux, Windows and Mac

Editing files quickly and effectively using the command line is vital for every user or system administrator. Whether it is a configuration file, user file, text document, or log, it is a good idea to have a reliable and powerful command-line text editor.

This article describes the top five open-source command-line text editors available on Windows, Linux, and macOS.

Five best command-line text-editors for Windows Linux and macOS.

Top 5 Command-Line Text Editors for Linux, Windows & Mac

Choosing the right command-line text editor depends on your needs and comfort level. The top five command line editors we have chosen to cover in this article are:

  • Vim
  • Emacs
  • Nano
  • Micro
  • Gedit

The table below shows an overview of the editors’ key features:

Editor Supported OS Capabilities Expandability GUI
Vim Windows, Linux, macOS Highly configurable, syntax highlighting, code folding, powerful text commands. Extensive plugins available. Optional GUI through gVim.
Emacs Windows, Linux, macOS Supports multiple languages, email, calendar, and more. Highly extensible with packages and modes. Built-in GUI version available.
Nano Windows, Linux, macOS Simple and user-friendly, basic text editing. Limited, but supports syntax highlighting and basic plugins. /
Micro Windows, Linux, macOS Modern and intuitive, mouse support, multiple cursors, syntax highlighting. Supports plugins written in Lua. /
Gedit Windows, Linux, macOS Full-featured text editor, syntax highlighting, search/replace. Supports plugins to extend functionality. Primarily GUI, terminal mode on Linux.

For more information about each text editor, refer to the sections below.

1. Vim

Vim command-line text editor logo.

Vim is a very flexible text editor that is suitable for performing many different operations on text. It is widely regarded as one of the most powerful text editors available. Vim was released in 1991 as an enhanced version of the Vi editor, and it has since become a highly configurable text editing tool.

The editor is supported on Windows, Linux, and macOS. It has a steep learning curve, but once you learn how to use it, it becomes incredibly efficient. Some of its features include syntax highlighting, code folding, find and replace with regular expressions, complex text transformations with minimal keystrokes, color schemes, and much more.

Vim’s functionality can be even further extended with a wide variety of plugins available through its plugin manager. The plugins enable syntax highlighting, auto-completion, integration with version control systems, and more.

The editor also comes with a graphical user interface, gVim, which adds menus and toolbars while retaining Vim’s powerful command-line interface. The following image shows Vim’s terminal and GUI view:

Comparing the Vim text editor CLI and GUI.

Vim’s flexibility and power make it the top choice for advanced users who need a highly customizable text editor.

2. Emacs

GNU Emacs command-line text editor logo.

GNU Emacs is a powerful text editor that is part of an entire app ecosystem. It was created by Richard Stallman in 1976 and has since become one of the most extensible and feature-rich editors available. Emacs is supported on Windows, Linux, and macOS.

The editor is highly versatile and supports editing in almost every programming language. Its built-in package manager provides functionalities that range from email clients to calendar systems. Its powerful scripting language, Emacs Lisp, enables users to customize and automate almost any aspect of the text editor.

Emacs’ functionality can be extended with various packages and modes, including specialized programming environments, document processing, and even games. The editor is also available in the GUI mode, with a more user-friendly interface with a menu and toolbars. The image below shows its terminal and GUI view:

Emacs text editor CLI and GUI comparison.

Emacs focuses on adaptability, making it a preferred tool for users who want an all-in-one editor capable of much more than text manipulation.

3. Nano

GNU Nano command-line text editor logo.

GNU Nano is the go-to text editor for many users who need something simple and straightforward. It was designed with ease of use in mind, as part of the GNU Project that provides a more user-friendly alternative to the traditional Unix text editor, Pico.

Nano is supported on Windows, Linux, and macOS, and it offers basic text editing functions like cut, copy, paste, and simple search/replace, all within a clean and minimal interface. Unlike Vim or Emacs, Nano does not require users to remember complex commands. Most functions are accessible via keyboard shortcuts that the terminal displays at the bottom of the screen:

Example of the Nano text editor.

Although Nano is less flexible than Vim or Emacs, it supports some basic enhancements such as syntax highlighting and automatic indentation through configuration files. However, there is no GUI version, as Nano is a command-line-only editor.

Nano’s simplicity and accessibility make it a great choice for beginners or anyone who needs to make quick edits without the overhead of more complex editors.

4. Micro

Micro is a modern text editor that combines many benefits of traditional editors like Vim and Emacs with simplicity and ease of use. It is intuitive, making it accessible even to those new to command-line editors.

The editor is available on Windows, Linux, and macOS, and it offers a user-friendly experience on all operating systems. It boasts features like mouse support, multiple cursors, and syntax highlighting out of the box. Its default keybindings are easy to learn.

Unlike many other command-line editors, Micro provides a more modern interface with smooth scrolling, split-pane editing, and an easy-to-navigate help system. The features are expandable through plugins, such as auto-completion, theming, and more.

Although Micro is a strictly command-line editor, its modern interface provides an experience similar to that of a GUI editor. The image below shows an example of its CLI:

It is an excellent choice for users who want the power of a command-line editor with a more modern and user-friendly interface.

5. Gedit

Gedit command-line text editor logo.

Gedit is primarily the default text editor for the GNOME desktop environment. Although it is mainly a graphical editor, it can be used in terminal mode on Linux, making it a versatile option for those who switch between GUI and CLI.

The editor is available in Windows and Linux, with unofficial macOS support. Some of the text editors’ features include syntax highlighting, search and replace, file backups, text wrapping, and more.

Gedit’s functionality can be extended with plugins for additional features like version control integration, spell checking, and more advanced editing tools. Although Gedit is primarily a graphical editor, it can also be launched in terminal mode on Linux systems. It is one of the few editors that is GUI-first.

Example of the Gedit GUI.

The editor’s ease of use and cross-platform availability make it suitable for those who want a consistent experience across different environments.

Conclusion

This article listed the top command-line editors for Linux, Windows, and macOS. Choosing between them depends on what you expect from a text editor. Each editor has its strengths, so whether you are looking for raw power, simplicity, or something in between, this list should help you find the right tool for the job.

If you are a Linux user, check out our list of 7 best Linux text editors.

Was this article helpful?

YesNo

GNU nano is a great text editor for developers who work on Linux, but did you know it can run on Windows too? This guide will show you how to install GNU nano on Windows to make your text editing experience seamless.

Let’s get started!

To install nano on Linux, use apt-get, which will get everything up and running in no time. Installing it on Windows isn’t as straightforward, however.

To install nano on Windows:

First, click here to download nano from https://www.nano-editor.org.

Next, rename the file to nano.exe and move it to your preferred folder.

And then finally, make nano available everywhere via the command line:

For Windows 10 and 8:

  1. Type “Edit environment variables”
  2. Open the option “Edit the system environment variables.”
  3. Click the “Environment variables…” button
  4. You will see two boxes in the “System Variables” box; find the path variable.
  5. Click “Edit”
  6. A Window will then pop up. Click the “New” button.
  7. Type the folder path of your .exe or batch file
  8. Click “Ok” on all open windows
  9. Restart the command prompt.

About GNU nano

GNU nano is a text editor. It’s designed to be simple for beginners and powerful enough for experts, making it an ideal choice of text editor for everyone. Furthermore, the GNU nano editor is free software, which means it’s free to download and use; you can also freely share it with others.

Another popular text editor is Vim. It is one of the most popular text editors globally, and it’s not hard to see why. It has a lot of powerful features that can increase your productivity. However, nano may be easier to get into if you want something easy to use and feature-rich.

Visit https://www.nano-editor.org if you want more information.

GNU Nano Cheat Sheet

File handling

Ctrl+S    Save current file
Ctrl+O Save the current file as
Ctrl+R Insert a file into the current one
Ctrl+X Close buffer, exit from nano
File handling cheat sheet for GNU Nano

Editing

Ctrl+K    Cut current line
Alt+6 Copy the current line
Alt+U Undo the last action
Alt+E Redo the last undone action
Editing cheat sheet for GNU Nano

Search and replace

Ctrl+Q    Start backward search
Ctrl+W Start forward search
Search cheat sheet for GNU Nano

Visit the official cheat sheet for the full list.

Wrapping up

If you’re a Windows user who has been hesitant to try nano because of the installation process, we urge you to give it a go. The benefits are worth the effort, and we promise you won’t want to go back once you start using nano for windows. With just a little setup time, you can have a seamless text editing experience between Linux and Windows systems on your computer.

You may also be interested in

Anto, a seasoned technologist with over two decades of experience, has traversed the tech landscape from Desktop Support Engineer to enterprise application consultant, specializing in AWS serverless technologies. He guides clients in leveraging serverless solutions while passionately exploring cutting-edge cloud concepts beyond his daily work. Anto’s dedication to continuous learning, experimentation, and collaboration makes him a true inspiration, igniting others’ interest in the transformative power of cloud computing.

View all posts by Anto Online

Sublime Text 4 is the current version of Sublime Text. For bleeding-edge releases, see the dev builds.

Version: Build 4192

  • macOS
  • Windows — also available as a portable version
  • Linux repos — direct downloads
    • 64 bit .deb
      – sig, key
    • 64 bit .rpm
      – signed, key
    • 64 bit .pkg.tar.xz
      – sig, key
    • 64 bit .tar.xz
      – sig, key
    • ARM64 .deb
      – sig, key
    • ARM64 .tar.xz
      – sig, key

Sublime Text may be downloaded and evaluated for free, however a license must be purchased for continued use. There is currently no enforced time limit for the evaluation.

Changelog

Build 4192

20 Jan 2025

  • Fixed tab not working when tab completion is disabled and there is no matching snippet
  • Fixed find field not expanding with multi-line search queries
  • Fixed a scroll position tracking issue
  • Windows: Fixed an issue with timer accuracy

Build 4189

20 Dec 2024

  • Fixed a performance regression when editing large files
  • Fixed laggy window resizing regression when text wrap is turned off
  • Fixed incorrect scroll extents when using fractional scaling
  • Fixed symbol icons missing in some cases
  • Fixed find_under_expand_skip clearing the selection when there’s only one occurrence

Build 4186

17 Dec 2024

  • Various syntax highlighting improvements
  • Fixed file change detection not working for cloned views after the original is closed
  • Fixed prompting to reload right after reloading
  • Fixed find-in-files results not always being sorted
  • Significantly improved cache compression performance
  • Improved performance of custom regex engine used for syntax highlighting
  • Reduced syntax engine memory usage under certain conditions
  • Improved git repository scanning performance
  • Improved rendering performance by making theming faster
  • Added unselect_current command for tab multi-selection
  • Fixed tab order getting reversed when a group is closed
  • Fixed regression in Goto Definition where symbols in the current file weren’t prioritized
  • Fixed caret location swapping sides when indenting
  • Fixed symbol icons missing in some cases
  • Fixed find_under_expand_skip clearing the selection when there’s only one occurrence
  • Syntax test error messages have been reworked
  • Syntax tests can now test for symbol transformations
  • Fixed syntax engine getting confused with multiple overlapping branches
  • Fixed transformed symbols having an incorrect region
  • minihtml can now load images from the internet
  • API: Fixed on_post_move not being triggered when air-dropping
  • API: CompletionList.set_completions is now thread safe
  • API: Improved performance when handling many completions
  • API: View.find_all now supports limiting search to a specified region(s)
  • API: Fixed null characters truncating log messages
  • Windows: Fixed crash caused by various Anti-Virus programs calling CreateRemoteThread
  • Mac: Fixed find clipboard not updating under certain conditions
  • Mac: Fixed click-through not working

Build 4180

6 Aug 2024

  • Various syntax highlighting improvements
  • Newly rewritten Lisp syntax highlighting thanks to deathaxe
  • Linux: Implemented kinetic scrolling under Wayland
  • Linux: Implemented xdg-activation protocol for wayland
  • Linux: Fixed crash on wayland related to tab dragging
  • Linux: Fixed issues with tab dragging under Wayland
  • Linux: Added workaround for KDE drag-drop issue causing the caret to get stuck (Also fixed in kwin 6.0.4)
  • Windows: Implemented scroll-resetting behavior when dragging scroll bar
  • Windows: Fixed copied text being truncated by null character
  • Windows: Fixed custom top-level menu items not being themed
  • Windows, Linux: Allow numbers as menu mnemonics
  • Mac: Files moved to trash now have a «Put Back» option
  • Mac: Fixed issues related to dragging the edges of windows
  • Mac: Fixed security entitlements for plugins not applying properly
  • Mac: Fixed some issues with applying find clipboard
  • Mac: Fixed multi-line environment variables not being read correctly
  • Mac, Linux: Fixed leak of shared memory
  • Added «goto_anything_file_preview» setting
  • Added «image_file_patterns» for controlling which files are automatically opened as an image
  • Added File > Open file as Text/Image for explicitly opening a file as an image or as text
  • Added context menu for image tabs
  • Improved behavior of Expand Selection in Python docstrings
  • The «menu» key now works in the sidebar
  • Reduced memory usage when editing large files
  • Full Screen is now restored when exiting Distraction Free Mode
  • Text selection is now retained when using Split View
  • Improved handling of invalid UTF-16 sequences
  • Fixed overlay scrollbars blocking input when invisible
  • Improved accuracy of scope selectors
  • Added enable toggle to indexing status dialog
  • Opening folder history in Sublime Merge now works recursively
  • Added entry in command palette for opening mouse bindings
  • Added syntax argument to run_syntax_tests command
  • Fixed syntax tests not running when files aren’t UTF-8 encoded
  • Files containing colons can now be opened from the command line
  • Fixed window closing when switching projects under certain conditions
  • Fixed focus of new windows starting on the last group when «remember_layout» is enabled
  • Fixed line numbers not being rendered correctly in some cases
  • Fixed an issue with rulers displaying incorrectly while scrolling under OpenGL
  • Fixed fold markers not having background rendering
  • Fixed PATH not being restored correctly when a build system fails to launch
  • Fixed git repository details not always showing
  • Find: Find in files history menu now deduplicates entries
  • Find: Fixed settings not applying to find-in-files
  • Find: Fixed a case where incorrect settings would be used when run immediately after find_under_expand
  • Tab Dragging: Improved clarity in mixed-dpi setups
  • Tab Dragging: Fixed various positioning bugs in mixed-dpi setups
  • Tab Dragging: Fixed misalignment of labels in some cases
  • minihtml: Improved error messages
  • minihtml: Added support for white-space: pre and white-space: pre-wrap
  • minihtml: <style> tags are now allowed within <head>
  • minihtml: HTML is no longer parsed within <style> tags
  • minihtml: Made HTML entity parsing more lenient
  • Theme: New unmodified files no longer have the «dirty» attribute
  • API: All functions are now available at import time
  • API: Optimized auto-completion
  • API: Fixed ViewEventListener occasionally leaking
  • API: Fixed Settings.get not always returning the default value on failure
  • API: Fixed View.style_for_scope not always returning the right «source_line»
  • API: Added View.utf8_code_units and View.utf16_code_units

Build 4169

24 November 2023

  • Fixed a stack overflow when closing large amounts of files
  • API: Fixed backwards compatibility breakage with Sheet.is_transient()
  • API: Fixed a crash with Window.set_view_index
  • Linux: Fixed a rare crash with the save dialog
  • Windows: Fixed a rare crash related to cursor hiding

Build 4166

20 November 2023

  • Various syntax highlighting improvements
  • Index collation is now done incrementally
  • Fixed an issue where animations were causing excessive redraws
  • Find in files now truncates long lines according to the «find_in_files_context_characters» setting
  • Fixed auto-complete not suggesting tokens from the current line
  • Added Mouse Bindings to the Preferences menu
  • Added Preferences > Font > Choose… for an easy way to select a font
  • Added Copy Path to Sidebar context menu
  • Fixed minimap border not rendering
  • Fixed color emoji blending with transparency
  • Fixed line-number alignment when using a variable-width font
  • Fixed double clicking a find in file result sometimes scrolling to the wrong line in the file
  • Fixed case where opening a file from Sublime Merge wouldn’t jump to the right line
  • Improved bookmark toggling
  • Improved performance of «Definitions» popup
  • Improved Join Lines behavior
  • Improved behavior of Indent command on empty lines
  • Added «ruler_width» setting
  • Added current_result command
  • Fixed case conversions not taking all-caps into account
  • Fixed an auto-indent issue
  • Fixed an issue with find_under_expand when the find panel is focused
  • Fixed disabling «highlight_gutter» resulting in «highlight_line» begin disabled
  • Fixed some incorrect behavior when converting a multi-line selection to Title Case
  • Fixed a memory corruption bug related to block carets
  • Fixed Quick Switch Project… from the settings window closing the window
  • Fixed «move_to_limit_on_up_down» setting not working
  • Shift+Enter now also hides the incremental find panel
  • Fixed macro recording in Vintage package not working
  • Updated to OpenSSL 1.1.1v
  • Fixed run_syntax_tests command not running symbol tests
  • API: Added sublime.choose_font_dialog
  • API: Allow case insensitive comments using TM_COMMENT_CASE_INSENSITIVE
  • API: Fixed instability related to overlapping API calls
  • API: Fixed crash when an edit token is passed to the wrong view
  • API: Fixed some issues related to plugin initialization
  • API: ListInputHandler now supports initial_selection
  • API: Fixed ListInputHandler not selecting the first result when initial_text is provided
  • API: Added update_text option to sublime.encode_value
  • API: Fixed expand_to_paragraph in paragraph.py incorrectly unpacking tuple
  • Linux: Improved tracking of fullscreen state
  • Linux: Fixed some memory leaks related to fonts
  • Linux: Fixed «ui_scale» setting not being applied to fonts correctly in some cases
  • Windows: Added CRLF handling for text drag an drop
  • Windows: Fixed wrong font extents causing glyphs to be cut off at the top
  • Windows: Fixed caret movement across phantoms when using fractional scaling
  • Mac: Improved animation frame timing
  • Mac: Implemented window cascading
  • Mac: Recent files are now cleared when «update_system_recent_files» is disabled
  • Mac: Fixed Copy as HTML not working
  • Mac: Fixed subl not always finding the correct application bundle
  • Mac: Fixed «regex_auto_escape» not working

Build 4152

2 August 2023

  • Mac: Fixed compatibility with macOS 10.14 and earlier

Build 4151

2 August 2023

  • Various syntax highlighting improvements
  • Added «fold_style» setting for controlling syntax-based code folding
  • Last tab in a group can now be selected with alt+9 (Windows/Linux) and cmd+9 (Mac)
  • Split View retains the original view’s viewport position
  • Added WebP support
  • Improved minimap viewport contrast with large amounts of visible text
  • The window title now indicates whether Sublime Text is running with administrator privileges
  • Improved indentation detection for files with many single space indents
  • Improved caret positioning when using text wrapping
  • Fixed files in side-bar not properly reflecting their git status
  • Find in Files: Tab multi-select modifier keys are now supported
  • Find in Files: Fixed search results not being ordered
  • Find in Files: Paths can now be quoted
  • Find in Files: Added «find_in_files_suppress_errors» settings
  • Find in Files: Added «find_in_files_context_lines» settings
  • Find in Files: Added «find_in_files_side_by_side» setting
  • Find in Files: Ongoing searches are no longer canceled on renamed buffer
  • Find in Files: Fixed ./ not working in the «Where» field
  • Find: Added «regex_auto_escape» setting
  • Find: Fixed find settings confusion when run immediately after find_under_expand
  • Find: Fixed find in selection skipping empty selections
  • Fixed word wrap being too early in some cases
  • Fixed scrolling by page not always including a full line of context
  • Fixed first character beyond ASCII range not being decoded/encoded for short code pages
  • Improved performance when drag selecting columns
  • Fixed annotations displaying incorrectly when «ui_scale» is set to something other than 1
  • Fixed recent file list not being updated when quitting with hot exit disabled
  • Fixed high memory usage edge case in minihtml parsing
  • Fixed case where open file/folder dialogs didn’t respect «default_dir» setting
  • Reopen Closed File now uses the window’s file history by default rather than global history
  • Fixed tabs of deleted files incorrectly showing as modified in some cases
  • Fixed «draw_centered» setting causing incorrect gutter rendering in some cases
  • Fixed extra commands being included for macros in some situations
  • Fixed goto-symbol not showing inside empty groups
  • Fixed column number in the status bar not updating upon changing tab width
  • Fixed issue where the command palette could consume key presses while not having input focus
  • Syntax Highlighting: Improved scope selector performance
  • Syntax Highlighting: Fixed syntax-based folding not working correctly with some indented code
  • Syntax Highlighting: Fixed syntax definition negative symbol tests
  • Syntax Highlighting: Fixed edge case that could break syntax highlighting
  • Syntax Highlighting: Fixed backtracking bug where tokens were being dropped
  • Syntax Highlighting: Fixed some hangs caused by syntax backtracking
  • Syntax Highlighting: Fixed a syntax highlighting performance issue due to backtracking
  • Syntax Highlighting: Fixed a crash when a lazy loaded syntax doesn’t exist
  • API: Updated to Python 3.8.12 and OpenSSL 1.1.1s
  • API: The Python 3.3 plugin environment now uses the same OpenSSL as 3.8
  • API: Added support for the «context» key in mousemaps
  • API: Fixed inconsistent focus after Window.open_file()
  • API: The open_file command now supports «transient», «force_group», «clear_to_right» and «force_clone» arguments
  • API: Added Window.num_views_in_group()
  • API: Added sublime.project_history()
  • API: Added sublime.folder_history()
  • Windows: Added alt+shift+p as default keybinding for Quick Switch Project
  • Windows: Fixed a packaging error with the installers
  • Windows: Fixed tooltips sometimes not being removed
  • Windows: Fixed select folder dialog not respecting the initial directory
  • Windows: Fixed lockup that could occur when menus and popups interfere
  • Linux: Files for printing are saved in ~/Downloads if possible to work around snap/flatpak limitations
  • Linux: User config and cache paths are now created at startup if not present
  • Linux: Fixed incorrect mouse behavior at window edges
  • Linux, Mac: Attempt to find the license key for the user when using sudo
  • Mac: Better support for running as root
  • Mac: Fixed extra window being created when ST is launched by opening a file from finder
  • Mac: System setting «click in the scroll bar to» is now respected
  • Mac: Added workaround for Monterey bug causing scrolling to misbehave
  • Mac: Added security entitlements allowing plugins & build systems to request the camera and microphone

Build 4143

11 November 2022

  • Fixed a performance regression in 4142 on color schemes with very complex selectors
  • Folded regions no longer include the trailing newline by default
  • Fixed selection jumping when clicking on a fold marker

Build 4142

10 November 2022

  • Added syntax-based code folding
  • Various syntax highlighting improvements
  • Newly rewritten Haskell syntax highlighting thanks to deathaxe
  • The recent file list is now global instead of per window
  • Files opened in Sublime Text are now added to the system recent file list (See the «update_system_recent_files» setting)
  • Added commands for converting between common identifier cases (See Edit > Convert Case)
  • Added «hot_exit_projects» setting to control what data gets saved in workspace files
  • Added «minimap_horizontal_scrolling» setting
  • Added «open_tabs_after_current» setting for controlling where tabs are opened
  • Added «show_spelling_errors» and «show_line_column» settings
  • Added «goto_anything_exclude_gitignore» setting
  • Added «ruler_style» setting
  • Reworked comment toggling to better handle embedded languages
  • Sub-word separators are now configurable using the «sub_word_separators» setting
  • Added support for Nordic (Windows 865) encoding
  • Reopening a file now asks for confirmation when there are unsaved changes
  • Improved filesystem symbolic link detection
  • Improved performance while open folders are scanned for the side-bar
  • Improved regex performance for syntax highlighting
  • Find: Patterns taken from an open file are now escaped for regex searches
  • Find in Files: Improved binary file detection for find-in-files
  • Find in Files: Find-in-files now supports project-relative patterns starting with //
  • Find in Files: Added the «find_in_files_max_file_size» setting
  • Syntax Highlighting: Context backtraces now link to their origin in sublime-syntax files
  • Syntax Highlighting: Fixed crash caused by starting a branch point at the end of a line
  • Syntax Highlighting: Fixed various syntax highlighting bugs related to backtracking
  • Rendering: Improved performance with large folded regions
  • Rendering: Fixed OpenGL issue related to the wrong context being active
  • Rendering: Fixed shadow related OpenGL rendering bug
  • Rendering: Fixed region rendering edge case
  • Rendering: Improved performance in files with large diffs
  • Rendering: Fixed various issues with faded labels in the sidebar
  • Rendering: Fixed text annotation underlines not drawing when combined with other font styles
  • Sort Lines no longer includes the newline at EOF when nothing is selected
  • Fixed very large unsaved files being lost on hot exit; a prompt is now shown to save them
  • Fixed extraneous window getting created at startup with hot exit disabled
  • Fixed case where multiple reload prompts could show simultaneously
  • Drag operations are no longer interrupted when reloading a file
  • Fixed case where text in command palette was incorrectly colored
  • Fixed side bar button theming issue in the Default theme
  • Fixed sometimes not being able to type a space after completing a snippet
  • Fixed wrong default extension being used in open file dialog
  • Fixed centered views jumping in some cases when whole content is replaced
  • Fixed scroll jumping when folding
  • Fixed Reveal in Side Bar not working in some cases
  • Fixed scroll bar sometimes showing when text is wrapped
  • Fixed sheets not being added to the current selection in some cases
  • Added missing theming attributes to update dialog
  • Linux: System scroll bar overlay settings are now followed
  • Linux: Fixed various issues caused by the C locale
  • Linux: Added safeguard around nested GTK main loops possibly causing data loss
  • Linux: Fixed case where dragging a tab to a window wasn’t working
  • Linux: Fixed crash on startup for some desktop environments
  • Linux: Fixed not being able to grab the scrollbar in a maximized window when at the right edge of the screen
  • Windows: Adjusted for the new Windows 11 window border
  • Windows: Open Containing Folder and similar now respect file explorer replacements
  • Windows: Fixed GDI font glow glyph positioning
  • Mac: Fixed license being removed due to network MAC address changing
  • Mac: Fixed cursor getting stuck as a resize handle on Ventura
  • Mac: Recent files are now available without having a window open
  • Mac: Fixed various issues with the quick switch project dialog
  • Mac: Fixed issue where dialogs could be triggered during dialogs
  • Mac: Fixed case when opening an already open file would jump to the start
  • Mac: Added work around for broken modal loops
  • Mac: Fixed case where settings window couldn’t be closed
  • Mac: Fixed open file dialog crash with some syntaxes
  • Mac: Fixed scrolling when command modifier key is pressed
  • Mac: Fixed Window/New Tab not working with the Adaptive theme
  • API: Added buffer variable to the console
  • API: A noop command can now be used for keybindings to block default behavior
  • API: «encoded_position»: true may be passed to open_file command for the same behavior as sublime.ENCODED_POSITION
  • API: View.context_backtrace can be used to get a stack trace from syntax highlighting
  • API: View.expand_to_scope now returns None when the text point doesn’t match the selector
  • API: Added View.expand_to_scope
  • API: Added Window.promote_sheet
  • API: Fixed crash when running hide_panel command from EventListener.on_deactivated
  • API: The toggle_comment command can now take a variant argument for languages with multiple comment variants

Build 4126

21 December 2021

  • Improved OpenGL rendering performance by automatically batching together controls
  • Added support for Chinese standard GB18030 file encoding
  • Added support for CP862 file encoding
  • Resolved various issues tracking symlinks in the side-bar
  • Avoid session data corruption if a crash happens while saving the session
  • subl -n will reuse an existing empty window if the application isn’t running
  • Binary files now show as «Binary» syntax instead of «Plain Text» in the status bar
  • Fixed wildcards incorrectly matching subpaths (For settings like «folder_exclude_patterns»)
  • Made «find_in_files_max_result_size» not apply when replacing
  • Fixed crash when loading invalid grid layout from session
  • Fixed spell checker incorrectly marking some words as correct if they can’t be encoded
  • Fixed rendering order of successive popups
  • Fixed package subfolders sometimes not being loaded when matching the «ignored_packages» setting
  • Fixed layout instability in side bar causing things to occasionally be rendered 1 pixel off
  • Added some missing glyphs to «draw_unicode_white_space»: «all»
  • Added «draw_unicode_bidi» setting for drawing unicode bidi characters
  • Added «select_across_groups» setting for opting into the old side bar selection behavior when selecting a single file
  • Fixed «close_windows_when_empty» setting not working
  • Fixed goto-definition preview not closing on escape
  • Fixed quick panel closing on enter when there are no matching entries
  • Syntax Highlighting: Fixed backtracking breaking when creating phantoms or doing a context backtrace
  • Syntax Highlighting: Fixed regression with some syntax definitions introduced in 4115
  • Linux: Added missing libcurl dependency for package managers
  • Linux: Fixed GTK overriding LC_NUMERIC environment variable breaking serialization
  • Windows: Fixed command line not taking focus after closing a waited on file
  • Windows: Fixed crash when OpenGL initialization fails
  • Mac: Aliases are now resolved when using drag and drop
  • Mac: Fixed window sometimes being restored on startup when «create_window_at_startup» is disabled
  • Mac: Fixed native tabs restoration resulting in odd behavior
  • Mac: Fixed subl -b not working
  • Mac: Fixed terminal not being focused after waiting on file
  • Mac: Fixed Window > Merge All Windows merging minimized windows
  • Mac: Fixed various inconsistencies when opening files from finder
  • API: The show_panel command for the find and find in files panels can now take «pattern» and «replace_pattern» arguments
  • API: ListInputHandler.preview is now called with None when no items match the current filter
  • API: Fixed case where Window.project_data() could return an invalid value
  • API: Opening a new pane moves currently selected sheets
  • API: Added Window.move_sheets_to_group
  • API: The commands move_to and move_to_neighbouring now move currently selected sheets

Build 4121

26 October 2021

  • New update dialog that shows versions, license status and links to the changelog
  • Various syntax highlighting improvements
  • Use goto-symbol to jump to specific files in find results
  • Improved color scheme/theme selection UI
  • Layout is no longer remembered when «hot_exit» is disabled. You can change this using «remember_layout»
  • Right-delete now respects «use_tab_stops» setting
  • Various improvements to behavior of moving sheets during window layout changes
  • Improved mini-diff and white space rendering performance under OpenGL
  • Improved performance when reading large files from stdin
  • Fixed regex replace not working on last occurrence when using look-behind
  • Fixed «save_on_focus_lost» not working as expected with the reload dialog
  • Fixed open files not being added to recent file list when «hot_exit» is disabled
  • Fixed snippet completions not respecting word boundaries
  • Fixed extra blank window being opened at startup in some cases
  • Fixed not properly exiting after a prompt when «hot_exit» is disabled
  • Fixed window unexpectedly closing when project has no added folders and «close_windows_when_empty» is enabled
  • Fixed tab selection stack not being updated as expected in some cases
  • Fixed transient sheets persisting when exiting goto-anything
  • Fixed squiggle underline width not scaling properly
  • Fixed line highlighting not working when gutter is disabled
  • Fixed case where folders were being added to existing windows instead of opening in a new window
  • Fixed performance regression under Windows with non-integer DPI scaling
  • Fixed syntax highlighting backtracking-related performance problem
  • Undo stack is now cleared when reading from stdin
  • Added Selection > Expand Selection to Block which has the same behavior as Expand Selection to Paragraph had previously
  • «open_files_in_new_window» is now respected when reading from stdin
  • Added «find_scroll_highlights_limit», «find_highlight_matches_max_size» and «find_regex_highlight_matches_max_size» settings to allow configuring find limits
  • Added newline detection and normalization when changing settings programmatically
  • Sublime Merge menu items are hidden when «sublime_merge_path» is set to null
  • Fixed wrong path sometimes being used when viewing file history in Sublime Merge
  • Fixed focus lost when selected group is closed whilst reducing the number of groups
  • File-specific indentation settings are now persisted across restarts
  • Fixed some edge cases related to «find_in_files_max_result_size»
  • Fixed completions in input panel not utilizing available window space
  • Fixed expand selection to tag not working in XML
  • Fixed current transient sheet unexpectedly closing when using goto-anything
  • Fixed crash related to syntax backtracking and phantoms
  • Fixed being unable to open more than one new empty window
  • Linux: Make selection after middle-click paste consistent with other applications
  • Linux: Fixed race condition with multiple simultaneous command line invocations
  • Linux: Fixed custom title bar label color for some GTK themes
  • Windows: Fixed a case where session could be lost when upgrading
  • Windows: Fixed NTFS alternate data streams being deleted on save
  • Windows: Fixed slow window creation when using OpenGL
  • Windows: Fixed incorrect case being used when opening files from find-in-files with gitignore enabled
  • Windows: Fixed stdout/stderr output data race when building
  • Windows: Fixed hang on modal dialogs when context menu is open
  • Mac: Tweaked text drag-drop behavior to respect NSDragAndDropTextDelay
  • Mac: The setting «use_find_clipboard» can be used to disable global find clipboard integration
  • Mac: Fixed double click not working at the top of a window when in full screen with a custom title bar
  • Mac: Fixed incorrectly reporting successful key event when no command was found
  • Mac: Fixed windows not restoring properly with multi-monitor setups
  • Mac: Fixed window layout issue with native tabs when exiting full screen
  • Mac: Fixed title bar text not fading when out of focus
  • Mac: Fixed reading stdin not working when no windows are open
  • API: Fixed plugin popups sometimes having the wrong placement
  • API: Fixed plugins not loading when a .python-version file is in the User package
  • API: Added Buffer.clear_undo_stack()
  • API: Fixed View.show and View.show_at_center not working from on_load callback

Build 4113

14 July 2021

  • Improved performance when editing large files
  • Improved OpenGL rendering performance
  • Improved handling of deleted files
  • Various syntax highlighting improvements
  • subl can now be used to edit stdin, eg: echo test | subl | cat
  • Syntax and indentation detection is now done when editing stdin
  • Added syntax_detection_size_limit setting for controlling when syntax detection is skipped
  • Theme: Improved scroll puck visibility
  • Theme: Fixed adaptive theme not respecting themed_title_bar setting with light color schemes
  • Middle clicking in the Open Files section of then sidebar will close the clicked on file
  • Preserve Case now works with unicode characters
  • Added reveal_menu setting for disabling revealing the menu when alt is pressed on Linux and Windows
  • Safe Mode key binding can be disabled by creating a file named .Disable Safe Mode Shortcut in the data directory
  • Fixed Ruby syntax highlighting in the Monokai color scheme
  • Fixed a scenario where folders weren’t being watched for changes
  • Fixed underlines being drawn behind line highlight
  • Fixed an infinite loop that could occur during syntax highlighting
  • Fixed the append command’s scroll_to_end parameter sometimes not working
  • Fixed Goto Symbol sometimes being scrolled incorrectly
  • Fixed multi-select file limit applying to sidebar
  • Fixed auto-complete related hang in some large files
  • Linux: Fixed print sometimes not working
  • Linux: Fixed wrong order of yes/no buttons in GTK dialogs
  • Linux: Fixed letters sometimes being cut off
  • Windows: Always make a new window when launching main executable on Windows
  • Windows: Fixed window icon not scaling properly on Windows
  • Windows: Fixed globs not being expanded in some cases on Windows
  • Mac: Fixed auto theme not changing with OS auto theme on macOS

4 (Build 4107)

20 May 2021

Release Highlights

  • Multi-select tabs to view them side-by-side
  • Context-aware auto complete by finding similar code elsewhere in the current project
  • Symbols have kind information that is shown for completions and navigation
  • Theme can follow system dark mode preference and title bars can be themed on all platforms
  • Syntax highlighting now supports back-tracking and inheritance
  • Many syntax highlighting improvements as well as builtin TypeScript, JSX and TSX support
  • GPU rendering for improved performance. Enabled by default on macOS
  • ARM64 support for Linux and macOS (Apple Silicon)
  • Many plugin API additions particularly to better support plugins like LSP
  • Python 3.8 support for plugins

GPU Rendering

  • New hardware_acceleration setting will composite the UI on the GPU
  • By default, GPU rendering is enabled on Mac, and disabled on Windows and Linux
  • Details about the active GPU will be displayed in the Console

Context-aware Auto Complete

  • The auto complete engine now suggests completions based on patterns in existing code
  • Uses the entire project as a source, instead of just the current view
  • Plugins may specify symbol kind info to be displayed in suggestions list

Tab Multi-Select

  • Multiple tabs can be selected using ctrl/cmd, their contents will be shown side-by-side
  • Selecting multiple files from the sidebar will also preview them simultaneously
  • Included themes have a tab connector joining the active sheet and tab when using sheet multi-select
  • The sidebar can now select multiple files using alt
  • Goto Anything allows opening tabs side-by-side using ctrl/cmd
  • The Definition popup has a dedicated button for opening files side-by-side
  • Multiple tabs can also be selected from the tab dropdown
  • The menu Selection/Tab Selection contains various options for manipulating tab multi-select
  • File/New View into File has been replaced by File/Split View using multi-select

Python 3.8 API

  • Added a Python 3.8 API environment for plugins
  • Plugins can choose Python version via .python-version file in plugin folder
  • Existing plugins are fully supported via legacy Python 3.3 API
  • Many API improvements and additions — see API section for more details

Goto Symbol

  • Goto Symbol in Project is now significantly faster on huge projects
  • Icons are now shown next to symbols, indicating the symbol kind
  • Symbols with 3 characters or less are now indexed

Syntax Definitions

  • Added out of the box support for TypeScript, JSX and TSX — thanks to Thomas Smith
  • Added ability to «branch» within syntax definitions, for non-deterministic or multi-line constructs
  • Many syntax highlighting improvements, including significant improvements to:
    • Erlang, with thanks to deathaxe
  • Significantly improved load times, match times and reduced cache size on disk
  • embed is now lazy loaded, resulting in much higher performance for syntaxes like markdown
  • Added branch and fail for non-deterministic parsing
  • Added version: 2 to fix edge cases while retaining backwards compatibility
  • Added extends to inherit from another syntax definition. Multiple inheritance is supported, provided all parents have the same base syntax
  • Added hidden_extensions
  • Allow using pop alongside push/set/embed/branch
  • Fixed a performance issue with bounded repeats in regular expressions
  • Syntax tests can now assert that reindent is working as expected
  • Syntax tests can now assert that symbols are indexed
  • Prevent infinite include loops via with_prototype
  • Fixed a number of scope related bugs
  • Fixed some regex capture related bugs
  • Added more information to the Show Scope Name popup

OS Compatibility

  • The following operating systems are no longer supported as a result of adding Python 3.8:
    • OS X 10.7
    • OS X 10.8
    • Windows XP
    • Windows Vista

Platform Integration

  • Added automatic dark/light theme and color scheme switching, based on OS theme changes
  • subl — can now be used to read from stdin on all platforms
  • Windows will remember their Virtual Desktop/Space/Workspace, controlled by the remember_workspace setting
  • Scroll bars now follow platform conventions when clicking on them. Configurable using Scroll Bar.sublime-mousemap
  • Mac: Releases use universal binaries with Apple Silicon support
  • Mac: Updated icon to follow macOS 11 style
  • Mac: Windows will now stay maximized when using Mac window tabs
  • Mac: Fix various issues with the wrong cursor being used
  • Linux: ARM64 builds are now available
  • Linux: Text drag and drop is now supported
  • Linux: Added proper support for Wayland
  • Linux: Touch screen events are now handled
  • Linux: Better support for copy+paste with other applications that don’t support utf8 text
  • Linux: Native file dialogs like those for KDE will be used when configured
  • Windows: IME preview and multi-select support
  • Windows, Linux: Added support for custom title bars
  • Windows, Linux: Use vsync for animations instead of a fixed 60hz
  • Mac, Linux: Improved compatibility with some keyboard layouts

Application Behavior

  • Added Safe Mode, to simulate a clean install. Enabled by passing —safe-mode on the command line or holding shift+alt/option at startup on Windows/macOS respectively
  • Added Help/Report a Bug to link to our public issue tracker
  • Added options to hot_exit setting to control behavior when the last window is closed
  • Fixed a possible case where an update loses the current session
  • Settings containing a UTF-8 BOM will no longer fail to load
  • Added support for previewing TGA and PSD images
  • Added close_deleted_files setting to control behavior of session restoration when files have been deleted on disk
  • Popup windows now use virtual windows for improved performance
  • Improved performance when loading files with very long lines
  • Improved rendering performance on very long lines
  • Improved performance with large session files
  • Data directories have dropped the «3», though if a «3» directory still exists it will be used
  • Mac: Quick Switch Project now works without any windows open
  • Mac, Linux: The cache and index are now located in the proper location (~/.cache and ~/Library/Caches respectively)

Auto Complete

  • Typing the full tab trigger of a snippet will move it to the top of the results
  • Manually typing in the only available completion will hide the auto complete popup
  • .sublime-completion files can now specify annotation, kind and details
  • Ranking quality improvements
  • Improved behavior of completions starting with non-word characters
  • auto_complete_trailing_symbols is now disabled by default
  • cancelCompletion will no longer prevent manual invocation
  • Added the auto_complete_when_likely setting
  • Added auto_complete_preserve_order setting
  • Added auto_complete_include_snippets_when_typing setting
  • Added auto_complete_use_index setting
  • Added auto_complete_use_history setting to control if previous choices are automatically selected
  • Running the auto_complete command when auto complete is already showing will re-query plugins for results
  • auto_complete_selector now applies to the position before the just-typed in character, matching auto_complete_triggers

Input Handling

  • Modifier key taps can now be used as part of a key binding. For example, [«ctrl», «ctrl»] will trigger when Ctrl is pressed twice without pressing any other keys in between
  • Linux: AltGr can now be used in key bindings via altgr
  • Linux: Added a workaround for a touchscreen driver bug, which would cause right click and mouse scrolling to stop working
  • Linux: When the menu is hidden, pressing alt will show it
  • Mac: Fix Pinyin input
  • Mac: Keypad keys can now be bound to as expected
  • Mac: Added key bindings for macOS application tabs
  • Windows, Linux: Hide mouse cursor when typing. Controlled via hide_pointer_while_typing setting
  • Windows, Linux: Fixed being unable to bind Ctrl+Break

Editor Control

  • Added File/Print, which prints via a browser
  • Added Edit/Copy as HTML
  • Build systems now use new annotations functionality instead of phantoms, reducing re-flow
  • Undo history is preserved in the session
  • Comments and layout are preserved when programmatically editing preferences
  • Caret blinking is disabled by default. Set caret_style setting to smooth for previous behavior
  • Improved automatic indentation detection
  • Added relative line numbers, controlled by the relative_line_numbers setting
  • Added setting scroll_context_lines
  • Added setting hide_pointer_while_typing
  • Added setting control_character_style
  • Added Project/Recent/Remove Deleted
  • Added chain command to run multiple commands in series
  • switch_file command now handles filenames with compound extensions
  • The scroll_past_end setting now supports customizing the scroll distance using numbers from 0.0 to 1.0
  • Double-clicking a semi-transient sheet’s tab will now fully open the sheet
  • trim_trailing_white_space_on_save can now be set to «not_on_caret»
  • trim_trailing_white_space_on_save now trims only newly inserted trailing whitespace by default. Controlled via trim_only_modified_white_space setting
  • Expanded draw_white_space setting, supporting leading and trailing white space
  • Unicode white space characters, such as the zero width no-break space, are now drawn as hex values. Controlled via draw_unicode_white_space setting
  • Fixed spelling correction to support languages with upper case characters after start of word
  • Added commands to simplify customizing the active theme or color scheme
  • Quick Switch Project will open the selected project in a new window if Ctrl (Cmd on Mac) is held down
  • Added wrap_width_style preference
  • Added console_max_history_lines
  • Added additional settings to control the status bar: show_sidebar_button, show_indentation and show_syntax
  • Console now uses Python syntax highlighting by default
  • Added Central European (Mac) encoding support
  • Key Bindings: Join Lines is now on Ctrl+Shift+J / Cmd+Shift+J
  • Key Bindings: Expand Selection to Indentation is no longer bound by default
  • Key Bindings: Ctrl+J / Cmd+J is now used as a prefix for sequential key bindings, similar to Ctrl+K / Cmd+K
  • Code Folding: fixed some edge-case incorrect behaviors
  • Linux: Added support for alternate font weight names
  • Linux: Selection is no longer cleared when another application makes a selection
  • Linux: Added Ctrl+Space to trigger Auto Complete
  • Linux, Windows: Added Alt+Shift+Left Mouse Button as an alternative column selection binding
  • Linux, Windows: Added Shift+F10 key binding to open the context menu

Text Commands

  • Macros now record Find commands
  • Reworked Jump Back and Jump Forward commands
  • Improved behavior of Wrap Paragraph
  • Improved behavior of Swap Lines
  • Added Revert Diff Hunk
  • Added Selection/Expand Selection as a general mechanism to expand the selection
  • Selection/Split into Lines will now split a selection into words if the selection doesn’t contain any newlines
  • Show a sum in the status bar when there are multiple selections and all of them are numbers
  • set_file_type command now accepts «scope:» prefixed syntax names
  • Fixed sort_lines replacing unicode newlines with regular ones

Snippets

  • Added auto_complete_include_snippets setting, for disabling auto complete integration
  • Added ignored_snippets setting, for disabling default snippets

Indexing (Goto Definition)

  • Files ignored by .gitignore are not indexed by default. Controlled via index_exclude_gitignore setting
  • Files without known extensions are no longer indexed by default. Controlled via index_skip_unknown_extensions setting
  • Improved behavior with constantly changing files
  • Significantly improved load times

Files and Folders

  • Saving files is now asynchronous
  • Improved performance when adding directories with extreme amounts of files
  • When save_on_focus_lost is enabled, closing an unsaved file will save and close it, instead of prompting to save
  • Improved behavior of save_on_focus_lost in conjunction with administrator owned files
  • Added reload_file_on_change setting to control if files are automatically reloaded or not
  • folder_exclude_patterns and folder_include_patterns now support project-relative paths, by starting the path with //
  • Folders in the sidebar can be recursively expanded via alt+arrow key
  • Added preview_on_click setting to support only previewing files on left click
  • Windows: Fixed Open Containing Folder for UNC paths
  • Windows: Fixed Save dialog not showing for new files with control characters on the first line
  • Windows: Fixed Ctrl+Backspace inserting a DEL character when a dialog is open in the background
  • Linux: Fix recreated directories not working correctly with file change monitoring
  • Linux: Recursively expanding and collapsing sidebar folders now works with alt or super

Find

  • Find results are highlighted on the scroll bar, controlled by highlight_find_results_in_scrollbar
  • Find in Selection now highlights the area that will be searched
  • Commands can now be run without the find panel having input focus
  • Fix keypad enter not working in find panel
  • Improved find history behavior
  • Find: Various performance improvements with large files using graceful degradation
  • Find: Fixed adjacent matches being skipped when find in selection is in use
  • Find: Fixed find in selection option not being cleared when changing tabs
  • Find: Selection will no longer be reset after Find All is used when finding in selection
  • Find: Results are now properly highlighted on Find All when close_find_after_find_all is turned off
  • Find in Files: Improved performance with large numbers of matches
  • Find in Files: Can now filter by .gitignore
  • Find in Files: Added Preserve Case option for replacements
  • Find in Files: Fix not recursing into directories on networked file systems
  • Find in Files: Hide rulers by default in find results
  • Find in Files: Added Find/Cancel Find in Files menu item
  • Find in Files: Binary file patterns are applied when an explicit folder is given
  • Find in Files: Using «Find in Folder…» from the sidebar context menu will apply project file filters
  • Find in Files: Added close_find_after_find_all preference
  • Find in Files: Added close_find_after_replace_all preference

UI

  • Changed default color scheme to Mariana
  • Added Default Dark theme
  • Added themed_title_bar setting
  • Changed file tab style, adding file_tab_style setting
  • Goto Symbol shows more information about symbols
  • Definitions hover popup shows more information about symbols
  • Sheets without input focus are now dimmed when using included themes
  • Added a New Tab button in the tab bar, and hide_new_tab_button setting
  • Added show_tab_close_buttons_on_left setting
  • Added highlight_gutter and highlight_line_number settings
  • Added the ability to auto hide the menu, tabs, and status bar when typing. See auto_hide_menu and related settings
  • Window title bar can be controlled by show_rel_path and show_project_first settings
  • Tab context menu now includes Close Unmodified Files and Close Deleted Files entries
  • Side bar row highlights now properly reflect the selected tabs
  • Color Schemes: Added glow font option
  • Color Schemes: Added support for the underline font style
  • Color Schemes: Added new property, inactive_selection_border
  • Color Schemes: Slightly darkened the background of Mariana
  • Color Schemes: Added support for stippled_underline and squiggly_underline
  • Color Schemes: .hidden-tmTheme files are now supported by the .sublime-color-scheme convertor
  • Themes: Included themes use variables extensively, making customization simpler
  • Themes: Added style property for title_bar element, for better integration with OS «dark modes»
  • Themes: The tree_row for the file with input focus now gets the attribute highlighted
  • Themes: The settings key now supports objects, with keys being settings and values being a boolean, string or array of strings
  • Themes: Added sheet_contents class to text, image and HTML sheets
  • Themes: Added the background_modifier property for sheet_contents
  • Themes: Added a number of new attributes to tab_control for richer tab theming
  • Themes: The highlighted attribute is only applied to the most recently active sheet, rather that the most recently active sheet in each group
  • Themes: tab_control and sheet_contents classes now synchronize their highlighted and hover attributes
  • Themes: tooltip controls now support animations to their opacity
  • Linux: Show sequential key bindings in the menu
  • Linux: Fixed context menu position being slightly offset

Spell Checking

  • Updated dictionaries
  • Added support for non-utf8 dictionaries
  • Updated Hunspell for improved suggestions
  • System dictionaries are now available on Linux
  • Dictionaries in ~/Library/Spelling are now available on Mac

Rendering

  • Properly query glyph extents in order to avoid cutting off large glyphs
  • Windows, Linux: Added support for per-display subpixel ordering
  • Mac: Improved window resize performance
  • Windows: Fixed rendering bug where other applications could cause persistent artifacts via window animations
  • Windows: Add support for color emoji

API

  • Improved coverage of plugin profiling
  • The cProfile module is now included on Linux
  • Added HTML sheets, which can be created via window.new_html_sheet()
  • repr now works as expected
  • Updated OpenSSL to 1.1.1j
  • .sublime-commands files now support filtering commands via the «platform» key
  • Minihtml now handles list-style-type CSS property — circle, square and disc
  • Minihtml now processes subl: links, running them as commands
  • Minihtml now supports white-space: nowrap
  • Improved minihtml rendering performance
  • EventListener has many new features and bug fixes
    • on_query_completions() can now

      • Return suggestions asynchronously
      • Return command completions
      • Include symbol kind information
    • New: on_init() is called once with list of views opened before plugin was loaded
    • New: on_exit() is called immediately before plugin_host exits, after API is shut down
    • New: on_text_changed() and on_text_changed_async() provide detailed modification info
    • New methods:
      • on_reload()
      • on_revert()
      • on_new_window()
      • on_new_window_async()
      • on_pre_close_window()
      • on_pre_move()
      • on_post_move()
      • on_post_move_async()
      • on_new_project()
      • on_new_project_async()
      • on_load_project()
      • on_load_project_async()
      • on_pre_save_project()
      • on_post_save_project()
      • on_post_save_project_async()
      • on_pre_close_project()
      • on_associate_buffer()
    • Fixed on_selection_modified() to not be called twice when left clicking
    • Fixed on_selection_modified() begin called on non-selection state changes
  • New TextChangeListener for getting callbacks when a text buffer is changed
    • Can be dynamically bound to a Buffer using TextChangeListener.attach and TextChangeListener.detach
    • Methods:
      • on_text_changed()
      • on_text_changed_async()
      • on_revert()
      • on_revert_async()
      • on_reload()
      • on_reload_async()
  • Sheet has some new methods:
    • file_name()
    • group()
    • close()
    • is_semi_transient()
    • Sheet.is_transient
  • View has a number of changes and improvements
    • Fixed newly created views not having a valid viewport before being returned to the API
    • add_regions() now has an annotations parameter, to allow adding a per-region annotation to the buffer. The exec command uses this API for build errors
    • add_regions() calls that add an underline now have that underline applied to whitespace characters
    • show() now takes keep_to_left and animate parameters
    • text_point() and related functions now accept a clamp_column parameter
    • Added «glow» to style_for_scope()
    • Added View.rowcol_utf8(), View.rowcol_utf16(), View.text_point_utf8() and View.text_point_utf16()
    • Added sublime.KEEP_ON_SELECTION_MODIFIED, which can be passed to show_popup()
    • New: element() returns a string describing widget views (find input, quick panel input, etc)
    • New: assign_syntax() sets the syntax used in a view, supports Syntax objects, paths and scope selectors
    • New: syntax() returns the currently set Syntax
    • New: clones()
    • New: sheet() and sheet_id()
    • New: export_to_html()
  • Window has some changes and improvements:
    • show_quick_panel now accepts placeholder text, via the placeholder argument
    • Added sublime.CLEAR_TO_RIGHT and sublime.SEMI_TRANSIENT for use with open_file()
    • Added the flag sublime.REPLACE_MRU for use with open_file(). When multiple sheets are selected, this flag will cause the opened file to replace the most recently used sheet with the file being opened
    • Added the flag sublime.WANT_EVENT for use with show_quick_panel(). This will pass an event dict to the on_select callback. The dict will contain the key modifier_keys, which will be a dict that may contain zero or more of the keys: primary, ctrl, super, alt, altgr
    • open_file now accepts sublime.ADD_TO_SELECTION as a flag
    • New: selected_sheets(), selected_sheets_in_group() and select_sheets()
    • New: workspace_file_name()
    • New: bring_to_front()
  • sublime.ok_cancel_dialog() and sublime.yes_no_cancel_dialog() now accept an optional title parameter
  • Added sublime.open_dialog, sublime.save_dialog and sublime.select_folder_dialog
  • Syntax definitions can be queried via sublime.list_syntaxes(), sublime.find_syntax(), sublime.syntax_from_path(), sublime.find_syntax_by_name(), sublime.find_syntax_by_scope(), and sublime.find_syntax_for_file(). They return Syntax objects
  • Improved sys.stdout to extend io.TextIOBase
  • sublime.executable_path(), sublime.packages_path(), sublime.installed_packages_path() and sublime.cache_path() may now be called at import time
  • Added sublime.SymbolRegion and sublime.SymbolLocation with corresponding methods on View and Window
  • Fix a bug with popup being stuck open when a popup is shown in the hide event handler of another popup
  • Added open_project_or_workspace command
  • append command has new, optional disable_tab_translation argument
  • Added modifier_keys to event dicts when commands are invoked via a menu
  • Added sublime.DYNAMIC_COMPLETIONS. on_query_completions() can return this flag to indicate that completion results should be re-queried as the user types
  • Added sublime.INHIBIT_REORDER. Returned by on_query_competions()
  • CompletionItem now accepts a details parameter, which can include basic HTML
  • CommandInputHandler now has an initial_selection() method
  • Added Region.to_tuple and Phantom.to_tuple
  • Fixed ViewEventListener.on_load_async() sometimes not being called
  • Added sublime.QuickPanelItem() with support for kind info, annotations and basic minihtml
  • Plugins may now add selections to the Jump Back history list via the add_jump_record command
  • Plugins may suppress selections from the Jump Back history list via the jump_ignore_selection region
  • Plugins may now disable the default HTML and CSS completions
  • Added Buffer.id() and Buffer.file_name()
  • The TextInputHandler and ListInputHandler classes may define a method want_event() that returns True to receive an extra parameter, an event dict, when the validate() and confirm() methods are called. The dict will contain the key modifier_keys, which will be a dict that may contain zero or more of the keys: primary, ctrl, super, alt, altgr
  • Add sublime.ui_info() for high-level information about the UI
  • Popups will be properly positioned when displayed near the right-hand side of the editor
  • Popups near the right-hand side of the editor with wrapped lines will now be properly sized
  • Added ListInputItem so that ListInputHandler objects can provide kind info, annotations and details
  • Improvements to the API, applied to the new Python 3.8 environment only:
    • bool(sublime.Selection()) will return False when len() == 0
    • sublime.load_binary_resource() now returns bytes instead of bytearray
    • Added Selection.__iter__()
    • Added Region.__iter__()
    • Added Region.__contains__()
    • Added Settings.to_dict()
    • Settings can now be treated like a dict
    • Plugins starting with _ will be ignored, __all__ global will be respected
    • Events won’t be reported until plugin_loaded() has been called
    • .pyc files can now be imported when contained within .sublime-package files, although they will not be scanned for plugins
  • The certifi Python package is preinstalled
  • Significant performance improvements when rapidly printing to the Console
  • Added sublime.log_control_tree(). When enabled, clicking with ctrl+alt will log the control tree under the mouse to the console
  • Added sublime.log_fps(). When enabled, the render times are tracked and logged
  • Added logging status functions:
    • sublime.get_log_commands()
    • sublime.get_log_input()
    • sublime.get_log_build_systems()
    • sublime.get_log_result_regex()
    • sublime.get_log_indexing()
    • sublime.get_log_fps()
    • sublime.get_log_control_tree()
  • Logging functions are now toggle when no argument is passed:
    • sublime.log_commands()
    • sublime.log_input()
    • sublime.log_build_systems()
    • sublime.log_result_regex()
    • sublime.log_indexing()
    • sublime.log_fps()
    • sublime.log_control_tree()
  • Backwards Compatibility Break: The event parameter passed to commands when a minihtml link is clicked changed from a two-element list to a dict with the keys x and y

When it comes to programming, nothing is arguably more heated than a debate about text editors. At times, the arguments border on fanaticism to the point that choosing the right editor almost confirms your status among your peers.

While in actuality it may not be that dramatic, selecting the right option from the plethora of text editors available is important. You have to consider your needs, the project, your current ability, and much more.

As such, this post is going to look at a number of different text editors. Throughout we’ll offer advice on which one may be more suitable. First, let’s talk more about why a dedicated text editor is necessary.

Why You’d Need a Dedicated Text Editor

In a nutshell, your choice of text editor is important enough to warrant some serious research. Among the YouTube channels and Reddit forums, you may come across some severe fanaticism for one particular editor.

While most is hyperbole and dramatics, there is sound reasoning for getting your choice right:

  • As time goes on, you get used to a particular editor and the way it works. This will speed up your work compared to a newbie to the editor.
  • One editor may offer a different ‘feel’ that suits you over another. This is obviously going to be subjective, hence the arguments.
  • Some editors offer functionality that can assist your workflow with a particular language or framework.

As such, you’ll want to consider the makeup of your perfect text editor carefully. Getting the wrong blend of features and functionality could even set you back.

What You Should Look For In a Text Editor

When it comes to the exact features you should seek out, most of it is largely subjective. However, there is a list of considerations you should keep in mind:

  • Can you export projects from one editor and import it into another?
  • Do the keyboard bindings make sense, especially if you’re coming from an editor such as Vim, which has an idiosyncratic approach to editing?
  • How well supported is the text editor, in case of issues? If there’s no active support, an open-source editor is going to be marginally more suitable.
  • Is the workflow logical to you, in as much as setting up projects and working daily using the editor?

There are many more considerations you can make, but these are going to help you narrow down your options. One thing’s for certain, you should choose a text editor based on your own needs, rather than go with forum opinions.

Let’s take a look at the eight text editors we’ll feature. Here’s a quick summary of each one:

  1. Vim. This text editor has a reputation for a vertical learning curve. However, it’s actually intuitive to use.
  2. Atom. An open-source functional editor that has lots of ‘hackability’.
  3. Sublime Text. The ‘old man’ of premium text editors has been around for years, yet still delivers.
  4. Notepad++. Windows users will appreciate this flexible upgrade to Notepad, that can also scale with your ability.
  5. Visual Studio Code. A Microsoft product that has captured over half of the text editing market share.
  6. Intellij IDEA. A full-fledged Integrated Development Environment (IDE). There are actually a number of spin-offs available from the developers.
  7. BBEdit. This is a great first text editor that also has a bunch of excellent premium functionality.
  8. Nova. The developers are known for their previous Mac-only editor Coda – and for the popular Untitled Goose Game cult classic!

Without further ado, let’s take a look!

1. Vim

The Vim text editor.

First off, let’s deal with the sorcerer’s text editor. Vim comes with a reputation. It’s known as power editor, mainly because of…well, everything about it.

It’s a terminal-based text editor that uses idiosyncratic key bindings to navigate and populate your files. There’s no Graphical Use Interface (GUI), and your hands practically have to stay on the keyboard for the entire time.

It’s open-source and pre-packaged with macOS and Linux machines. As such, it’s become an editor of choice for sysadmins and general IT techs. Even so, it’s actually intuitive, and the built-in vimtutor takes about an hour to complete.

We’d suggest that Vim isn’t necessarily suitable for a coding beginner, because you have to learn Vim as well as your language of choice. However, if you have the stomach, getting to grips with Vim is going to make you more efficient and knowledgeable in the long run.

2. Atom

The Atom text editor.

Next, Atom is a text editor that once got a lot of love, but has fallen out of favor with developers. However, it’s still capable and worth installing – perhaps as your primary editor.

It’s based on the Electron framework, and was developed by the GitHub team prior to the Microsoft acquisition. As such, it can lag a little compared to other native text editors.

Atom looks like many other text editors, although there are some nice touches throughout. There’s a built-in terminal for running programs, and GitHub integration as standard:

Atom's GitHub integration.

It may be a touch slow, but Atom is a worthwhile editor for both those new to coding and long-time programmers. We haven’t even touched on its extensibility through ‘packages’, which makes Atom a text editor that can be adapted to any project or language.

3. Sublime Text

The Sublime Text editor.

You’ll likely have seen Sublime Text in the past, or even heard of it. However, you may not have used it. This is a shame because it’s a fantastic minimalist text editor that can stick with you from your very first “Hello, World!” line, to large-scale professional projects.

At a base level its simply a text editor. However, it offers much more that the competition have adapted. For example, the Command Palette can be found in Atom and Jetbrains products, and the Goto Anything feature has Vim-like functionality:

Sublime Text's Goto Anything feature.

Overall, Sublime Text is a great text editor, and what’s more the licensing is flexible. While the trial version is unrestricted, if you stick with Sublime Text you should pay the developer the $80 price. It’s a steal for the functionality you get.

4. Notepad++

The Notepad++ text editor.

Windows users are going to be familiar with Notepad. It’s the default text editor on the Operating System (OS) and, to be diplomatic, it’s functional. Still, this author remembers using Notepad to write early HTML, and it’s going to be the same for many web developers.

However, Notepad++ takes things up a peg or two. On the surface it looks like Notepad, but offers a bunch of other functionality such as split windows, support for over 80 programming languages, and much more.

While it may not look the part, its robustness is arguably great for big or complex projects. The user base is certainly huge, so there’s enough in the box to support this type of project.

Generally, you’ll find beginners using Notepad++ as a learning editor, and it often sticks around as a quick scripting editor at least. Of course, it also finds its way into professional development environments – testament to its quality.

5. Visual Studio Code

The Visual Studio Code text editor.

It isn’t even a decade old, and Microsoft’s Visual Studio Code has grabbed over half of the market share when it comes to text editors. It’s took much of Atom’s user base over the years given the common development team, and bitten into practically every other text editor available.

It’s not hard to see why. Visual Studio Code is a free text editor first and foremost, with a comprehensive extension library to customize the editor to your needs.

Visual Studio Code's extensions.

It also helps that the User Interface (UI) is gorgeous, and the code looks pretty:

Visual Studio Code's text presentation.

Visual Studio Code also brings over functionality from Atom, such as the GitHub integration. What’s more, there’s support for JavaScript and TypeScript out of the box, which is going to please front-end developers.

Even so, practically all coders can use Visual Studio Code to create and deploy projects. It’s had take up from Python developers too, so it’s adaptable to your needs as much as any other text editor.

6. Intellij IDEA

Along with Visual Studio Code, Notepad++, and Vim, Intellij IDEA from Jetbrains is another of the top-tier text editors available.

The Intellij IDEA IDE.

In fact, IDEA is an IDE – hence the name – so offers much more than basic text editing. For example, you can create different run configurations to suit various production needs, or use the built-in terminal to interact with a project.

The Terminal window in Intellij IDEA.

There’s also a fantastic database manager in the premium version that makes even Adminer look cumbersome. However, with this functionality comes a cost.

Jetbrains’ business model is to get you to subscribe to an annual package containing all of its tools. However, while many of these are great for working with individual languages, they’re all just spin-offs of the main IDEA program. What’s more, it can get expensive quickly.

Ultimately, unless you’re earning money from your programming, IDEA is likely out of reach. However, there is an open-source Community Edition that offers much of the same functionality, but for zero cost.

7. BBEdit

The BBEdit text editor.

BBEdit is likely the least known on this list, but comes with a vocal user base and robust functionality.

It’s a macOS-only text editor that supports AppleScript – so if you’re looking to write powerful macros, BBEdit has you covered. Editing-wise it’s billed as a HTML editor primarily, so front-end developers are going to like this more than PHP coders.

You may have used TextWrangler in the past, which was a great all-purpose text editor that has now been sunsetted. However, those features are found in a free tier of BBEdit, which is great news for those looking for their first editor.

BBEdit has been around since 1991, so there’s a longstanding pedigree and degree of stability with the text editor. What’s more, an individual license is $49, which is good value for what’s in the box.

8. Nova (Formally Coda)

The Nova text editor.

Finally, we have a Mac-only premium text editor – Nova. The developers (Panic) have a few macOS-specific utilities that get good reviews, such as the Transmit File Transfer Protocol (FTP) client. What’s more, they’ve published the cult Untitled Goose Game for many different platforms. Certainly, this is a company that likes to do things differently.

Suffice to say, Nova knocks it out of the park. It feels and looks just like a native Mac app would, but of course it’s a third-party text editor. There’s also a great floating quick launch bar for various Nova features:

Nova's quick launch bar.

What’s more, Panic wrote their own text layout engine after finding bugs in Apple’s own. This makes Nova snappy and responsive, which is welcome when you compare it to something like Atom.

There are a bunch of supported languages out of the box, and you can extend the functionality of Nova further too. For Mac users who don’t feel as though they’ll use another OS, Nova could fit the bill. It has a similar feel to Xcode, and at $99, it’s a steal.

In Summary

While it may not be as important as sites such as YouTube makes out, your choice of text editor can make your work run more smoothly. With the right blend of features and functionality, you’ll gain more in the way of efficiency and productivity.

This post has looked at eight text editors, and they will each suit different purposes. Atom or Notepad++ are great functional editors with flexibility in their design. However, an IDE could streamline your workflow in a professional environment. For power users, Vim is a ‘hardcore’ solution with a bark worse than its bite.

Is your favorite text editor on this list, or has our roundup caused you to have a roving eye? Share your thoughts in the comments section below!

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Бесплатная альтернатива microsoft office для windows 11
  • Windows 10 все инструкции
  • Настройка колеса мыши windows 10
  • Windows 7 loader by daz rsload
  • Языки программирования для создания приложений на windows