I can map ‘jj’ to
imap jj <Esc>
and I can even map letters to tab navigation
map tj :tabprevious<CR>
map tk :tabnext<CR>
But I can’t map g to page up (even though spacebar acts as page down)
map <Space> <PageDown>
map g <PageUp>
According to this “When you try to map multiple key sequences, you won’t be able to start them with lower or upper case letters (“Too dangerous to map that”), but the punctuation and control characters are fair game.” Can anyone confirm this?
If so, how does one assign a function to an unmapped key like ‘g’
(Edit – original answer suggested native Ctrl-f and Ctrl-b, but answer was updated as the goal here is to avoid using Ctrl and Shift)
A few points to add
Leaving the issue of choosing the right character to you, assuming we chose
Xfor now.I can think of two reasons why
map X <PageUp>isn’t working for you.Your version of vi may not support PageUp/PageDown. If this is the issue then try instead to map to vi’s page jumping (B for back, accompanied by for forward) eg.
map X <C-b>.Another other option is that it doesn’t work ‘as expected’. In vi PageUp/PageDown act on the ‘viewport’ not the cursor. So if you’r looking at the top of the file, but the cursor is not at the top or won’t do anything. PageDown won’t ‘work’ if your cursor is two lines from the bottom either.
To address this you could combine the ‘move viewport up’
<C-b>and the ‘move cursor to the top of viewport’Heg.map X <C-b>H(The opposite beingmap X <C-f>L). Or specifying the number of lines to jump yourselfmap X 30k(Op.map X 30j).Then the issue of choosing the right character to overwrite. Vi has a lot of native commands, so many in fact that only a handful of characters don’t do something natively.
So if your goal is to avoid RSI, then of course overwrite something. But make sure to overwrite something that isn’t too useful for you personally.
Natively:
f searches for a given symbol on the line you are currnetly on (can be very useful, but not critical I guess)
g on it’s own does nothing, but gg moves cursor to top of file. Choosing g may cause issus as vim (not the original vi) will interpret two quick keypresses as go to top of file instead of do two PageUp’s.