Updates:
(This is a guest post by Antoni Sawicki aka Tenox)
Since 2012 or so, Microsoft has been pushing concept of running Windows Server “headless”, without GUI, and administering everything through PowerShell. I remember sitting through countless TechEd / Ignite sessions year after year, and all I could see were blue PowerShell command prompts everywhere. No more wizards, forms, dialogs. MMC and GUI based administration is suddenly thing of a past. Just take a look at Server Core, WinPE, Nano, PS Remoting, Windows SSH server, Recovery Console and Emergency Management Services. Even System Center is a front end for PowerShell. Nowadays everything seems to be text mode.
This overall is good news and great improvement since previous generations of Windows, but what if you need to create or edit a PowerShell, CMD script or some config file?
Oooops, looks like you are screwed. Seems that Redmond forgot to include most crucial tool in sysadmins, or developers job – a simple text mode editor. WTF Microsoft?
So, are there any 3rd party alternatives? Yes, and there are and quite a lot of them! Unfortunately none are perfect and most are old and unmaintained. This article aims to be a grand tour of whatever is available out there.
Note that throughout the article I will be repeatedly referring to a “portable” editor. For me this means a single .exe file, that can be carried around on a USB pen drive or network share. I also cry a lot about 64-bit Windows builds because I work a lot in WinPE and other environments where syswow64 is not available.
First lets start with most obvious choices, well known through years. If you search for a Windows Console Editor VIM and Emacs will naturally pop up first. These editors don’t need any introduction or praising. I use VIM every day and Emacs every now and then. These two had ports to Windows for as long as I can remember and in terms of quality and stability definitely up top. The problem is that both are completely foreign and just plain unusable to a “typical Windows user”. The learning curve of weird key controls is pretty steep. Also portability suffers a lot, at least for Emacs. Both editors come with hundreds of supporting files and are massive in size. Emacs.exe binary is whopping 83 MB in size and the zip file contains two of them just in case. Whole unpacked folder is 400 MB. WTF.
Emacs on Windows Console
VIM is fortunately much much better you can extract single vim.exe binary from the package and use it without much complaints:
VIM on Windows Console
When talking about about VI and Emacs hard not to mention some more historical versions. Emacs’ little brother MicroEmacs has been available for Windows since earliest days. I’m not going to attempt to link to any particular one since there are so many flavors.
MicroEmacs
VIM little brother VI also comes in different shapes and forms. Lets take look at a few.
Elvis
Elvis on Windows
XVI
XVI on Windows
Stevie is a very special case. Rumor has it, this editor played crucial role in development of Windows NT itself and has been included since earliest days of NT as part of the Internal Developer Workstation. Because it was ported by folks at Redmond the quality should be pretty good. Unfortunately README states “this is an incomplete VI that has not been fully tested. Use at your own risk.”. For a historical note according to Wikipedia, Stevie port to Amiga has been used by Bram Moolenaar as a base source code for VIM.
Stevie for Windows aka NT VI, part of Internal Developer Workstation
One particularly interesting case is VI editor from Watcom compiler suite. It has very nice TUI known from MS-DOS editors, syntax highlighting and online help. One of nicest versions of VI available for Windows. Small portable and just all around handy editor. This is probably my main to go text editor when working on WinPE or Server Core. Unfortunately not very well known. I hope it can gain some popularity it deserves.
OpenWatcom VI Editor
Thanks to Federico Bianchi just learned that there is a BusbyBox port to Windows having both 32bit and 64bit builds, 100% portable as just a single exe file! Most importantly it contains a working vi editor that understands window resizing and Win32 paths. I’m going to be keeping this one around. Awesome job Busybox! As a last thought I wish they also included Nano.
BusyBox Win32 VI Editor
I don’t want this article to be all about VI and Emacs clones. Let this nice color menus be a segue to more native Windows / DOS editors at least departing from hardcore keystrokes and Unix.
For a change in theme lets look at SemWare TSE Pro, the editor that originally started as QEDIT for DOS and OS/2. It has most advanced features one could ever imagine for a text mode editor. Including resizable windows, hex editor, macros and spell checker. I really wish I could use it in everyday’s life. Unfortunately TSE has some drawbacks, it lacks portable version and install is little cumbersome. Currently no x64 build but the author is working on it. TSE is not free, the license is $45 but it allows to install on as many machines as you need. UPDATE: TSE is now Freeware!
SemWare TSE Pro
Next one up is Brief. It used to be very popular in it’s own time and sparked quite bit of following as there are numerous of editors being “brief style”. It’s a nice and small console based text editor. It comes in two versions basic (free) and professional (paid). The pro version supports splitting in to multiple windows regexp and unicode. Unfortunately it runs at $120 per user and there is no 64bit build or a portable edition.
Brief
There also is an open source clone of Brief called GRIEF. Flipping through the manual it has very impressive set of features including $120 windowing feature and macros. Unfortunately it’s rather unportable due to large amount of dll and other files. 64bit build could probably be made if someone wanted.
GRIEF free Brief Clone
As we talk about less costly options there is Kinesics Text Editor aka KIT. It’s more well known if you search on google, completely free and after installing you can find and a x64 binary file! This makes it somewhat portable and able to run in WinPE for instance. Until recently the editor did not have 64bit version so I did not have chance to use it much in practice but the TUI appears to have a well rounded easy to use (F1 or right mouse click brings menus). It does’t seem to have any advanced features but it’s very stable and actively maintained. And frankly this is what matters for editing on the console. It may actually be the right missing Windows console editor.
Kinesics aka KIT
Another one is Minimum Profit. It’s fully open source and it supports a lot of platforms in both windowing and text mode. It has a lot of interesting features such as syntax highlighting, spell checked and menus. It can’t be easily made portable as it needs a lot of files of it’s own scripting language. I also find that screen refresh is somewhat funky. UPDATE: 64bit version now available!
Minimum Profit
Lets look at somewhat well known FTE. It’s a very nice text editor available on many platforms such QNX, OS/2 and of course Windows. It has nice TUI, split windows, syntax highlighting, folding, bookmarks and tools for HTML authoring etc. Overall awesome editor falling short only to TSE. Support for NT console has been available since 1997. I have recently fixed couple of bugs and built a 64bit portable version.
FTE Editor
One could also not forget Borland Turbo C IDE. Apparently there is an open source clone of the IDE as a regular editor called SETEdit. It’s multi platform editor with MS-DOS style windows and menus. Syntax highlighting macros and all regular amenities. Looks like DOS version can play MP3 songs while you code. There is a native WinNT build made with BCPP. To run on Windows you install the DOS version then overwrite dos exe file win NT exe. The editor is absolutely awesome, unfortunately currently doesn’t work in a portable manner and there is no x64 binary. However as it’s open source it could be probably made.
SETEdit a Borland Turbo C IDE Clone
When talking about MS-DOS style windows, Norton Commander like file managers come to mind. There is one particular built specifically for Windows – FAR Manager. Written by author of WinRAR, originally shareware, but since 2007 it has been released under BSD license. FAR does come with a built in text editor hence it’s featured here. It’s actively supported and developed, and because it’s designed from ground up for Windows, it’s probably most stable and trustworthy of all applications in this post. I normally don’t use it that much, but I do keep a copy of it lying around when I need to do some more heavy lifting from Windows console. There is a 64bit binary by default but unfortunately FAR can be hardly made portable as it comes with 400 files.
FAR Manager Text Editor
When talking about Norton Commander clones lets not forget Midnight Commander, which does have an unofficial native Windows console build called mcwin32. Similar to FAR, MC has a very nice built-in text editor. MC overall seems far nicer than FAR but because it’s multi platform rather than WIndows specific and not officially supported I don’t trust it as much for day to day use.
GNU Midnight Commander
When on topic of Unix, lets talk about GNU Nano. In it’s native habitat, it’s very popular and stable editor making it a perfect choice for a text mode console. Unfortunately Windows port is lacking quite a lot, especially for things like resizing Window or handling file names. The official build looks like a fusion of cygwin, mingw, pdcurses and other horrible stuff. Version that comes with Mingw/MSYS is not portable and so far I failed in attempts to build a static windows binary by hand. Nano predecessor UW Pico unfortunately never did have console terminal Windows port. Authors of Pine decided to make it semi graphical application with it’s own window, menus and buttons. Sad story for both Pico and Nano. Hopefully one day someone will make a 100% native Windows port.
Another non-vi and non-emacs Unix editor with Windows console port is JED. Frankly I have not used JED that much in the past although I did play with it in the 90s. This is the original web page of Jed editor. It does seem to have menus and multi windows. Unfortunately doesn’t look like it can be easily made in to a portable image.
JED Win32 Port
Yet another more obscure editor is ED-NT which is DEC EDT clone. Unfortunately seems to be completely dead an unmaintained. Sources are still available through archive.org so perhaps it could be still looked after if someone wanted EDT editor on Windows.
ED-NT
When going through obscurities via archive.org one can also mention ZABED and more specifically Z95 which is a 32bit console version. I don’t know anything about the editor and I’m little too lazy to play with it extensively although pdf manual is available. Probably little too old and too obscure for every day use.
Z95
Perhaps even more obscure to a mere mortal is The Hessling Editor aka THE. It’s based on VM/CMS editor XEDIT. I did briefly use VM/CMS and XEDIT in early ’90 but I never liked it so much. THE comes in as a native Win32 binary. Not easily portable as it requires some additional files. Also no 64bit binary but source code is available.
THE aka The Hessling Editor
Thanks to Andreas Kohl I have learned about X2 Programmers Editor which also has NT console version. The editor seems very nice and has extensive help, syntax highlighting, etc. Unfortunately I have never used this editor before. Last version has been released in 2008 which is not loo long ago but sadly there has been no update since. I hope the author will continue to maintain it.
X2 Programmers Editor
Andreas also brought up Personal Editor, which comes as PE32 and PE64. Looks like really well maintained and stable editor designed and developed specifically for Windows. 64bit bit version is really cool however the editor doesn’t seem to be portable and $40 license will probably prevent me from using it professionally in environments where I would need it. Never the less looks like a very fine editor!
Another find is e3 editor. Pretty interesting stuff. It’s written in assembler and available on many operating systems including DOS and Windows. Looks like it’s still maintained as last version was released in 2016. It supports multiple modes, Wordstar, Emacs, Vi, Pico and Nedit by renaming or linking the main executable. It’s definitely portable as it doesn’t need any extra files and the exe is just 20KB (take that emacs!). Unfortunately because of assembler I don’t think there will be a 64bit release any time soon. Overall seem to be really cool to keep this one around.
e3 editor
A really cool last minute find is public domain TDE – Thomson-Davis Editor. Released not so long ago in 2007 it has 16, 32bit DOS and 32bit Windows console executable. It has DOS style menus,syntax highlighting, resizable windows and bunch of other features. Looks like a very handy editor. I don’t know how did I miss it. Since source code was available so I was able to make a x64 build. This is really untested so use at your own risk!
TDE
Also a recent find – shareware editor called Aurora. I never had a chance to use it in the past but after taking it for a quick spin I fell in love. The text mode UI it feels like it’s own windowing operating system! Originally for DOS, Unix and OS/2, Win32 port is relatively new. Unfortunately it’s no longer maintained or even sold. This is very sad because the editor is extremely cool. I hope the author may be willing to release the source code so it could be maintained.
Aurora
Thanks to Richard Wells I have learned about OSPlus Text Editor. It’s a really cool little editor with Borland style TUI and multi windows. It doesn’t seem to have any advanced features but it does have a built in calculator and allows background play of WAV and MID. Also allows format conversion of various formats like Word, Write or RTF in to text using Microsoft Office converters. Pretty cool if you need to read Word based documentation on the text console. Sadly looks like the application is no longer maintained. I guess with little bit of luck a 64bit version could be compiled using Mingw64 or MSVC.
OSPlus Text Editor
Also recently learned about HT. This is more intended as a binary/exe/hex editor and analyzer. However it seems to have an excellent plain text editor with HTML and C syntax highlighting. It doesn’t have very advanced features but one that stands out is a very detailed change log, much like Photoshop History. It shows you what exactly has been changed and in what order. This is pretty cool when doing heavy editing of some important files. The latest version is from 2015 and it’s 100% portable single exe. Unfortunately no x64 but I guess it should be easy enough to build one with Mingw64.
HT
Just in, freshly “re-discovered” – Microsoft Editor. This editor is a Win32 port of Mark Zbikowski’s port of Z editor to MS-DOS. It has been widely used with Microsoft C as M, MEP and and OS/2 SDK as SDKED. Shockingly looks like Windows NT did actually have a console mode text editor since it’s earliest days or even earlier. Included in Windows NT pre-release CDs and later on the official Windows NT/2000 SDKs, hiding in plain sight, was a Win32 console mode MEP.EXE. Only if Microsoft included this editor with Windows itself the world would be a different place. I have recently dug it out of SDK and made available here. There also are additional builds (including x64) here. There is a dedicated blog post about it.
Microsoft Editor aka MEP aka Z
As with many commercial editors there is an open source edition of Z named K_Edit. It is a modern re-implementation from scratch written in C++ and LUA. It builds only on 64bit Windows and there probably is no chance for any other version. As of today author of K doesn’t provide ready binaries but I was able to make one myself.
K editor on Windows 10 x64
Reader brdlph pointed me to a pretty fresh editor named Textadept. It’s a cross platform, both GUI and TUI editor. Windows console version uses Curses, but it performs remarkably well. It has a look and feel of a modern programmer’s text editor with syntax highlighting, line numbers, etc. The zip archive comes with over 400 files so it’s rather not portable. Also there seem to be no Windows 64bit build although there is one for Linux. The application seem to be very well maintained and the latest release is from January 2018!
Textadept
Reader Andreas Kohl mentioned SlickEdit, which was a text mode editor for DOS, OS/2 and Windows console (before Visual SlickEdit stole it’s name). According to the company’s employee an OS/2 version of the editor was used by some Windows NT team members to develop their operating system. In early days, SlickEdit CTO traveled to Redmond to port the application to a barely yet functioning NT console system so that the developers could use native dev environment. SlickEdit was most likely the very fist commercial application for Windows NT. It was available in 386, Alpha, MIPS and PowerPC editions. I’m hoping to obtain old evaluation copies. So far I was able to get this screenshot:
SlickEdit on Windows 10
Last but not least, a new kid on the block, is Micro. It’s a “modern times editor” for all platforms including Windows. It looks really cool and seem to have all recent amenities from editors such as Sublime Text or Atom. Multi windows, syntax highlighting and even it’s own built in terminal emulator for running a subshell. Micro is 100% portable and comes in as a single x64 exe file. It’s 10 MB size but I think well worth keeping around. Unfortunately it doesn’t have built-in file browser. Yes, there is a plugin for it but I don’t know how to use it. Also seems to have issues with Windows style path names. However I’m really happy that a new editor has been developed in recent times. It has a great chance of becoming the missing Windows text mode editor for the future! Definitely worth keeping an eye on it.
Micro Editor
With this positive news it’s time to wrap up. To summarize there currently is no perfect text mode editor for Windows. I hope that Microsoft can one day step up and provide one. In the mean time I usually stick around to OpenWatcom VI and FAR Manager. For people who do not wish to learn VI, Kinesics KIT may probably be the most perfect editor in short term and Micro in the future. I also hope someone can make a good GNU Nano port using native Win32 APIs without going to pdcurses and cygwin.
Thank you for all suggestions! Have I forgotten or missed any editor? Please let me know and I will promptly add it to the list! Note: please do not include editors that work under Cygwin.
Yori – The Perfect Windows Console Text Editor Has Been Found!
Summary: just perfect, new and well maintained. Works on all Windows editions!
Wendy Krieger recently brought to my attention FreeDOS Edit port to Win32. Overall pretty solid text editor that essentially is edit.com replacement. It’s little dated (2007) however as source code is available it could be freshed up and also build for 64bit and other architectures.
Vikonix sent me his Multitextor editor. The author has rewritten his old text editor to support modern Windows which is pretty cool! A modern from scratch editor is always a good thing! Unfortunately the editor is still beta and not fully released yet. I hope the readers can help Vikonix to beta test and make a release!
TVedit which is an “example” editor from Tvision, a modern port of the classical Turbo Vision framework. Works on both Windows and DOS. They provide binary releases for x64 Windows here. The editor is an awesome straight forward replacement for edit.com. No configuration options or any features. Just a perfect editing experience! Unfortunately while the editor works pretty well on Windows 10, there are some screen display issues on Windows 7 and it plain doesn’t start on Windows XP. Also worth noting that there is another text editor using Tvision framework called Turbo. It looks like pretty awesome text editor but doesn’t look like it supports Windows at the moment and there are no releases. Maybe in future?
Wanted, Dead or Alive: CLI Editor
This article was inspired by the page Wanted: Console Text Editor for Windows, which is very thorough and I strongly recommend that you read it (while you’re at it, put a star in the Github profile of the author, Antoni Sawicki); however, I discovered so many things in the meantime that I decided maybe I can give my two cents about this.
The original article begins with what are also my reasons to investigate this issue:
Since 2012 or so Microsoft is pushing concept of running Windows Server headless without GUI and administering everything through PowerShell. I remember sitting through countless TechEd / Ignite sessions year after year and all I could see were blue PowerShell command prompts everywhere. No more wizards and forms, MMC and GUI based administration is suddenly thing of a past. Just take a look at Server Core, WinPE, Nano, PS Remoting, Windows SSH server, Recovery Console and Emergency Management Services. Even System Center is a front end for PowerShell. Nowadays everything seems to be text mode.
This overall is good news and great improvement since previous generations of Windows, but what if you need to create or edit a PowerShell, CMD script or some config file?
Exactly!
The first time I stumbled upon this need was when I needed to edit a configuration file from a package ported from *NIX — and Notepad didn’t even support UNIX line breaks, so I had to install Notepad++, nothing against it, wonderful application, if only it was multiplatform — but I was left wondering:
What if my only option had been remote access by CLI?
And yes, in the latest Windows (client) there’s the Windows Subsystem for Linux (WSL), with direct access to Windows’ native file systems, but also the full set of shells and utilities for *NIX. But there’s no WSL in Windows Server…
Evaluation parameters
I have some criteria that helped me eliminate a substantial amount of candidates:
- Free and/or for free use, even in professional applications
- x64 compatible
- Support *NIX and DOS line endings
- UTF-8 support
- Being able to run from an executable with a minimum of installation (not spreading 400 files throughout the system disk, for example)
Test system
The editors were summarily tested in Windows 10, but the installation process documented in this article was done in Windows Server Core 2022 (although there shouldn’t be any big difference in Server 2019).
Simple editor
This type of editors has very basic features, having especially limited Search and Replace, and rarely offering things like syntax highlighting; their purpose is to open a text file, change two lines and close it. Being on DOS/Windows, they should follow the CUA (Common User Access) interface standard, developed for OS/2 and used in all Microsoft applications, particularly EDIT.COM which was released with MS-DOS 5.
EDIT.EXE
The latter is the same EDIT.EXE which is still available in some versions of Windows. But since it’s a 16-bit program, it only runs in x86 versions of Windows. I tested it with version 20H02, which was still made available in x86, but Windows 10 OEM stopped having x86 versions since 20H01, also known as 2004.
Before attempting to run the command, we need to go to CMD.EXE’s Properties, tab Options and enable Legacy Console; then close and re-open CMD.EXE.
When you try to run the executable for the first time, Windows asks for permission to install a library, NTVDM, which is the NT Virtual DOS Machine
After meeting these requirements, we’re able open the good old MS-DOS Editor — but of course it doesn’t work in x64, doesn’t know what *NIX line endings are and can’t even imagine what UTF-8 is, but it’s there…
The last version of Windows Server with x86 support is Windows Server 2008, based on Vista.
YEdit
YEdit is part of the shell utilities package / shell replacement Yori
It’s possible to run YEdit without Yori, but first you need to download Yori, as I’ll demonstrate.
Yori’s installer is just a stub that downloads the latest version directly from the repository; however, although this is a good idea (the installer is always the same and it’s not necessary to rebuild it for each new version), this mode of operation, added to the fact that the installer isn’t signed, makes all anti-malware protections scream (warnings on the browser, SmartScreen, Windows Defender, etc.) if we are in a Windows (Client); but when logged in as Administrator on a Windows Server, nothing happens.
YEdit is compatible with x64 e UTF-8, which is most important, but it is also possible to specify a Code Page (remember those?) to open those files that got left behind in the previous century.
For more information about YEdit, the same author of the original article has made another article specifically on Yedit: Yedit – The missing edit.com replacement for modern Windows
For my part, after solving the installation issues, it runs on Windows x64 and supports UTF-8, so it’s been approved…
Installing
For easier access, these editors can be copied to a folder on the user’s profile like %LOCALAPPDATA%\Microsoft\WindowsApps\
; this folder is used by Microsoft to place shortcuts to the actual location of many executables such as winget
, Windows Terminal (wt.exe
), Edge, etc.
There’s no Microsoft Store on Windows Server but the folder is there just the same and it’s part of the PATH variable.
Download the installer:
|
|
And install directly:
|
|
Obtaining package URLs... Installing 1 of 4: http://www.malsmith.net/download/?obj=yori/latest-stable/yori-ypm-amd64.cab Installing 2 of 4: http://www.malsmith.net/download/?obj=yori/latest-stable/yori-core-amd64.cab Installing 3 of 4: http://www.malsmith.net/download/?obj=yori/latest-stable/yori-typical-amd64.cab Installing 4 of 4: http://www.malsmith.net/download/?obj=yori/latest-stable/yori-completion-noarch.cab Applying installation options... Installation complete. Success: Installation complete.
Although $ENV:LocalAppData\Microsoft\WindowsApps\
is part of each user’s private PATH since Windows 8, its subfolders are not (and it wouldn’t have been nice to drop Yori at the root of the folder); this why we must add the path where we installed Yori to PATH:
|
|
And finally yedit
Like I said, yedit.exe
can be used standalone without Yori, after the latter has been installed; in this case, don’t add Yori’s folder to the PATH — but since we did, let’s undo it:
|
|
To make everybody’s lives easier, I’ll make available the executable for YEdit 1.70; just drop it on $ENV:LocalAppData\Microsoft\WindowsApps\
or any other folder that is part of your PATH.
yedit.exe v1.70 — (c) Malcolm Smith
86F5437B1BE03C51625A251B7D9193AD
But once again, I recommend that you try the entire Yori package, because it’s really good.
About Yori
A small comment about Yori: I don’t know where Yori has been my whole life, but it’s fantastic. It’s what CMD.EXE ought to have been for 20 years, and is an excellent option if you want a more powerful shell without having to migrate to PowerShell or install 1GB of WSL just to access *NIX shells. Here’s a small sample of the available commands:
Usual disclaimers apply for running external code on a server and getting ourselves used to administration tools that aren’t part of the installation base package.
Wishlist: Tilde
In the *NIX world the opposite just happened, because someone developed a simple editor with the typical Windows’ CUA interface, which is more natural for those who move from a GUI to the CLI. This editor is called Tilde and currently does not have a version for Windows.
It would be nice to have two options …
Advanced Editor
These editors are more powerful and have a steeper learning curve than simpler editors like Notepad:
But they usually have advanced functions such as macros, multiple windows, syntax highlighting, plugins, etc.
We’ll start with the classic *NIX editors: Pico (Nano), VI (VIM), JOE e EMACS :
Pico/Nano: 404
The closest source for Pico (the editor for the Pine email program, hence the name — PIne COmposer) should be the official site, but it’s been abandonware for a long time, as long as the university that created it forgot about it.
Not only it hasn’t been updated for MS-DOS since 1997, it depends on installing the DJGPP libraries. That makes two blasts from the past…
As for the FSF clone, GNU Nano, it doesn’t have a binary file for Windows, and the most popular independent build requires installing the Cygwin library to simulate a POSIX environment in Windows; that’s a little too heavy for what I’m looking for.
Micro
However, another clone of Pico, called Micro, can be a good bet:
It’s very young and still under development, it’s written in Go and has versions for OSX, Free/Open/Net BSD, Linux (x86, x64 and ARM), and Windows (x86 e x64)
It works well, has a command bar (Ctrl-E
) and the shortcuts are based on the Ctrl
key, following the standard of Pico, Nano, etc.
And just as we want for this challenge, the “installer” is just a ZIP with a statically-linked executable.
Installing
|
|
Micro’s config file is at $ENV:UserProfile\.config\micro\settings.json
VIM
VIM’s Microsoft build (Vi, IMproved) comes in several flavours (including a version with graphical interface called gvim
), but what matters to us is the executable for console, which is built for x86 — but we’re not about to open files larger than 2GB, right?
In case you really do need to open files with more than 2GB, Neovim is built as x64 and can be installed basically the same way as follows.
Installing
The process of downloading and “installing” is very similar to what was used for Micro:
|
|
Vim’s profile is at $ENV:UserProfile\.vimrc
.
You can check my proposal for a .vimrc
on the DotFiles page on this site.
JOE (Joe’s Own Editor)
JOE is less well-known, but has its fans.
For more information about Joe for Windows, check this page.
Fortunately, it’s available as an independent executable, and even in multiple versions depending on the preferred interface:
- joe for those who respect the classics
- https://sourceforge.net/projects/joe-editor/files/JOE%20for%20Windows/4.6/Standalone/joe.exe/download
- jmacs for those who like EMACS
- https://sourceforge.net/projects/joe-editor/files/JOE%20for%20Windows/4.6/Standalone/jmacs.exe/download
- jstar for who would rather have Wordstar
- https://sourceforge.net/projects/joe-editor/files/JOE%20for%20Windows/4.6/Standalone/jstar.exe/download
- jpico for those who miss Pico/Nano and don’t fancy hand-editing a JSON configuration like what Micro uses
- https://sourceforge.net/projects/joe-editor/files/JOE%20for%20Windows/4.6/Standalone/jpico.exe/download
Unfortunately, since they’re served from SourceForge, I couldn’t find any direct link for downloading the files in a Windows Server Core-based installation.
On a WinServer with Desktop Experience, a full browser could be used for this; but on a Windows Server Core, we have to install WGET
WGET for Windows
The Invoke-WebRequest
cmdlet on Windows Server Core can’t resort to the system’s HTML engine (Trident ou Blink) for complex HTTP requests, like these SourceForge addresses which include redirects. But a command line utility that can do it is GNU WGET, which a kind soul builds and distributes for Windows
We install WGET with the same basic method:
|
|
wget
, by default, is an Alias for Invoke-WebRequest
, so we need to call the WGET executable with wget.exe
or delete the Alias; in PowerShell 6+ it’s easy because there a Remove-Alias
cmdlet, but in Windows PowerShell (the default version on Windows, basically PowerShell 5.1), it’s a bit more complex because that cmdlet doesn’t existe and the Alias have several PowerShell Scopes.
However, while (Test-Path Alias:wget) {Remove-Item Alias:wget}
takes care of everything.
wget.exe -h
, or wget -h
if you’ve done the above:
GNU Wget 1.21.2, a non-interactive network retriever. Usage: wget [OPTION]... [URL]... Mandatory arguments to long options are mandatory for short options too. Startup: -V, --version display the version of Wget and exit -h, --help print this help -b, --background go to background after startup -e, --execute=COMMAND execute a '.wgetrc'-style command Logging and input file: -o, --output-file=FILE log messages to FILE -a, --append-output=FILE append messages to FILE -d, --debug print lots of debugging information -q, --quiet quiet (no output) -v, --verbose be verbose (this is the default) -nv, --no-verbose turn off verboseness, without being quiet --report-speed=TYPE output bandwidth as TYPE. TYPE can be bits -i, --input-file=FILE download URLs found in local or external FILE --input-metalink=FILE download files covered in local Metalink FILE -F, --force-html treat input file as HTML -B, --base=URL resolves HTML input-file links (-i -F) relative to URL --config=FILE specify config file to use --no-config do not read any config file --rejected-log=FILE log reasons for URL rejection to FILE Download: -t, --tries=NUMBER set number of retries to NUMBER (0 unlimits) --retry-connrefused retry even if connection is refused --retry-on-http-error=ERRORS comma-separated list of HTTP errors to retry -O, --output-document=FILE write documents to FILE -nc, --no-clobber skip downloads that would download to existing files (overwriting them) --no-netrc don't try to obtain credentials from .netrc -c, --continue resume getting a partially-downloaded file --start-pos=OFFSET start downloading from zero-based position OFFSET --progress=TYPE select progress gauge type --show-progress display the progress bar in any verbosity mode -N, --timestamping don't re-retrieve files unless newer than local --no-if-modified-since don't use conditional if-modified-since get requests in timestamping mode --no-use-server-timestamps don't set the local file's timestamp by the one on the server -S, --server-response print server response --spider don't download anything -T, --timeout=SECONDS set all timeout values to SECONDS --dns-servers=ADDRESSES list of DNS servers to query (comma separated) --bind-dns-address=ADDRESS bind DNS resolver to ADDRESS (hostname or IP) on local host --dns-timeout=SECS set the DNS lookup timeout to SECS --connect-timeout=SECS set the connect timeout to SECS --read-timeout=SECS set the read timeout to SECS -w, --wait=SECONDS wait SECONDS between retrievals (applies if more then 1 URL is to be retrieved) --waitretry=SECONDS wait 1..SECONDS between retries of a retrieval (applies if more then 1 URL is to be retrieved) --random-wait wait from 0.5*WAIT...1.5*WAIT secs between retrievals (applies if more then 1 URL is to be retrieved) --no-proxy explicitly turn off proxy -Q, --quota=NUMBER set retrieval quota to NUMBER --bind-address=ADDRESS bind to ADDRESS (hostname or IP) on local host --limit-rate=RATE limit download rate to RATE --no-dns-cache disable caching DNS lookups --restrict-file-names=OS restrict chars in file names to ones OS allows --ignore-case ignore case when matching files/directories -4, --inet4-only connect only to IPv4 addresses -6, --inet6-only connect only to IPv6 addresses --prefer-family=FAMILY connect first to addresses of specified family, one of IPv6, IPv4, or none --user=USER set both ftp and http user to USER --password=PASS set both ftp and http password to PASS --ask-password prompt for passwords --use-askpass=COMMAND specify credential handler for requesting username and password. If no COMMAND is specified the WGET_ASKPASS or the SSH_ASKPASS environment variable is used. --no-iri turn off IRI support --local-encoding=ENC use ENC as the local encoding for IRIs --remote-encoding=ENC use ENC as the default remote encoding --unlink remove file before clobber --keep-badhash keep files with checksum mismatch (append .badhash) --metalink-index=NUMBER Metalink application/metalink4+xml metaurl ordinal NUMBER --metalink-over-http use Metalink metadata from HTTP response headers --preferred-location preferred location for Metalink resources Directories: -nd, --no-directories don't create directories -x, --force-directories force creation of directories -nH, --no-host-directories don't create host directories --protocol-directories use protocol name in directories -P, --directory-prefix=PREFIX save files to PREFIX/.. --cut-dirs=NUMBER ignore NUMBER remote directory components HTTP options: --http-user=USER set http user to USER --http-password=PASS set http password to PASS --no-cache disallow server-cached data --default-page=NAME change the default page name (normally this is 'index.html'.) -E, --adjust-extension save HTML/CSS documents with proper extensions --ignore-length ignore 'Content-Length' header field --header=STRING insert STRING among the headers --compression=TYPE choose compression, one of auto, gzip and none. (default: none) --max-redirect maximum redirections allowed per page --proxy-user=USER set USER as proxy username --proxy-password=PASS set PASS as proxy password --referer=URL include 'Referer: URL' header in HTTP request --save-headers save the HTTP headers to file -U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION --no-http-keep-alive disable HTTP keep-alive (persistent connections) --no-cookies don't use cookies --load-cookies=FILE load cookies from FILE before session --save-cookies=FILE save cookies to FILE after session --keep-session-cookies load and save session (non-permanent) cookies --post-data=STRING use the POST method; send STRING as the data --post-file=FILE use the POST method; send contents of FILE --method=HTTPMethod use method "HTTPMethod" in the request --body-data=STRING send STRING as data. --method MUST be set --body-file=FILE send contents of FILE. --method MUST be set --content-disposition honor the Content-Disposition header when choosing local file names (EXPERIMENTAL) --content-on-error output the received content on server errors --auth-no-challenge send Basic HTTP authentication information without first waiting for the server's challenge HTTPS (SSL/TLS) options: --secure-protocol=PR choose secure protocol, one of auto, SSLv2, SSLv3, TLSv1, TLSv1_1, TLSv1_2 and PFS --https-only only follow secure HTTPS links --no-check-certificate don't validate the server's certificate --certificate=FILE client certificate file --certificate-type=TYPE client certificate type, PEM or DER --private-key=FILE private key file --private-key-type=TYPE private key type, PEM or DER --ca-certificate=FILE file with the bundle of CAs --ca-directory=DIR directory where hash list of CAs is stored --crl-file=FILE file with bundle of CRLs --pinnedpubkey=FILE/HASHES Public key (PEM/DER) file, or any number of base64 encoded sha256 hashes preceded by 'sha256//' and separated by ';', to verify peer against --random-file=FILE file with random data for seeding the SSL PRNG --ciphers=STR Set the priority string (GnuTLS) or cipher list string (OpenSSL) directly. Use with care. This option overrides --secure-protocol. The format and syntax of this string depend on the specific SSL/TLS engine. HSTS options: --no-hsts disable HSTS --hsts-file path of HSTS database (will override default) FTP options: --ftp-user=USER set ftp user to USER --ftp-password=PASS set ftp password to PASS --no-remove-listing don't remove '.listing' files --no-glob turn off FTP file name globbing --no-passive-ftp disable the "passive" transfer mode --preserve-permissions preserve remote file permissions --retr-symlinks when recursing, get linked-to files (not dir) FTPS options: --ftps-implicit use implicit FTPS (default port is 990) --ftps-resume-ssl resume the SSL/TLS session started in the control connection when opening a data connection --ftps-clear-data-connection cipher the control channel only; all the data will be in plaintext --ftps-fallback-to-ftp fall back to FTP if FTPS is not supported in the target server WARC options: --warc-file=FILENAME save request/response data to a .warc.gz file --warc-header=STRING insert STRING into the warcinfo record --warc-max-size=NUMBER set maximum size of WARC files to NUMBER --warc-cdx write CDX index files --warc-dedup=FILENAME do not store records listed in this CDX file --no-warc-compression do not compress WARC files with GZIP --no-warc-digests do not calculate SHA1 digests --no-warc-keep-log do not store the log file in a WARC record --warc-tempdir=DIRECTORY location for temporary files created by the WARC writer Recursive download: -r, --recursive specify recursive download -l, --level=NUMBER maximum recursion depth (inf or 0 for infinite) --delete-after delete files locally after downloading them -k, --convert-links make links in downloaded HTML or CSS point to local files --convert-file-only convert the file part of the URLs only (usually known as the basename) --backups=N before writing file X, rotate up to N backup files -K, --backup-converted before converting file X, back up as X.orig -m, --mirror shortcut for -N -r -l inf --no-remove-listing -p, --page-requisites get all images, etc. needed to display HTML page --strict-comments turn on strict (SGML) handling of HTML comments Recursive accept/reject: -A, --accept=LIST comma-separated list of accepted extensions -R, --reject=LIST comma-separated list of rejected extensions --accept-regex=REGEX regex matching accepted URLs --reject-regex=REGEX regex matching rejected URLs --regex-type=TYPE regex type (posix|pcre) -D, --domains=LIST comma-separated list of accepted domains --exclude-domains=LIST comma-separated list of rejected domains --follow-ftp follow FTP links from HTML documents --follow-tags=LIST comma-separated list of followed HTML tags --ignore-tags=LIST comma-separated list of ignored HTML tags -H, --span-hosts go to foreign hosts when recursive -L, --relative follow relative links only -I, --include-directories=LIST list of allowed directories --trust-server-names use the name specified by the redirection URL's last component -X, --exclude-directories=LIST list of excluded directories -np, --no-parent don't ascend to the parent directory Email bug reports, questions, discussions to and/or open issues at https://savannah.gnu.org/bugs/?func=additem&group=wget.
Download JOE with WGET and install it
|
|
As you can see, Joe opens a new window instead of using the current window, so it needs to be tested if it will work in a pure remote shell like SSH or PSRemoting; this RDC session isn’t enough.
Testing with OpenSSH
On Windows Server (2022 ou 2019), run the command:
|
|
Name : OpenSSH.Client\~\~\~\~0.0.1.0 State : Installed Name : OpenSSH.Server\~\~\~\~0.0.1.0 State : NotPresent
The SSH client is installed, so we install the OpenSSH.Server following Microsoft’s instructions:
|
|
As we already have the SSH client installed, we can open an SSH session directly in the localhost
:
|
|
The authenticity of host 'localhost (::1)' can't be established. ECDSA key fingerprint is SHA256:[…]. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. Administrator@localhost's password: Microsoft Windows [Version 10.0.20348.350] (c) Microsoft Corporation. All rights reserved. administrator@WIN-L32NQRNJ5GI C:\Users\Administrator>
And as I suspected, trying to open joe
on a pure CLI session, fails.
So, since to use Joe it’s required to be in a Remote Desktop session, in my opinion it’s better to just use Notepad++
As for YEdit, Micro and Vim, they open correctly inside the SSH session.
EMACS
If you really want to use EMACS to edit text files, may I suggest JOE with EMACS interface (jmacs
)?
No?
Then the best page I found that can help you is here.
Quoting the original article,
Emacs.exe binary is whopping 83 MB in size and the zip file contains two of them just in case. Whole unpacked folder is 400 MB.
I said that I was looking for small and practical solutions, not for an operating system and programming language that happens to include a text editor ¯\(ツ)/¯
Honorable mentions
The original article included many more editors, but I tried most of them and I ended up abandoning almost every one because they were impractical or incompatible.
Of those who seemed possible and which I tested, I’ll just comment on my impressions after installing them; and since I don’t find them useful for today’s environments (for example, because they don’t support UTF-8), I won’t document their installation.
Open Watcom VI
https://github.com/open-watcom/open-watcom-v2
https://github.com/tenox7/ntutils/tree/master/owvi
The author of the original article went to the trouble of compiling just the editor of the OpenWatcom IDE, and that can be installed from https://github.com/tenox7/ntutils/blob/master/owvi/vi-x64.exe or https://github.com/tenox7/ntutils/blob/master/owvi/vi-x86.exe; the documentation is at https://github.com/tenox7/ntutils/blob/master/owvi/vi.pdf
However, although it seems a good compromise between VI e a menu-based editor (it can be used just like VI, seems to support .vimrc
, but has menus), it doesn’t support UTF-8.
Kinesics Text Editor
https://turtlewar.org/projects/editor/
https://turtlewar.org/projects/editor/kit-153-win.exe
Works on multiple platforms, but the Windows installer only works with administrator permissions, which immediately warns us that it is a program from another time…
It is extremely configurable, has advanced features such as selection in column mode (VI visual mode) but also doesn’t support UTF-8
And it hasn’t been updated since 2015.
FTE Editor
http://fte.sourceforge.net/
https://github.com/tenox7/ntutils/tree/master/fte
Won’t run because it needs very old MSVC libraries that aren’t available on a modern Windows system.
Thomson-Davis Editor — TDE
http://adoxa.altervista.org/tde/
https://github.com/tenox7/ntutils/tree/master/tde
The depth of the menus and shortcuts is enormous, it’s an extremely powerful editor, but it also does not support UTF-8…
Final thoughts
After decades promoting system management by GUI, the native CLI editors on Microsoft platforms withered away until they became dead men walking. The last viable one is YEdit, maybe because its programmer hasn’t given up yet (and he seems one hell of a programmer); and YEdit is pretty simple.
But even the amazing Yori CLI utilities package wouldn’t have been successful where Cscript and Kermit weren’t (this Kermit was a port of Korn shell for Windows that Microsoft once considered developing), because the problem was that the CLI had no consistent interfaces with which to interact on a system that is wholly dependent on interfaces like Windows; this only came about with PowerShell and the ideas behind it.
The best options end up being the editors from *NIX that have remained updated and that have versions for Windows.
If the lack of support for UTF-8 isn’t a problem, I really liked OpenWatcom VI and TDE.
But my choices are clearly YEdit for quick fixes and Vim for bigger jobs.
Good luck!
In the Windows Command Prompt (cmd), you can use the built-in text editor called `edit` to create and modify text files easily.
Here’s how you can open a text file in the cmd text editor:
edit filename.txt
Understanding CMD Text Editors
What is a Text Editor in CMD?
A text editor in CMD refers to software tools that allow users to create, modify, and manage text files directly from the Command Prompt interface. Unlike graphical text editors that rely on a visual interface, CMD text editors are purely command-line-based, which means they operate solely on text commands. The primary advantage of using a text editor within CMD is its simplicity and speed. Fundamental tasks can be performed quickly without the distractions of a graphical user interface. This can be particularly useful for developers, system administrators, and users working with scripts or configuration files.
Types of Text Editors Available in CMD
While there are various text editors, some common ones utilized in CMD include:
- Notepad: The most basic text editor available in Windows.
- Edit: A simple command-line text editor that allows basic file editing.
- Vim/Nano: Popular text editors on UNIX-like systems, though these may require additional installations on Windows environments.
Each of these editors comes with its unique set of features and commands, allowing users to tailor their editing experience to fit their specific needs.
Mastering Exit in Cmd: A Quick Guide
Getting Started with CMD Text Editor
Opening CMD
To begin using a text editor in CMD, first, you’ll need to open the Command Prompt:
- Click on the Start Menu.
- Type «cmd» in the search bar.
- Press Enter or click on Command Prompt from the results.
Alternatively, you can use the Windows + R keys to open the Run dialog, then type «cmd» and hit Enter.
Creating and Editing Files with Notepad in CMD
One of the simplest ways to create and edit text files in CMD is by using the `notepad` command. Here’s how you can do it:
To open or create a new text file, type:
notepad filename.txt
When you run this command, Notepad will open. If `filename.txt` does not already exist, Notepad will prompt you to create it.
In Notepad, you can write and modify your text. To save your changes, simply go to File > Save, or use the shortcut Ctrl + S. After saving, you can close Notepad.
Using the Edit Command for Quick Edits
The `edit` command provides a quick way to open a text file for editing directly in CMD. To use it, enter:
edit filename.txt
This command launches an in-built text editor. If the specified file does not exist, it will create a new one.
In this editor, you can use keyboard shortcuts to navigate and perform actions. For example:
- Arrow keys for navigation
- F1 to help view tips
- Ctrl + S to save
Make sure to save your work as you go, then exit by pressing Alt + F, followed by X.
List Disks in Cmd: A Quick Guide to Disk Management
Advanced Features of CMD Text Editors
Using the `echo` Command for Quick Text Creation
The `echo` command in CMD is a quick way to create files with predefined content. To generate a text file and write a line into it, use the following syntax:
echo Your text here > filename.txt
This command creates `filename.txt` with the text «Your text here.»
To append additional text without overwriting the existing content, you can use the double greater-than symbol `>>`.
echo Additional text >> filename.txt
This method is particularly useful for scripts and logs where you want to quickly document information without needing to open the file manually.
Viewing File Contents with `type`
To check the contents of a text file directly in CMD, you can use the `type` command:
type filename.txt
This command outputs the entire content of `filename.txt` in the Command Prompt. It’s a quick way to verify what you have written without opening the editor.
Mastering Telnet En Cmd: A Quick How-To Guide
Practical Applications of CMD Text Editors
Scripting with CMD Text Editors
One of the most practical applications of using a text editor in CMD is writing batch files to automate tasks. You can create a new batch file like this:
notepad myscript.bat
Inside Notepad, you can write a simple script:
@echo off
echo Hello, World!
pause
Save the file, and then run it directly from CMD by typing:
myscript.bat
Code Snippet Examples for Developers
Developers can greatly benefit from using CMD text editors for creating configuration files or scripts. Here’s how to create a basic HTML file within CMD:
notepad index.html
You can then add your HTML content:
<!DOCTYPE html>
<html>
<head>
<title>My Web Page</title>
</head>
<body>
<h1>Welcome to My Web Page</h1>
</body>
</html>
After saving the file, this HTML snippet can be opened in any web browser.
Change Color in Cmd: A Quick Guide to Customizing Your Shell
Best Practices for Using Text Editors in CMD
Tips for Efficient Editing
To utilize text editors in CMD effectively, familiarize yourself with keyboard shortcuts for navigation, editing, and managing files. Organizing your text files with clear naming conventions can also save you time when retrieving or editing files in the future.
Troubleshooting Common Issues
Common challenges while using a text editor in CMD include file permission errors. Ensure you have the necessary permissions to create and modify files in the designated folder. Running CMD as an administrator can often resolve these issues.
Create File in Cmd: A Quick Guide to Getting Started
Conclusion
By understanding how to leverage a text editor in CMD, users can efficiently create, modify, and manage text files directly from the command line. Embracing these tools can simplify workflows, particularly for those involved in scripting and automation tasks. Feel free to explore these commands and share your experiences in mastering more CMD functionalities!
Vam
Простой консольный текстовый редактор для Windows
Установка
Without git (Windows, CMD)
- Откройте командную строку (CMD.exe),
- Перейдите в папку, в которую хотите скачать программу (переход — cd (подробнее), создать новую папку — mkdir (подробнее)),
- Скопируйте код, приведенный ниже и вставьте его в командную строку:
mkdir Vam
cd /D Vam
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://github.com//roman-kart/Vam/archive/refs/heads/main.zip', 'VamAlpha0.zip')"
powershell -command "Expand-Archive -Force 'VamAlpha0.zip' 'VamAlpha0'"
set vamCurrentSession=%cd%\VamAlpha0\Vam-main\Vam\bin\Debug\Vam.exe
.\VamAlpha0\Vam-main\Vam\bin\Debug\Vam.exe --help
echo To use Vam in current session write ^%vamCurrentSession^% and press Enter. If you want to start Vam by writing "vam", you have to add [yourPath]\Vam\VamAlpha0\Vam-main\Vam\bin\Debug\ to the Path - environment variable.
- Для запуска программы в текущей сессии напишите в терминале
%vamCurrentSession% [args...]
Будьте внимательны, после того, как вы закроете текущее окно командной строки, вы не сможете воспользоваться этой командой.
Для того, чтобы запускать программу без указания пути,
добавьте путь, по которому расположена данная программа, в переменную окружения Path.
Подробнее в официальной документации Microsoft.
Использование
Редактирование текста
Vam.exe --vam [pathToFile...]
Если такого файла не существует — он создастся автоматически
Вывод содержимого файла на экран
Vam.exe --cat [pathToFile...]
Управление
- Ctrl + S — Сохранить изменения в файле;
- Ctrl + D — Выйти из текстового редактора (без сохранения изменений);
- Переменщение — Блок стрелок: ← ↑ → ↓;
Реализованные функции
- Tab
- Backspace
- Enter
- Ввод текста при помощи клавиш
- Навигация при помощи стрелок
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.
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 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:
Vim’s flexibility and power make it the top choice for advanced users who need a highly customizable text editor.
2. Emacs
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 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 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:
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 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.
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