What Code Editor do you use?

Someone was still asking about text editors.

There have been numerous suggestions in this topic. Is there any any alternative we’ve missed?

1 Like

I want to write some more about code editors. I mentioned Emacs, and later Doom Emacs. The other day I listened to a DT video; Derek is a guy who used to be a Vim fan, but he moved about 3 years ago to Doom Emacs because it has vi, emacs, and space key bindings. It also has an astounding array of tools, which is why it’s been jokingly called an operating system.
Anyway, the big takeaway from his video was to consider starting an Emacs server daemon, then when you invoke Emacs, instead call emacsclient, so I set up an Emacs server to start with my system, and then I changed my quickie alias to start up the emacsclient instead of a standard invocation, and on top of that, I kept it “Doom Emacs”.
VERY impressive! Now Emacs starts as fast as any other editor you can cite, it has vi, Emacs, and space key bindings, it starts up very fast and it can handle any editing needs, from simple stuff to major project work. I used it daily in my last professional job, but I’ve added this “Doom Emacs” and emacsclient setup to my stuff these days and I agree with DT; it’s THE way to go! Check out some Distro Tube videos on Doom Emacs and see what I mean!

I’ve tried vs code, atom, sublime etc, but I always end up using vim. I did use emacs/gcc/gdb for coding back in the day, but these days I’m mostly writing shell and perl, and occasional c, and vim does what I need.

I mentioned “DT” the other day, so to J_J_Sloan and to others who may be vim users, (and assuming I can share the link), DT has a video especially useful to those who have never tried or used Doom Emacs.

4 Likes

Just edited the post; the link to the RAW HTML link of the video it was broken so I just pasted what was visible into the url. Good ole’ DT!!! He sold or at the very least seasoned me into fast workspace switching.

1 Like

Yeah, Derek, a.k.a. Distro Tube is a very good instructor. He learns about stuff very well himself, then he does a fantastic job of explaining what he learns to his audience; that’s why he has a very good connection to Linux users. He’s very biased toward Doom Emacs, especially as a former Neovim/Vim user; since Doom Emacs has both vi, Emacs, and space key bindings, but Emacs is so much more than just an editor, it’s a complete development environment and it even has Lisp-based games (ask the Doctor is one I remember). Maybe That is a reason for trying out Doom Emacs! :slight_smile:

4 Likes

yeah i like DT. Hey DT :cowboy_hat_face:

1 Like

I like Geany. It sits between simple text editors and monster IDEs. :slight_smile:

4 Likes

I use pluma (fork of gedit) with Cobalt theme almost exclusively.
( often for bash and C )

geany is definitely my choice if pluma is not around.

5 Likes

All of the ones mentioned are good; people who get into silly wars are indeed silly - for instance the Emacs versus Vi wars! Doom Emacs is the great equalizer - it’s the best merger of vi and emacs that I have ever experienced; if you’re used to vi you can use vi key bindings; emacs key bindings are still available and there are some easy key bindings with the space key as the “leader key”; Emacs, and Doom Emacs, are more than just editors, they offer a great number of development utilities too; with all of that functionality you’d think it was a huge pig - it’s actually much more nimble than the Web interface to this site, so size is not a factor, but if you start an Emacs server and run it as a “daemon process”, Emacs is as fast as any editor you’ve used, at the expense of a server image.

3 Likes

I like and use geany too; it’s smaller and it’s convenient and fast. Pluma - I’ve tried it but since I have so many others that I use it didn’t get a lot of my attention; that doesn’t negate it a bit; each tool has particular advantages that are especially valuable for their designed purposes; if for example Pluma is intended specifically for C and Bash coding it undoubtedly has some conveniences that are appealing to C programming and Bash shell scripting. That’s probably the attraction I had to it; the only reason I didn’t do more is that my familiarity with other tools with similar capabilities interfered with gaining more expertise with this one.

2 Likes

So many tools and so little time
It’s true. There are so many to choose from that it’s impossible to know them all within one lifetime :laughing:

b.t.w. ‘pluma’ is just a simple editor. Nothing fancy. Just an editor.
But I love its code-colored text-marking and it recognizes a phletora of languages
On the picture below you see a subset of what it recognizes.

4 Likes

I like editors that can handle code-colored text-marking; the ones I talk about the most often - Doom Emacs and Neovim (console or GUI variations) have similar capabilities. Doom Emacs is way more than an editor. Neovim is a refactoring of Vim.

2 Likes

So, I downloaded and began playing with Zed. (I’d been intrigued with it early on but waited until it was more “real”.)

Wow, it is wicked fast! I also like where they’ve taken the layout. So far, so good.

