Карта 'F' для PageUp в vi - PullRequest
       18

Карта 'F' для PageUp в vi

1 голос
/ 26 октября 2011

Я могу сопоставить 'jj' с

imap jj <Esc>

и я даже могу сопоставить буквы на вкладке навигации

map tj :tabprevious<CR>
map tk :tabnext<CR>

Но я не могу отобразить g на страницу вверх (даже если пробел действует как страница вниз)

map <Space> <PageDown>
map g <PageUp> 

Согласно this"Когда вы пытаетесь отобразить несколько последовательностей клавиш, вы не сможете начинать их с букв нижнего или верхнего регистра (" Слишком опасно, чтобы отобразить это "), но с пунктуацией и управляющие персонажи ведут честную игру ». Кто-нибудь может это подтвердить?

Если это так, как назначить функцию неотображенной клавише, например, 'g'

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

Это не отвечает на ваш вопрос, но я подумал, что это может быть полезно для вашей проблемы с RSI. Он отображает пробел для переключения между режимами быстрого и медленного перемещения. Обычно нажатие j или k прокручивает одну строку вниз. Нажатие пробела включит режим быстрого перемещения, при котором нажатие j или k прокрутит вниз / вверх на 10 строк. Нажмите пробел еще раз, чтобы вернуться к нормальной жизни. Это будет работать только в vim, а не просто в vi (большинство программ vi в любом случае просто символические ссылки на vim).

Работает как в обычном, так и в визуальном режимах редактирования.

Чтобы использовать его, поместите этот код в файл ~/.vimrc:

map <Space> :call ToggleFastMoveMode()<CR>

vmap <Space> :call ToggleFastMoveMode()<CR>gv

let g:fastMoveMode = 0

function! ToggleFastMoveMode()
    let g:fastMoveMode = 1 - g:fastMoveMode
    if (g:fastMoveMode == 0)
        noremap j j
        vnoremap j j
        noremap k k
        vnoremap k k
    else
        noremap j 10j
        vnoremap j 10j
        noremap k 10k
        vnoremap k 10k
    endif
endfunction
1 голос
/ 26 октября 2011

(Правка - в исходном ответе предлагались нативные Ctrl-f и Ctrl-b, но ответ был обновлен, поскольку цель здесь состоит в том, чтобы избежать использования Ctrl и Shift)

Несколько точек для добавления

Оставляя вопрос выбора правильного персонажа для вас, предполагая, что мы выбрали X на данный момент.

Я могу вспомнить две причины, по которым map X <PageUp> не работает для вас.

  1. Ваша версия vi может не поддерживать PageUp / PageDown.Если это проблема, тогда попробуйте вместо этого перейти к переходу на страницу vi (B - назад, сопровождается вперед), например.map X <C-b>.

  2. Еще один вариант заключается в том, что он не работает «как ожидалось».В vi PageUp / PageDown действуют на «область просмотра», а не на курсор.Так что, если вы смотрите на верхнюю часть файла, но курсор не наверху или не будет ничего делать.PageDown не будет «работать», если ваш курсор находится в двух строках снизу.

    Чтобы решить эту проблему, вы можете объединить «Переместить окно просмотра вверх» <C-b> и «Переместить курсор в верхнюю часть окна просмотра».H например.map X <C-b>H (противоположное существо map X <C-f>L).Или указав количество строк для прыжка самостоятельно map X 30k (Оп. map X 30j).

Тогда возникает вопрос выбора правильного символа для перезаписи.В Vi много нативных команд, так что на самом деле их много, и лишь несколько символов не делают что-то изначально.Так что если ваша цель - избежать RSI, то, конечно, что-то перезаписать.Но не забудьте переписать что-то, что не слишком полезно для вас лично.

Собственно: f ищет определенный символ в строке, на которой вы находитесь (это может быть очень полезно, но я думаю, не критично) gсам по себе ничего не делает, но gg перемещает курсор в начало файла.Выбор g может вызвать issus, поскольку vim (а не исходный vi) будет интерпретировать два быстрых нажатия клавиш как переход к началу файла вместо выполнения двух PageUp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...