Hacker News new | ask | show | jobs
by org3432 2630 days ago
> And I know devs that swear by vi...they are developing any faster than I am

I hear about this from time to time, but have never seen it people do it successfully first hand, what I do see is silly mistakes in their checkins; incomplete variable renames, formatting is off, syntax errors, switching between browsers and their code while looking at manuals, or other obvious mistakes that can be caught inline by IDEs while you type.

4 comments

I think this says more about those developers than it does about Vim. In my experience, people who are highly effective at programming in Vim typically have it configured in such a way that it offers language-specific functionality comparable to any IDE. You don't get that out of the box (unless you use a Vim distro), but you are able to personalize it to your workflow more exactly than you can with an IDE. A junior developer probably isn't going to be more effective in Vim than an IDE, but a very senior developer easily could be. And somebody who is committing code with lots of obvious errors is almost by definition not a senior developer in my book, regardless of whether they're programming in nano, Vim, or an IDE.
I see the same thing from people using vscode. Its safe to say that those who know their tools well will be more productive than those who do not.
I think VS Code has the same issues I see it with that too, I haven't noticed it as much with VisualStudio and JetBrains' IDEs. Agree completely on knowing how to use your tools, it's like a carpenter showing up for work with a rusty hand saw and thinking they're going to make a house with it.
Hmm, I've got syntax/compile checking, linting, automatic code formatting and generation, and code completion based on context in vim right now. I don't see how any of the problems you mention are vim specific.
What packages are you using and what language out of curiosity?
C++ and JavaScript. I've got about 60 plugins installed and a highly configured vimrc. Some of the important ones:

w0rp/ale

junegun/fzf

junegun/fzf.vim

majutsushi/tagbar

scrooloose/nerdtree

jistr/vim-nerdtree-tabs

erahhal/nerdtree-ack

tpope/vim-commentary

joegesualdo/jsdoc.vim

Raimondi/delimitMate

tpope/vim-surround

vim-scripts/AutoComplPop

Shougo/deoplete.nvim

carlitux/deoplete-ternjs

marijnh/tern_for_vim

Rip-Rip/clang_complete

SirVer/ultisnips

tpope/vim-fugitive

mhinz/vim-signify

vim-scripts/DirDiff.vim

sheerun/vim-polyglot

pangloss/vim-javascript

vim-utils/vim-man

That's a useful list, thanks for sharing. What would be useful is if there was just a distribution of Vim that just had everything included for a specific language. Or at least a base and then a way to discover and add more from within Vim.
There are definitely distributions, for instance SpaceVim. I've got my own configs shared in GitHub but I'd prefer not to reveal my identity. I'm sure there are plenty to be found.
There are plugins made for a language, but they are usually bloated, it's cleaner to compose smaller plugins to achieve the same outcome.

Usually vim configs are like toothbrushes, everyone uses a special one. Here's mine that includes dozens of plugins, some of them repeated from colordrops' list:

https://gitlab.com/somini/dotnvim

Most of the things you're describing as editor issues would be caught by formatters and linters and a test suite, so I have a hard time understanding where you're coming from with this.

edit/ A word.

This is a good point actually, the sooner you catch the mistake the quicker you can correct it. So once it gets down the line, even in a pre-commit, you're just wasting your own time on getting the feedback. It's not always possible to get it sooner of course.
Yep. I have formatters and linters run on save in vim (of course, any editor or IDE can handle this) and the linters render their results in vim, as well. I also use vim-dispatch [0] to handle running builds and test suites asynchronously, but I don't run any auto commands for that, instead preferring to kick those tasks off with a keystroke.

My workflow is crafted in a way to give me, what I have found to be, the tightest feedback loop that I can possibly get with the languages and frameworks and tooling that I use at work. I find that vim, out of every other editor or IDE that I've ever used, is set apart in it's ability to deliver on that requirement.

[0]: https://github.com/tpope/vim-dispatch