I’ve been using Claude for several projects lately so I decided to add it to the mix and – wow – even Claude is faster. Certainly faster than the web but even subjectively faster than using it in VSCode.

Maybe I’d just become used to a laggard relying on VSCode for most things. But at this point, I’m thinking Zed might become my new editor during jour. :sweat_smile:

3 Likes

Thank you, Halano, for that snapshot about usage.

Is the nvim all strictly neovim, or does that have GVim usage subsumed in those totals?

My first editor was the IBM ISPF Editor, on their System 360 VM/CMS (5 years at Pratt & Whitney Canada) for programming NC Machine Tools:

  • APT
  • Sundtrand SPLIT
  • UNIAPT
  • COMPACT II

I then “leap-frogged” into the future when I was introduced to the venerable     vi     in late 1984 on HP-UX 5.0 on HP9000 Model 550 mini-computer that I administered with 12 CAD/CAM terminals attached via 4 multiplexers (3 on each) to maximize bus thruput for User responsiveness doing mechanical design of plastic injection moulds for Nortel telephone sets (residential and business).

I have been using vi, and its latest reincarnation as GVim, as my primary editor ever since!

I reviewed the book

but neovim’s adoption of Lua, while commendable and a logical next step, was “a bridge too far” for me! So I only use GVim as a basic editor which more than satisfies all my needs.

Within the MATE environment, the natural choice should have been Pluma, but that was too “simplistic” and too much akin to working with LibreOffice Writer for my taste.

Lastly, I have, and still do, use Geany for some limited programming involving C language, which was also my first introduction to an actual IDE, back in 2022. I try to limit my work in Geany to tweaking code that has been worked and re-worked using GVim.

5 Likes

I don’t really edit code but when I need a text editor i also prefer Pluma with the cobalt theme. I prefer to stick to the default text editor.

3 Likes

@ericmarceau I have to believe that the nvim stats include all forms of vim, gvim and nvim/Neovim variations. Vim has been one of the dominant text editors over a very long time and it builds on several platforms, which, like Emacs, makes it very extensible.

The other thing about nvim is that the latest version is 0.12, and on most distributions you don’t see it in their repository, which makes me think that well over 95% of that number is vim, not nvim. That said, the core of the editor is basically vim; it’s the extensions and plugin capabilities that are being completely rewritten in Neovim. Also, you can see that I’m using nvim and Neovim interchangeably; the product name is Neovim, the image name is nvim.

2 Likes

No vim?

Weird, that’s all I use for coding. I’ve tried every cool new editor but keep coming back to vim because it’s always there, and can be themed how I want.

4 Likes

I did mention GVim earlier as my standard tool.

My colour theme is a tweak on “darkbone.vim”, which I have labelled “OASIS_darkbone.vim”.

In another discussion, I said that vi should be the first editor taught because it is guaranteed to be available on Linux/Unix!



Theme: OASIS_darkbone.vim

"################################################################################################
" This Colour Scheme is NOT part of the VIM distribution
" This Colour Scheme is under development
"################################################################################################
"
" Name:		OASIS_darkbone.vim
" Maintainer:	Eric Marceau
" Last Change:	2021-04-16
" Revision:	0.1

"
"""""""""""""" 	Helpful reference commands for help screens
" :he group-name
" :he highlight-groups
" :he cterm-colors

"""""""""""""" 	Handling of Terminal Mode Context
" This Colour Scheme does not explicitly define colours for terminal mode.
" Instead, it is expected that the utility 'CSApprox.vim' should be installed
" for auto-deriving of colour assignments based on the GUI colour assignments.
"	(Ref: https://www.vim.org/scripts/script.php?script_id=2390)


if exists("syntax_on")
  "syntax reset
  syntax off
  syntax on
endif
let g:colors_name = 'OASIS_darkbone'

