vim tricks

alex 15th September 2024 at 1:55pm

Make use of plugins! UltiSnips is great and here's a great resource on it.

how to substitute with regex matching

It is useful to substitute up until a certain point.

; to change `split-tiddler-body-and-metadata` quickly...
(define (split-tiddler-body-and-metadata tiddler-filepath slug)
# matches from split until finding a space
%s/split\S*
def get_noun_gender_from_subsection(subsections: list[Tag]) -> str:
[...]
# matches from `get_` until left paren
%s/get_[^)]*/new_name/

When doing a match substitution (via something like %s) the matching pattern can be referenced again using \0.

# consider the sentence below
I love apple and vinegar.

# apply the following substitution
:%s/apple/\0 juice

I love apple juice and vinegar.

This is nice to match with some code, and add something.

miscellaneous tricks

- # over word to count occurences of a single word!

- gu make lowercase

- gU make uppercase

- :e refreshes the current file

jumps

- CTRL-o/i to jump backward/forward

- g,/; jump to next/previous change

buffers

- CTRL + ^ to change to last active buffer

- CTRL + W s/v split window horizontally or vertically

- CTRL + W n to edit a new file

- CTRL + W ^ to split with the alternate buffer

- <bufferID>CTRL-W ^ split with a given buffer ID

create mappings

:nnoremap - Create mapping for NORMAL mode (non recursive)

:inoremap - Create mapping for INSERT mode (non recursive)

:vnoremap - Create mapping for VISUAL mode (non recursive)

:cnoremap - Create mapping for COMMAND-LINE mode (non recursive)

and some useful mappings

to count characters: vnoremap <leader>q :s/\%V./&/g<CR>

to clear highlighting: nnoremap <leader>h :noh<CR>

A fix to the autocompletion jump issue (when using coc)

https://github.com/neoclide/coc.nvim/issues/4202

Lisp in vim