Как переназначить клавиши клавиатуры, чтобы избежать RSI в VIM

Я надеюсь, что это не выглядит как попытка разжечь разговор исключительно ради этого.

Я много пользуюсь vim (5-10 часов в день), и я заметил, что мое левое запястье начинает болеть первым. Стандартная раскладка клавиатуры (см. Изображение ниже) почти наверняка даст вам артрит.

Стандартная клавиатура

В настоящее время я переназначил

  • Ctrl для Shift
  • Shift to Caps Lock
  • Caps Lock для Ctrl

Это помогает с такими общими командами, как Ctrlf или Shift2 (@), но мне все равно нужно повернуть запястье, чтобы получить эти комбинации. Есть ли способ переназначить клавиши, чтобы избежать скручивания на левом запястье (возможно, используйте клавишу Tab)? Я просто нахожу странным, что для текстового редактора, разработанного специально для программистов, он будет интенсивно использовать их из-за ключей. Я рассмотрел переназначение к старой раскладке клавиатуры (см. Изображение ниже), но я не хочу узнавать, что если у него будут те же фундаментальные проблемы, что и у моего текущего переназначения.

старая раскладка клавиатуры

9 ответов

Решение

Примечание: я не врач, просто еще одна машинистка, которая страдала от боли в запястье.


