I don't know where I saw it, but the idea that "Code exists to be read" really resonates with me. I don't care how fast I can crank out code. I care about how efficiently I can hop around from place to place to grok what is going on and how it needs to change.
The killer feature of vim that I feel like very few people know about is it's remote editor feature.
Launch a long lived instance of vim with a `servername` set, for example I do: `vim --servername EDITOR`
Then set up a application shortcut that will open the file using the prefix `vim --servername EDITOR --remote <file>`
When you open a file, it gets opened in your single vim instance.
From there you can navigate between all your open files using `:b <file-tab-complete>`
It's really a joy to use. You don't have the mess of tabs where you run out of space super fast, you just have a bunch of open files that you can switch between super easily by name.
I would guess the difference is that I use a separate terminal window for all of that stuff. I have my desktop split into three main workspaces. The first has my terminal, the second my browser, the third my editor. I have two more workspaces just in case, but they rarely get used. I have shortcuts set up to hop between workspaces using `<super><workspace number>`.
If I want to track through where something is used or defined, `git grep` usually gets me what I want. From there, if there is a file I want to look at, I use my shortcut `go <filename>` to open it. This used to be an alias for `gnome-open`, but a couple years ago they switched it to `xdg-open` . It opens the file with whatever program would open it when opening it from the file browser, which for any text file is my vim instance over in workspace 3.
I don't pay much attention to which files are open or not. Usually I build up a working set of files I care about pretty quickly and then I can hop between them from within vim. Otherwise I can easily go back over to my terminal and open it by name directly.
It may not be for you, but it's far from a nightmare in my experience.
Right, everyone has their preferences. As was said in another comment, merely paying attention to and adapting one's personal tooling is a huge differentiator between software developers, regardless of which particular tools those might be. Your setup has a lot of conceptual similarities to mine. I use terminals heavily, but ultimately I personally like a GUI as the 'root' of my working space. I'd rather start from a place where I can navigate everything visually/spatially and then add shortcuts on top of that to automate the most repetitive/tedious paths that naturally occur in that environment.
Now this is dope, I used to rely on a trick I discovered in a conference[0], append to the `path` variable in your .vimrc so you can recursively fuzzy find files in the directory where you opened Vim, and more recently setting global marks[1] in the files of interest.
Biggest downside is using someone else's keyboard. I've grown a nasty habit of hitting escape instinctually, every time I finish typing something. I turn on their caps lock so regularly! Still worth it though
Also, as a VIM user, I only have to use Alt when I’m dealing with GUI apps, which is definitely common, but a time when I don’t mind moving my hands around.
So for me, Esc is Alt. Alt is caps lock. And of course caps lock is Esc.
And I swap Super key and Control, since the Super key is easier to press with my palm on my ergonomic keyboard. And Ctrl does have a lot of uses in Vim.
I also map the Windows Menu key (not the Super key, but the other one which is used for showing context menus) To underscore. That helps me type C identifiers with multiple words in them. This one remapping is a huge benefit, almost as important as mapping caps lock to Esc.
ctrl-[ (for right hand) or ctr-3 (left hand, thanks teddyh) => escape
ctrl-i => tab
ctrl-h => backspace
ctrl-m => return
ctrl-w => delete prev word
ctrl-u => clear line
ctrl-o => cmd mode for 1 cmd
...and many, many more, including all the completion options.
https://github.com/alols/xcape (for linux)
https://apple.stackexchange.com/questions/132564/how-can-i-r... (for macOS)
https://github.com/ililim/dual-key-remap (for windows)
(This is a blessing and a curse. You never have to worry about OS-level hacks to make caps lock a control key, but on the other hand, there is no way in the USB HID protocol to say "send an !". Rather, the keyboard has to synthesize a shift + 1. And what character that actually maps to depends on your OS, because of course it does.)
I tried it because I was having a bunch of wrist pain. The actual solution to my wrist pain was easy: Don't code on a laptop keyboard. The ergonomics are terrible.
By far the most irritating thing about others' keyboards is they have not disabled it yet. Second most is that Ctrl isn't there instead.
I keep a caps lock on my programmable keyboard for this (Fn+K).
I also like SQL to be formatted with capital letters for keywords.
type_a_constant ctrl-[ vawU
That sounds more than it is. Really I just touch type it without thinking consciously about it.Probably don’t even need visual mode that’s just how I work.
But I gave vi another shot, and I'm so glad I did. The learning curve can be steep, and it's really unintuitive at first (or it was for me). But once it clicks a little bit, and you settle in.. Wow. I felt way more productive using it than any other editor.