Так как я часто не использую отличные движки и текстовые объекты, которые предоставляет vim, (а так как "Удерживание 'j' является анти-шаблоном vim," ). Мне бы хотелось, чтобы vim помог мне в обучении использовать их вместо использования hjkl
более нескольких раз подряд.
Когда я начал использовать vim, меня раздражало, что я не использовал hjkl
для перемещения, но вместо этого использовал клавиши со стрелками. В качестве напоминания, чтобы не делать этого, я перепрограммировал клавиши со стрелками, чтобы не использовать их - я знал, что использование домашней строки для навигации будет лучшим долгосрочным планом, поэтому я вырезал положительное подкрепление, которое я получил бы благодаря работе стрелки ключи.
map <left> <nop>
map <right> <nop>
# I quickly removed nop for up and down because using
# the mouse wheel to scroll is sometimes useful
Мне больше не нужны эти сопоставления в моем .vimrc, потому что это сработало очень хорошо, и я быстро переключился, не прилагая сознательных усилий для этого. Аналогичным образом, я хотел бы снова отключить повторное использование основных клавиш перемещения hjkl
. Я представлял себе что-то вроде этого:
let g:last_mov_key = 'none'
let g:times_mov_key_repeated = 0
function! MovementKey(key)
if (g:last_mov_key == a:key)
let g:times_mov_key_repeated = g:times_mov_key_repeated + 1
else
let g:last_mov_key = a:key
let g:times_mov_key_repeated = 0
endif
if g:times_mov_key_repeated > 3
echo "Negative Reinforcement!"
endif
endfunction
noremap j :call MovementKey('j')<CR>gj
noremap k :call MovementKey('k')<CR>gk
noremap h :call MovementKey('h')<CR>h
noremap l :call MovementKey('l')<CR>l
Но это ломается в визуальном режиме, и я представляю себе в тоннах других случаев, когда использование командной строки vim в середине чего-то меняет состояние, когда оно не должно. Как я могу ограничить себя необходимостью использовать более сложные движения?
Изменить: вопрос отредактирован после первых двух ответов для ясности, абзацы переупорядочены. Мне нужна помощь от vim, движущегося за пределы romainl "level 0". До сих пор ответы советуют мне не тратить время, но что, если мы предположим, что я поклонник методики обучения, в которой я меняю свои привычки, меняя среду, чтобы изменить стимулы? В этой модели я хочу выполнить задачу, скажем, прокрутку страницы, и я буду более или менее случайным образом пытаться использовать комбинации клавиш, пока не добьюсь этой задачи. Дофаминовая сигнализация и т.д. В моем мозгу усилит действие, которое в конечном итоге достигнет этого результата. Я мог бы сосредоточиться на том, чтобы не использовать hjkl
, или я мог бы сфокусироваться на задаче, которую я изначально пытался сделать в любом случае, редактировать текст и, не думая об этом, найти более эффективные методы редактирования.