One of the most important things to understand in Vim are @:
and @@
. After learning them, there is rarely need mapping ex-mode stuff to keyboard shortcuts.
Already plain vim has two languages: the operator language and vimscript. By learning all the cool tricks of the former, it is often case that there is no need to do anything with the latter. Often plugins are installed because of lack of knowledge in the operator-language ;-)
@jarkko little bit off-topic, but I am now falling in love with helix editor (especially for experiments with zig)
@janantos I actually tried for week or two last Dec but being used #vim from 1998, I quickly realized that I’m more or less a lost case ;-)
I.e. nothing wrong in the editor but it is not Vim. I also used NeoVIM for couple of years but even that did not work out because of quite minor details in implementation do not work exactly as in Vim (one example is interactive shell command e.g. :!sudo rm -rf /
).
So I’ve stopped trying to change myself in this area ;-)
@jarkko yeah I all the times struggled to make from vim development ide with autocomplete working, etc. Then experimented with emacs, there I love orgmode and now experimenting in helix as ide. I still use vim as default editor for configs, etc. But still trying to find my IDE I would be happy with that’s not vscode and clones.
@janantos BTW, only auto-complete I tend to use is CTRL-x-CTRL-f which auto-completes path in a vim buffer ;-) For symbol lookup in Rust I use rusty-tags.
rusty-tags also lookup through the sources of the external crates, stdlib etc., given that I have this in .zprofile
:
# rusty-tags
[ `command -v rustc` ] && RUST_SRC_PATH=$(rustc --print sysroot)/lib/rustlib/src/rust/library/
[ -d $RUST_SRC_PATH ] && export RUST_SRC_PATH
And in my .vimrc
I have:
# rusty-tags
autocmd BufRead *.rs :setlocal tags=./rusty-tags.vi;/,$RUST_SRC_PATH/rusty-tags.vi
autocmd BufWritePost *.rs :silent! exec "!rusty-tags vi --quiet --start-dir=" . expand('%:p:h') . "&" | redraw!
I think it like that if I downshift the phase of code I write then I think it through better, and in the end I tend to save time, and have more in-depth understanding of the system I’m working with. With ctags integration I still get quickly to the API references given that they are inline the source code.
My philosophy is that it is better to use software that does not require any plugins in order to work it for you. E.g. I’d rather install VSCode than try to make vim/neovim work like VSCode. This is why I have Sublime Text license for meetings, doing graphs with Mermaid and stuff like that.