Подтвердить что ты не робот

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

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

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

Standard Keyboard

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

  • Ctrl to Shift
  • Shift to Caps Lock
  • Caps Lock до Ctrl

Этот помогает с общими командами, такими как Ctrl f или Shift 2 (@), но мне все равно придется крутить запястье, чтобы получить эти комбинации. Нужно ли переназначить ключи, чтобы избежать этого скручивания на левом запястье (возможно, используйте клавишу Tab)? Мне просто кажется странным, что для текстового редактора, разработанного специально для программистов, он будет сильно использовать эти ключи. Я рассмотрел переназначение старой раскладки клавиатуры (см. Ниже изображение), но я не хочу узнавать, что если у него будут те же фундаментальные проблемы, что и текущее переназначение.

old keyboard layout

4b9b3361

Ответ 1

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


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

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

Хотя это, вероятно, улучшит вашу ситуацию, вам действительно стоит подумать о том, чтобы увидеть врача и/или приобрести более эргономичную клавиатуру, если ваша боль сохраняется. Я владею более старой версией Kinesis Advantage, которую я взял на Ebay за около $100 (USD), и я не мог быть счастливее. Клавиши могут быть запрограммированы непосредственно на клавиатуре, поэтому никакое программное обеспечение не требуется для замены клавиш или создания собственных макросов клавиатуры для часто используемых штрихов.


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

Ответ 2

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

Это также делает работу ctrl [ в vim.

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

Я отобразил как 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.

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

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

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

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

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

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

Ответ 5

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

Важное примечание для пользователей 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>

Ответ 6

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

  • Caps lock to left Control
  • Левый элемент управления для выхода
  • Блокировка Escape to Caps

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

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

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

Ответ 7

Я всегда нажимаю клавишу левого 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', установленным для навигатор примерно.

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

Ответ 8

Я разработал модуль 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