Hacker News new | ask | show | jobs
by laserbeam 150 days ago
I found that moving between empty lines is the nicest way to navigate most code across all programming languages, markup languages and just regular text. I don’t have to think, I don’t have to count, I just move and select text big chunks at a time… (not in vim, but I first saw someone have key bindings for this in vim)
2 comments

https://vimhelp.org/motion.txt.html#%7B

    { [count] paragraphs backward.  exclusive motion.
    } [count] paragraphs forward.  exclusive motion.
What does exclusive motion mean here?
Motions can be inclusive or exclusive. It works like the different ways of annotating ranges: [0,1] and (0,1).

Consider the command `d` (delete) combined with the motions for `"`.

First we have `da"`, it deletes the everything between the pair of `"` characters that surround my cursor. Next, `di"` deletes the contents of the `"` pair.

The movement `a"` is inclusive (think 'a quote') and `i"` is exclusive (think 'inside quote'). Combined with the command you get "delete a quote" and "delete inside quote" when the mnemonics are spelled out.

https://vimhelp.org/motion.txt.html#exclusive

oh, wow, great info, thanks. i knew about the general concept from high school math (where it is called open and closed intervals) and also about Python ranges, but didn't know about it in connection with vim. Got it now.
Also, I love mnemonics. They make many topics easier to remember.

Related: Sanskrit has tons of them.

https://duckduckgo.com/?t=fpas&q=sanskrit+mnemonics&ia=web

This is the one thing I brought from my time of trying out vim.

I have now set all my editors to move by paragraph with ctrl+up/dn. It fits so well together with ctrl+left/right that I think it should be standard behaviour. I also set up ctrl+shift+up/dn to select, of course.

>I have now set all my editors to move by paragraph with ctrl+up/dn.

It's even simpler with Vim - just one keystroke - { or }.

On a US keyboard layout this is the same number of keys because { and } are Shift+[ and Shift+]