По моему опыту, просто сопоставление Caps с Ctrl (или замена двух, если у вас есть Caps) и использование Ctrl + [ вместо Esc, имеют большое значение. Ctrl + [ не требует дополнительного отображения в vim, поскольку это эквивалентно Esc. Если вы можете научить себя этим небольшим изменениям, вы значительно уменьшите свое движение, если учесть, как часто вы используете Esc в vim.

Преобразование Caps в Ctrl нельзя выполнить внутри vim, и его нужно будет сделать общесистемным, однако наличие Ctrl в более удобном месте также поможет в других приложениях, использующих комбинации Ctrl. Существуют разные способы переназначения ключей в зависимости от того, какую ОС вы используете. Несколько общих вариантов:

Хотя это, вероятно, улучшит вашу ситуацию, вы действительно должны подумать о посещении врача и / или о покупке более эргономичной клавиатуры, если ваша боль не проходит. У меня есть старая версия Kinesis Advantage, которую я приобрел на Ebay примерно за 100 долларов США, и я не мог быть счастливее. Клавиши могут быть запрограммированы непосредственно на клавиатуре, поэтому не требуется никакого программного обеспечения для замены клавиш или создания собственных макросов клавиатуры для часто используемых нажатий клавиш.


Редактировать: я вижу в вашем посте вы также упоминаете комбинации, такие как Ctrl + F и Shift + 2, требующие, чтобы вы повернули запястье, чтобы нажать. Мне кажется, что вы используете только клавиши Ctrl и Shift с левой стороны клавиатуры. Вы действительно должны использовать оба набора этих клавиш, используя тот, который находится на противоположной стороне от клавиши, которую вы модифицируете. Это сведет на нет это движение запястья.

Используйте заглавные буквы как ctrl для всей системы. (Как часто вы вырезаете / копируете / вставляете?)

Это также заставляет Ctrl [ работать в VIM.

Наряду с этим я использую плагин vim 'arpeggio'.

Арпеджио позволяет вам определять привязки vim, которые активируются при одновременном нажатии двух клавиш.
J K нажатие служит мне ESC.

Также вам может быть интересен плагин "round.vim ".

Устранены все мои боли в запястье.

пост скриптум:
Используйте " Vundle "!
На сегодняшний день это лучший менеджер плагинов vim, и вам будет интересно, как вы могли обойтись без него, особенно если вы используете настроенный vim на нескольких машинах. Не пугайтесь, если у вас возникли проблемы с настройкой изначально, не торопитесь.

Я сопоставил Escape (одно касание) и Ctrl (удержание) с CapsLock:

xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "remove Control = Control_L"
xmodmap -e "keysym Control_L = Caps_Lock"
xmodmap -e "keysym Caps_Lock = Control_L"
xmodmap -e "add Control = Control_L"
xcape -t 1000 -e "Control_L=Escape" # Fire nothing if 1000ms hold time out

Наверное, я тут все портю, но xmodmap В любом случае, это не лучший вариант для изменения отображений, поэтому я изменю это на чистый xkb config.

Я также поменялся местами: с; и `с ~, так как я использую: и ~ чаще:

xmodmap -e "keycode 47 = colon semicolon"
xmodmap -e "keycode 49 = asciitilde grave"

Я также использую Compose Key, чтобы быть в состоянии напечатать ūmlauts et c.

В vim самое полезное изменение, которое я когда-либо делал, это отображение пространства на лидера. Все виды комбинаций лидер-ключ сделают вашу жизнь проще.

Я не мог привыкнуть к H и L для _ и $, так как он, кажется, не работает с surround.vim и некоторыми другими приемами, которые советуют люди.

Просто не используйте стрелки!

Я переключился на клавиатуру Kinesis Advantage и переназначил Caps Lock на Esc. Это эффективно устраняло любую боль в запястье, которую я чувствовал как пользователь vim. Как только я снова не врач, но, глядя на то, как мои руки двигаются, я не вижу, как мое запястье изгибается, даже когда я нажимаю Shift.

Вы могли бы, вероятно, сделать некоторые большие изменения в клавишах большого пальца, чтобы еще больше уменьшить напряжение, но, честно говоря, я никогда не чувствовал в этом необходимости.

Боюсь, это не решение за 0 долларов, но оно было очень эффективным для меня.

Я бы сделал эту часть комментарием к ответу Рэнди на Esc, если бы мог, но это требует немного больше места. Есть один важный случай, когда вы не можете просто переназначить ключи Windows: Windows 7 без прав администратора. Это достаточно распространено в корпоративной среде; по крайней мере, он описывает меня и эту клавиатуру на рис. В репозитории keymapper есть приличная информация по этому вопросу:

Важное примечание для пользователей Windows 7

Windows 7 не поддерживает сопоставления клавиш для каждого пользователя. До следующего выпуска Key Mapper вам придется вручную переключаться на сопоставления "Boot" из меню Mappings, перезагружаться, чтобы изменить сопоставления, и вам потребуется административный доступ к вашему компьютеру для настройки сопоставлений клавиш, которые будут работать в Windows. 7.

То же самое верно для любых инструментов Microsoft, KeyTweak, SharpKey и т. Д.

Так что вам придется использовать что-то вроде AutoHotkey. Лично я предпочитаю привязывать Caps Lock напрямую к Esc для Vim, и у меня были проблемы с привязкой его к Ctrl:

#IfWinActive ahk_class Vim
*CapsLock::Esc
#IfWinActive

Еще одна альтернатива мне нравится inoremap jj <Esc>, Если вы не планируете писать о хадже или о чем-то, это работает довольно хорошо.


Больше к вашей точке

В любом случае, не задумывались ли вы над тем, чтобы сделать вышеперечисленное для простого побега, а затем переназначить некоторые из труднодоступных команд режима вставки в Alt (нажмите на него большим пальцем), а затем использовать сопоставления с вашим лидером?

let mapleader=","
nnoremap <leader>f <C-F>

Я всегда нажимаю левую клавишу Ctrl, свернув мизинец и нажимая первым пальцем. Я считаю, что это требует меньше движения рук.

Обновить

Не нахожу Shift неудобно, поэтому я не могу вам с этим помочь. тем не мение Ctrl действительно беспокоит меня, и даже с моей техникой кулака я предпочитаю избегать ее, где это возможно. Так что для режима вставки (и режима командной строки) я использую ведущий ;вместо Ctrl, Например

:map! ;w <C-W>
:map! ;a <C-A>
:map! ;r <C-R>
:ino  ;t <C-T>
:ino  ;d <C-D>

Вы поняли идею.

В обычном режиме я использую v а также V вместо Ctrl+F а такжеCtrl+B (Я использую только визуальный блочный режим), хотя я полагаю, что большинство людей предпочли бы отображать разные ключи, такие как <Space> а также - для подкачки (- не очень нужно). Вместо F вы можете искать вперед с f, а затем ударил ,,

Я никогда не видел особого смысла в Ctrl+D или же Ctrl+U, Однако я нахожу z., z<Enter>, а также z- полезно для прокрутки строки с курсором к середине, верхней и нижней части окна соответственно. H, M а также L также полезны для перемещения курсора по экрану. Но в целом я предпочитаю просто использовать / с 'incsearch ' для навигации.

Нет правильного или неправильного способа сделать это, это всего лишь мои личные предпочтения, но я надеюсь, что это даст вам одну или две идеи. Попробуйте поэкспериментировать и посмотрите, что работает для вас.

Я разработал модуль vim, чтобы сделать несколько простых переназначений именно для этой проблемы:

https://github.com/vim-scripts/vim.ergonomic

Самое большое, что он делает, - это упрощает наборы скобок. Это также значительно облегчает переход в командный режим (jj->ESC).

Он работает по принципу, что вы едва использовали клавишу J при редактировании, но он находится прямо в домашнем ряду... так что давайте злоупотребим этим!

из документации:

Remapping commonly used commands
  key combo     mapping         purpose
  ;             :               removes the need to hit Shift to use commands
  jj            <ESC>           can exit edit mode quickly and easily
  Jj            j               can type 'j' when you need to
  JJ            J               can type 'J' when you need to


Making it easier to insert various kinds of braces:
  key combo     mapping         purpose
  JU            ()<left>        easier to create parenthesis
  JI            []<left>        easier to create square brackets
  JM            {}<left>        eaiser to create curly braces
  J<            <><left>        easier to create carrot braces


Make it easier to move small distances (especially useful with braces commands):
  key combo     mapping         purpose
  JL            <left>          move left in insert mode
  JH            <right>         move right in insert mode


Removing any need for enter, backspace or delete:
  key combo     mapping         purpose
  JB            <esc>ldbi       delete the previous word
  JW            <esc>dwi        delete the next word
  JO            <esc>oi         insert line and go to it

Я бы предложил переназначить

  • Caps Lock влево управления
  • Левый контроль, чтобы убежать
  • Escape to Caps lock

, Если в Linux сначала можно сделать с помощью setxkbmap -option '...,ctrl:nocaps' или меняется XkbOptions в /etc/X11/xorg.conf, Второе требует использования xmodmap, После некоторого обновления X-сервера мне не удалось заставить работать третий, ранее использовавшийся xmodmap также.

Использование макета dvorak (возможно, даже программирования), оптимизированного для сенсорного набора текста и отображения ,s->()<Left> может также помочь.

Примечание: я тоже не доктор. Я - машинистка на ощупь, но в отличие от @Randy Morris, я никогда не страдала от боли в запястье, просто перемещала ключи в самые удобные места.

Легкое и легко обратимое предложение — поменять местами клавишу Caps Lock и клавишу Escape, используя эти псевдонимы в вашем файле .bashrc:

      # swap caps and escape
alias se='setxkbmap -option caps:swapescape'
# clear keyboard map settings - restore caps and escape
alias ce='setxkbmap -option'

Это позволяет вам проверить, нравится ли вам использовать замену ключей, и отменить ее, если нет.

Вы можете применить их в vim, например

      <esc>
:!se
Другие вопросы по тегам