""" Trying to identify Class in darkbone.vim controlling variable ${ } displayed using #CD5C5C IndianRed  and TMP showing using #98FB98 PaleGreen

"################################################################################################

"""""""""""""" Group 0	(baseline specification)
set background=dark
hi clear
hi Normal		guifg=#AFAFAF	guibg=#000000	gui=none		"Confirmed -- All text not mapped to any Syntax Class

"""""""""""""" Group 1
hi Identifier		guifg=#CF9F00	guibg=#000000	gui=bold		"Confirmed -- Variable_DEFINE
hi Statement		guifg=#2F8F2F	guibg=#000000	gui=bold		"Confirmed -- Flow Control and some commands: while, for,  case, esac, sort, grep, echo, cat, exit, cd, shift, rm,
hi Conditional		guifg=#2F8F2F	guibg=#000000	gui=bold		"Confirmed -- do, done, if, then, else, fi; NB overrides default Statement class
hi PreProc		guifg=#EFEF8F	guibg=#000000	gui=none		"Confirmed -- Variable_CALL (i.e. ${VAR} )
hi Special		guifg=#FFFFFF	guibg=#000000	gui=none		"Confirmed -- Backquote clauses, EscapeSequences, i.e. "\n, \0, %d, %s, etc...
hi Function		guifg=#4F4FFF	guibg=#000000	gui=bold		"Confirmed -- Function definition wrapper
hi MatchParen		guifg=#000000	guibg=#BBBB00	gui=none		"Confirmed -- Blink on matching parenthesis/brace
"hi Tags		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified



"""""""""""""" Group 2
hi Comment		guifg=#5F5F9F	guibg=#000000	gui=italic		"Confirmed -- "ctermfg=Brown ctermbg=Black
hi SpecialComment	guifg=#FFBF8F	guibg=#000000	gui=italic			"Context was not identified
hi Visual		guifg=#000000	guibg=#707090	gui=none		"Confirmed -- Zone selection highlighting
hi VisualNOS		guifg=#9F9FBF	guibg=#000000	gui=none			"Context was not identified
hi Search		guifg=#000000	guibg=#c0c0ff 	gui=none			"Context was not identified
hi IncSearch		guifg=#000000	guibg=#c0c0ff	gui=none		"Confirmed -- First match highlight


"""""""""""""" Group 3
hi LineNr		guifg=#6F6F9F	guibg=#000000	gui=none 		"Confirmed -- when displayed, number column on left
hi Error		guifg=#ee1111	guibg=#000000	gui=none		"Confirmed -- Error line displayed at bottom
hi StatusLine		guifg=#CFCF4F	guibg=#1F1F4F	gui=bold		"Confirmed -- detailed status line
hi StatusLineNC		guifg=#CFCF4F	guibg=#1F1F4F	gui=bold		"Confirmed -- Context-base in-window menu
hi WarningMsg		guifg=#EFCF8F	guibg=#000000	gui=none			"Context was not identified
hi MoreMsg		guifg=#9F9FBF	guibg=#000000	gui=none			"Context was not identified
hi ErrorMsg		guifg=#FF8F8F	guibg=#000000	gui=none			"Context was not identified
hi ModeMsg		guifg=#9F9FBF	guibg=#000000	gui=none			"Context was not identified
hi WildMenu		guifg=#000000	guibg=#c0c0ff	gui=none			"Context was not identified
hi VertSplit		guifg=#606080	guibg=#606080	gui=none			"Context was not identified
hi Todo			guifg=#7F8FEF	guibg=#000000	gui=none			"Context was not identified
hi Title		guifg=#c0c0ff	guibg=#000000	gui=bold			"Context was not identified
hi Question		guifg=#9F9FBF	guibg=#000000	gui=none			"Context was not identified
hi Directory		guifg=#e0e0ff	guibg=#000000	gui=bold			"Context was not identified
hi NonText		guifg=#606080	guibg=#101020	gui=none			"Context was not identified
hi SpecialKey		guifg=#404060	guibg=#000000	gui=none			"Context was not identified


"""""""""""""" Group 4
hi Cursor		guifg=#000000	guibg=#FF9F1F				"Confirmed -- Current position, normal
hi CursorLine				guibg=#181818				"Confirmed -- Display controlled in vimrc
hi CursorColumn				guibg=#181818				"Confirmed -- Display controlled in vimrc
"
hi iCursor		guifg=#000000	guibg=#C08020					"Context was not identified
hi nCursor		guifg=#000000	guibg=#C08020					"Context was not identified
hi rCursor		guifg=#000000	guibg=#C08020					"Context was not identified
hi lCursor		guifg=#000000	guibg=#C08020					"Context was not identified
hi CursorIM		guifg=#000000	guibg=#C08020					"Context was not identified


"""""""""""""" Group 5
hi Number		guifg=#FF4F1F	guibg=#000000	gui=none		"Confirmed -- Numbers assigned or used
hi String		guifg=#D88F9F	guibg=#000000	gui=none		"Confirmed -- String text and all within awk command quotes
hi Char			guifg=#00FFFF	guibg=#000000	gui=none			"Context was not identified
hi Boolean		guifg=#d0e080	guibg=#000000	gui=none			"Context was not identified
hi Constant		guifg=#000000	guibg=#FFAFAF	gui=none			"Context was not identified
hi Float		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified


"""""""""""""" Group 6		(Either 	- in original and not used, or 
""""""""""""""					- harvested from other schemes and not pidgeonholed )
"" Associated with Statement
hi Operator		guifg=#EFEF8F	guibg=#000000	gui=bold		"Confirmed -- Quotes, semicolon ; pipe, Brackets
hi Keyword		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified
hi Exception		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified
hi Repeat		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified
hi Label		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified


"" Association TBD
hi Delimiter		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified
hi Subtitle		guifg=#c0c0ff	guibg=#000000	gui=italic			"Context was not identified
hi Ignore		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified
hi Debug		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified
hi Underlined		guifg=#9F9FBF	guibg=#000000	gui=underline			"Context was not identified
hi AltFunction		guifg=#4F4FFF	guibg=#000000	gui=bold			"Context was not identified
hi AltConstant		guifg=#000000	guibg=#FFAFAF	gui=none			"Context was not identified
hi Unique		guifg=#000000	guibg=#FFAFAF	gui=none			"Context was not identified
hi AltUnique		guifg=#000000	guibg=#FFAFAF	gui=none			"Context was not identified
hi SignColumn				guibg=#000000	gui=none			"Context was not identified


"" Associated with Special
hi SpecialChar		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified


"" Associated with Type
hi Type			guifg=#e0e0ff	guibg=#000000	gui=none			"Context was not identified
hi AltType		guifg=#e0e0ff	guibg=#000000	gui=none			"Context was not identified
hi StorageClass		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified
hi Structure		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified
hi Typedef		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified


"" Associated with PreProc
hi Include		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified
hi Define		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified
hi Macro		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified
hi PreCondit		guifg=#FF0000	guibg=#000000	gui=none			"Context was not identified


"""""""""""""" Group 7 (suppressed for impact assessment)
" Diff
hi DiffAdd		guifg=#7F8FEF	guibg=#000000	gui=none			"Context was not identified
hi DiffChange		guifg=#7F8FEF	guibg=#000000	gui=none			"Context was not identified
hi DiffDelete		guifg=#7F8FEF	guibg=#000000	gui=none			"Context was not identified
hi DiffText		guifg=#7F8FEF	guibg=#000000	gui=bold			"Context was not identified
""
hi spellBad    		guisp=#fcaf3e
hi spellCap	    	guisp=#73d216
hi spellRare		guisp=#ad7fa8
hi spellLocal		guisp=#729fcf


"""""""""""""" Group 8
" Folds
hi Folded		guifg=#9F9FBF	guibg=#000000					"Context was not identified
hi FoldColumn		guifg=#9F9FBF	guibg=#102010					"Context was not identified
hi vimFold		guifg=#9F9FBF	guibg=#201010					"Context was not identified


"""""""""""""" Group 9
if version >= 700
  " Pmenu - Popup Completion Menu
  hi Pmenu		guifg=#9F9FBF	guibg=#202040	gui=none			"Context was not identified
  hi PmenuSel		guifg=#9F9FBF	guibg=#404080	gui=underline			"Context was not identified
  hi PmenuSbar		guifg=#202040	guibg=#202040	gui=none			"Context was not identified
  hi PmenuThumb		guifg=#202040	guibg=#202040	gui=none			"Context was not identified

  " Tab
  hi TabLine		guifg=#606080	guibg=black	gui=underline			"Context was not identified
  hi TabLineFill	guifg=#9F9FBF	guibg=black	gui=none			"Context was not identified
  hi TabLineSel		guifg=#c0c0ff	guibg=#606080	gui=bold			"Context was not identified
endif


"################################################################################################
"################################################################################################
"################################################################################################


"""""""""""""" Group 10		(Syntax OVERRIDES - examples)
"hi link cppSTL			Function
"hi link Error			Todo
"hi link Character		Number
"hi link rubySymbol		Number
"hi link htmlTag		htmlEndTag
"hi link htmlTagName		htmlTag
"hi link htmlLink		Underlined
"hi link pythonFunction		Identifier
"hi link Question		Type
"hi link CursorIM		Cursor
"hi link VisualNOS		Visual
"hi link xmlTag			Identifier
"hi link xmlTagName		Identifier
"hi link shDeref		Identifier
"hi link shVariable		Function
"hi link rubySharpBang		Special
"hi link perlSharpBang		Special
"hi link schemeFunc		Statement
"hi link shSpecialVariables	Constant
"hi link bashSpecialVariables	Constant


"""""""""""""" Group 11		(for future consideration)
" vim:set ts=8 sts=2 sw=2 tw=0:
5 Likes

Cool stuff!
Thank you for sharing this.

2 Likes