binary releases of VS Code without MS branding/telemetry/licensing - GitHub - VSCodium/vscodium: binary releases of VS Code without MS branding/telemetry/licensing
It’s not about optimizing code entry, but optimizing reading code, since you read code a lot more than you write it.
I’m not super familiar with emacs, I’m a vim person, but here are a few examples of mouse vs keyboard navigation.
Search for text in a file:
Mouse:
select the text
click “find in page”
click “next”
Shortcut:
Ctrl + F
Click “next”
Vim:
Type * on the word you want
Type n for next, N for previous
Find matching brace/bracket/parenthesis:
Mouse:
Click on brace
Scroll until you find the match
Shortcut: not sure
Vim:
Type %
Navigate to the top/bottom of the file:
Mouse: scroll or click the sidebar
Shortcut: not sure
Vim: gg for the top of file, G for the bottom
Go to a specific line:
I.e. If from output from a script, like a test failure.
Mouse: scroll or if you have a plugin, click on the red part (i.e. test or lint failure)
Shortcut: in VSCode, Ctrl + click on file name
Vim: G or :
And so on. Vim is optimized for code navigation, a mouse is optimized for intuitive navigation (but slower), and shortcuts kinda fill in the gaps.
If you just want to get up and running quickly, something like VSCode is a good option. That’s what I did when I decided to help my team out with some FE TypeScript code, when I normally use something else. I actually installed a vim plugin for VSCode to get the best of both worlds.
But if you really want a fluid code navigation and editing experience, master something like ViM or emacs.
Oh, and I didn’t mention one of the most powerful things in both ViM end emacs: macros. I use them a ton when manipulating text, such as converting JSON to a class/struct, or doing repetitive syntax changes that are just out of reach of a regex.
Probably, and we could go back and forth based on features. My main point was that using the keyboard is generally more efficient than using the mouse, especially since my hand is already there.
So for software you use every day, master it. Master the keyboard shortcuts, learn how to customize things, etc. Maybe VSCode has an option for macros, IDK (I’ve used them with the ViM mode, so that’s at least one option). Using the mouse should be a fallback, not the first option.
You raise a valid point. Personally, I used to read and write a lot of code, but I no longer do that. I still maintain a open source project, but my job no longer involves writing code that runs.
IIRC, the most useful functionality I used to use are:
peak/goto definitions,
mouse over to peak doc and type signature,
find usage in project,
refractor the name/signature of a function,
real time linting and quick fix.
I am quite curious on why go to beginning or end of the file useful? Also I am not sure that the basic find/replace is more useful than find usage/refactor.
Plugins are available for most popular languages. I rarely need to see the type of a value, and if I want to see the signature of a function, I usually want to go to the implementation as well.
find usage
I just use grep. I’m already in a terminal, so I have all of those features available. Since I use tmux, I just switch over to another pane and run my search there. For changing the name of a function (which is very rare), I just use sed or do the change manually with vim$(grep ...) if it’s more than just a name change (usually I’m changing the signature too).
real time linting
I use a plugin for that, and it works really well.
beginning or end of file useful
Beginning of file: look for an import/constant
End of file: add new function, or a shortcut to the last brace to jump to the start of the class/function. I try to keep files small and single-purpose, so it’s usually what I want (jump to end and match braces).
And yeah, I occasionally miss context-aware search/refactor, but again, it’s so rare that it’s not a big deal. I save far more time with macros than I lose doing manual renames. If I know I’ll be doing a lot of that (and usually it comes in bursts), I have VSCode installed as well. But I don’t launch it very often.
My whole workflow is very command-line oriented, so using a GUI tool just gets in the way for me.
That is great advice. Vim was actually the first editor I properly learned. I find many of the keybinding very nice and useful especially for cursor movement.
I eventually moved away from it since I find I spend more time learning it than using it. I personally dont use that many feature of a editor, I find IDE features more important to me.
But I still have many global keybinding inspired by vim, like ctrl + jkhl;^ for cursor movement. They are absolutely essential for me at this point.
Hjkl is the one core ViM feature that I actually rarely use. I use Dvorak keyboard layout, so those keys are in an awkward location, so I use other movements instead.
I have just enough IDE features in ViM that I don’t feel the need to switch for most tasks, and if I ever did, there are plugins that fill in the gaps.
So I guess we’re just opposite sides of the same coin. :)
It’s not about optimizing code entry, but optimizing reading code, since you read code a lot more than you write it.
I’m not super familiar with emacs, I’m a vim person, but here are a few examples of mouse vs keyboard navigation.
Search for text in a file:
Mouse:
Shortcut:
Vim:
*
on the word you wantn
for next,N
for previousFind matching brace/bracket/parenthesis:
Mouse:
Shortcut: not sure
Vim:
%
Navigate to the top/bottom of the file:
Mouse: scroll or click the sidebar
Shortcut: not sure
Vim:
gg
for the top of file,G
for the bottomGo to a specific line:
I.e. If from output from a script, like a test failure.
Mouse: scroll or if you have a plugin, click on the red part (i.e. test or lint failure)
Shortcut: in VSCode, Ctrl + click on file name
Vim: G or
:
And so on. Vim is optimized for code navigation, a mouse is optimized for intuitive navigation (but slower), and shortcuts kinda fill in the gaps.
If you just want to get up and running quickly, something like VSCode is a good option. That’s what I did when I decided to help my team out with some FE TypeScript code, when I normally use something else. I actually installed a vim plugin for VSCode to get the best of both worlds.
But if you really want a fluid code navigation and editing experience, master something like ViM or emacs.
Oh, and I didn’t mention one of the most powerful things in both ViM end emacs: macros. I use them a ton when manipulating text, such as converting JSON to a class/struct, or doing repetitive syntax changes that are just out of reach of a regex.
Proper VS Code shortcuts for the above cases…
Find next: Ctrl-f, F4
Find matching brace: Ctrl-]
Navigate to Top or Bottom: Ctrl-Home Ctrl-End
I think it’s the same number of keys pressed as vim in every case.
Probably, and we could go back and forth based on features. My main point was that using the keyboard is generally more efficient than using the mouse, especially since my hand is already there.
So for software you use every day, master it. Master the keyboard shortcuts, learn how to customize things, etc. Maybe VSCode has an option for macros, IDK (I’ve used them with the ViM mode, so that’s at least one option). Using the mouse should be a fallback, not the first option.
You raise a valid point. Personally, I used to read and write a lot of code, but I no longer do that. I still maintain a open source project, but my job no longer involves writing code that runs.
IIRC, the most useful functionality I used to use are:
I am quite curious on why go to beginning or end of the file useful? Also I am not sure that the basic find/replace is more useful than find usage/refactor.
Plugins are available for most popular languages. I rarely need to see the type of a value, and if I want to see the signature of a function, I usually want to go to the implementation as well.
I just use
grep
. I’m already in a terminal, so I have all of those features available. Since I use tmux, I just switch over to another pane and run my search there. For changing the name of a function (which is very rare), I just usesed
or do the change manually withvim $(grep ...)
if it’s more than just a name change (usually I’m changing the signature too).I use a plugin for that, and it works really well.
Beginning of file: look for an import/constant
End of file: add new function, or a shortcut to the last brace to jump to the start of the class/function. I try to keep files small and single-purpose, so it’s usually what I want (jump to end and match braces).
And yeah, I occasionally miss context-aware search/refactor, but again, it’s so rare that it’s not a big deal. I save far more time with macros than I lose doing manual renames. If I know I’ll be doing a lot of that (and usually it comes in bursts), I have VSCode installed as well. But I don’t launch it very often.
My whole workflow is very command-line oriented, so using a GUI tool just gets in the way for me.
That is valid man, we all have different workflow, hence different priorities.
Yup, use what works. Most of my coworkers use VSCode, and I’m the oddball with ViM (though I have VSCode installed w/ ViM extension).
Whatever you use, master it. I recommend learning some CLI editor in case you end up needing one.
That is great advice. Vim was actually the first editor I properly learned. I find many of the keybinding very nice and useful especially for cursor movement.
I eventually moved away from it since I find I spend more time learning it than using it. I personally dont use that many feature of a editor, I find IDE features more important to me.
But I still have many global keybinding inspired by vim, like ctrl + jkhl;^ for cursor movement. They are absolutely essential for me at this point.
Hjkl is the one core ViM feature that I actually rarely use. I use Dvorak keyboard layout, so those keys are in an awkward location, so I use other movements instead.
I have just enough IDE features in ViM that I don’t feel the need to switch for most tasks, and if I ever did, there are plugins that fill in the gaps.
So I guess we’re just opposite sides of the same coin. :)