Оттачиваем мастерство работы в консоли

http://kukun.in/mastering-your-terminal-hotkeys
  • Перевод
  • Tutorial
После того, как у меня появился новый монитор на рабочем месте, я начал новую итерацию улучшения своего «безмышечного» (mouse-less, прим. пер.) опыта. Вы же знаете, что это значит, не так ли? Это значит, что каждый раз, когда вы беретесь за мышку, убирая руку с клавиатуры, вы тратите немного времени и энергии. Если вам нужно набирать много текста (а я много пишу кода), это становится существенным.

Так же существует следующий уровень «безмышечного» опыта, когда вы стараетесь избежать труднодоступных клавиш, например Delete, Backspace, Escape или даже Enter.

Если вы держите руки в стандартной позиции для 10-пальцевой слепой печати, более удобно нажать Ctrl-m вместо того, чтобы тянуться мизинцем к энтеру.

image

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

Для начала, сравнительная таблица:
Название Типичная клавиша Удобная альтернатива
Начало строки Home Ctrl-a
Конец строки End Ctrl-e
Один символ вперед Right Arrow Ctrl-f
Один символ назад Left Arrow Ctrl-b
Удалить символ под курсором Delete Ctrl-d
Удалить символ перед курсором Backspace Ctrl-h
Предыдущая команда в истории Up Arrow Ctrl-p
Следующая команда в истории Down Arrow Ctrl-n
Ввод команды Enter Ctrl-j или Ctrl-m
Как бонус, вот еще список удобных сочетаний:
Название Сочетание клавиш
Вырезать предыдущее слово Ctrl-w
Вырезать все к концу строки Ctrl-k
Вырезать все к началу строки Ctrl-u
Вставить вырезанное ранее Ctrl-y
Откатить изменение Ctrl-_ (Ctrl+Shift+-)
Очистить экран Ctrl-l
Не забудьте попробовать эти сочетания в других приложениях. Я думаю, вы удивитесь, насколько широко они поддерживаются.

Почему это работает


Прежде всего, существует широко используемая библиотека readline. Попробуйте удалить ее из вашей системы, и вы узнаете, сколько приложений от нее зависят (ЭТО БЫЛА ПЛОХАЯ ШУТКА. НЕ ДЕЛАЙТЕ ЭТО). Из официальной домашней страницы:

Библиотека GNU Readline предоставляет набор функций, позволяющих пользователю редактировать вводимые команды прямо в месте ввода.

Это значит, что приложение может просто использовать эту библиотеку для пользовательского ввода, и она позаботится обо всех «плюшках». Из официальной документации вы можете узнать, что она поддерживает emacs и vi режимы, где первый идет по умолчанию. Vi режим более знаком виммерам, однако есть один существенный недостаток: нет индикатора текущего режима.

readline предоставляет большинство сочетаний, но не все. Среди них есть Ctrl-h, Ctrl-m, Ctrl-j. Но почему они работают? Я думаю, вам понравится ответ.

Помните ли вы таблицу ASCII символов? Там еще в начале таблицы есть 32 старых ненужных управляющих символов. И если вы посмотрите на сочетание Ctrl-m с помощью утилиты xev, то увидите

<code>KeyRelease event, serial 34, synthetic NO, window 0x1800001,
    root 0x103, subw 0x0, time 17907461, (780,924), root:(3342,946),
    state 0x4, keycode 58 (keysym 0x6d, m), same_screen YES,
"   XLookupString gives 1 bytes: (0d) "
    XFilterEvent returns: False
</code>

что XLookupString возвращает 0x0d байт для этого сочетания. А 0x0d байт это не что иное, как управляющий символ возврата каретки, так же известный как \r. Этот управляющий символ говорит терминалу принять вашу команду, работая так же, как и Enter. Так что, управляющие символы не такие уж и ненужные (ну, по крайней мере часть из них).

Другой интересный вопрос, как же система определяет связь между Ctrl-m сочетанием и символом возврата каретки. Ответ на это не менее интересный — Caret notation: метод записи управляющих символов с помощью печатных. Правило очень простое: просто инвентируйте седьмой бит в коде управляющего символа, и получите соответствующий печатный. С одной стороны, все просто; с другой, нельзя переназначить. Но не верьте мне, проверьте сами здесь.

На этом все. Я надеюсь, материал был полезный. Совершенствуйтесь!

P.S. Индикатор режима в readline все-таки присутствует, начиная с версии 6.3. Для этого нужно добавить set show-mode-in-prompt On в ~/.inputrc. Спасибо xaizek
P.S.S.Таблицу ascii кодов можно посмотреть командой man ascii. Опять же, спасибо xaizek
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 116
  • +34
    Переводить самого себя?! Спасибо за лайфхак для хабра!
    • +4
      Vi режим более знаком виммерам, однако есть один существенный недостаток: нет индикатора текущего режима.
      И при этом в документации по приведенной ссылке написано:
      show-mode-in-prompt
      If set to `on', add a character to the beginning of the prompt indicating the editing mode: emacs (`@'), vi command (`:'), or vi insertion (`+'). The default value is `off'.
      Это сравнительно недавнее добавление, начиная с readline 6.3 (эта версия вышла полтора года назад). И как-то все по привычке считают, что индикатора нет.

      Так что добавляете set show-mode-in-prompt On в ~/.inputrc
      и получаете...


      P.S. Коды символов удобно смотреть в man ascii.
      • 0
        Спасибо за дополнение. Допишу в статью.
      • +2
        А почему для «Вырезать предыдущее слово» и «Вставить вырезанное ранее» указана одна и та же комбинация «Ctrl-w»? Вырезание работает, а вставка — это видимо что-то еще.
      • +29
        Когда я был «маленький» я тоже много говнокодил и активно изучал mouse-less. Я смеялся над умными книгами, где говорилось, что в среднем программист пишет 10 строк кода в день. Ха-ха! же несколько тысяч мог накодить! Когда я стал «старым» и медлительным, я анализировал проекты своей молодости которые ушли в продакшн и, с учетом отладки, тестирования, исправления багов и пр. — картина не радужная. В итоге получается, конечно не 10 строк в день, но и завершенными проектами эти поделки назвать сложно. А чтобы их завершить нужно… взять и выкинуть все в мусорку. Сейчас, даже если у меня отнять руки, взяв карандаш в зубы и тыкая по клавиатуре один символ в минуту я сделаю это лучше и быстрее, потому как 99% времени у меня уходит на размышления, а не на клацанье по клаве.
        • +1
          Вы молодец
          • 0
            Вы правы, на размышления уходит времени достаточно, по крайней мере для того, чтобы несколько раз «сгонять» за мышью. Хотя существуют ситуации, когда думать приходиться гораздо быстрее и вот тут безмышиные навыки приходят на помощь. ИМХО: когда сильно устаешь (обычно на завершающем этапе) сил на переброс руки на мышь уже не хватает. Спасибо за материал, вещь нужная, себя нужно любить)
            • +3
              это как же надо устать, чтобы не хватало сил перебросить руку до мышки, но при этом хватало сил подумать над кодом который пишешь
            • +1
              Сейчас, даже если у меня отнять руки, взяв карандаш в зубы и тыкая по клавиатуре один символ в минуту я сделаю это лучше и быстрее

              Думаю ваши нервы сдадут после нескольких минут такого кодинга и вы вернетесь к классической схеме набора кода. Так же у меня они сдают, когда приходится пользоваться мышкой.
              • +2
                Никому не интересно, пишите вы 10 или тысячи строк кода, главное — быстро шипать. Шипать, пока продукт еще нужен рынку. Пока вы философствуете о лучших практиках и рассуждаете как нужно делать, ваши конкуренты уже что-то тестируют и понимают более важные проблемы продукта, чем проблемы кода.

                Идеально — найти баланс между качеством кода и скоростью шипинга.

                Я уверен, что сейчас этот комментарий наберет -(рейтинг вашего комментария), но это сказать было нужно. Но может быть это все еще мой максимализм.
                • +1
                  Идеально — найти баланс между качеством кода и скоростью шипинга.
                  Мне кажестся, что противополстовлние скрости разработки и качества — миф.

                  Я видел и ужасный код, написанный после долгих философских рассуждений, и погоню за скоростью, в которой развитие кода топчется на месте из-за поразительного количества копипаста, и тысячи велосипедов, возникающих из-за того, что люди начинают думать о шипинге вместо изучения существующих решений в области. В то же время хороший код зачастую оказывается вполне лаконичным.
                  • 0
                    Минусов, я думаю, вы не нахватаете, потому что во многом вы правы. Но баланс между скоростью (много бесполезного не поддерживаемого кода) и качеством (меньше кода, легко разобраться и поддерживать) вы найдете только с опытом. Бесполезно прочитав «умную» книжку тратить уйму времени над обмыванием «идеальной» архитектуры. Все ваши измышления уйдут в топку, как только вы столкнетесь с реальностью. Анализируйте ваши предыдущие проекты, делайте выводы, оптимизируйте процесс разработки. Ну а тренинги по оптимизации клацания по клаве вещь во многом полезная, но реального профита для разработки не дает, разве что произвести впечатление на коллег или начальника.
                  • +3
                    Оно конечно звучит красиво. Но вы проведите эксперимент. Возьмите карандаш в зубы и попробуйте написать Hello World на любимом языке программирования. Эксперименты вещь полезная. Они обладают отрезвляющим эффектом.
                    • 0
                      Вообще-то пост не о этом. Но ради эксперимента попробовал — 5 минут на С++. Безумно много, согласен. Но это 100 строк за рабочий день. Разуметься тыкать карандашом по клаве по 8 часов подряд у меня не получиться, но если случиться несчастье — то именно эта та практика, которую имеет смысл практиковать. И слепые умудряются кодить
                      • +1
                        Пост не о том, а вот ваш комментарий именно о том :).

                        Клавиатурой программист не только набирает код, но и занимается навигацией по нему. И вообще делает много всего. Что касается возможных несчастий — я читал посты людей, встретившихся с RSI, варианты решения у тех, кто не покинул профессию — голосовой набор или медленная печать двумя руками с обширным использованием хоткеев и IDE. Хоть вообще о таком страшно даже думать :(.

                        Слепым без клавиатуры вообще никак. По очевидным причинам.

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

                        • 0
                          Так я и не говорю что это не нужно. Я всего лишь обозначил то, что навыки владения клавиатурой вообще никак не коррелируют с качеством и скоростью разработки. Просто зацепило "(а я много пишу кода)"
                          • 0
                            А я и ничего про качество кода и не говорил. Если вы мало набираете текста, тогда и задумываться над оптимизацией своей работы с устройствами ввода не нужно. Если же вы журналист, писатель, или же программист (а я просто обозначил, что я программист), тогда mouseless начинает иметь смысл.
                            • 0
                              Я думаю, что исследования эту корреляцию легко выявят. Также я думаю, что лично вы, по уровню навыка владения клавиатурой, окажетесь в верхних двадцати процентах.

                              Это как с каратистами, боксёрами или самбистами — они все будут утверждать, что сила не главное и со спортивным успехом не коррелирует. Только вот шансы победить в армрестлинге каратиста или боксёра очень невелики, а с самбистом их и вовсе нет.
                      • –1
                        Я как-то со временем осознал, что многие операции мышкой дейтсивтельно быстрее и удобнее. Ну например, многократно повторяющаяся работа с текстом (переместить курсор — выделить — копировать — сменить окно — переместить курсор — вставить). Хотя по привычке уже чаще бегаю по массивам текста клавиатурой, и это зачастую действительно тормозит.
                      • +2
                        Вот бы кто еще объяснил, почему в различных screen-tmux-mosh все время слетают различные комбинации (типа Shift-F5) или даже просто управляющие клавиши (F5, PgUp и т.д.), например, в midnight commander. Почему все эти tmux-screen-mosh вообще что-то делают с кодами приходящих клавиш вместо того, чтобы просто отправлять их дальше.
                        • 0
                          они их перехватывают и отправляют тому же миднайт коммандеру.
                          а вообще, я за долгие годы борьбы с поломаным терминалом научился печатать вслепую:
                          setterm -reset
                          stty sane

                          :)
                          • 0
                            А я запускаю
                            term_reset () {
                                emulate -L zsh
                                [[ -n $TTY && -n $terminfo ]] && {
                                    echoti rmacs
                                    echoti sgr0
                                    echoti cnorm
                                    echo -n $'\e[?47l'
                                }
                            }
                            перед каждым показом приглашения ко вводу.
                            • 0
                              мне кажется что это оверкилл :)
                              что, если мне нужен какой-либо другой режим?
                              хотя те же github-prompt делают намного больше операций на каждый чих.
                              • 0
                                Какой режим? Здесь делаются пять вещей:
                                1. Графический режим переключается в нормальный (графический — это когда вместо многих ASCII символов печатается всякая ересь вроде частей таблиц).
                                2. Убирается цвет (вообще‐то абсолютно ненужная мне часть: powerline делает то же самое).
                                3. Включается отображение курсора.
                                4. (После echoti cnorm должно было идти ещё и echoti smkx, это я просто не сделал source ~/.zshrc в оболочке, из которой брал term_reset.) Переключается в режим «keyboard transmit».
                                5. Отключается alternate screen.
                                Я не могу представить себе ситуацию, когда мне
                                1. нужно использовать графический режим (в этом режиме невозможно нормально печатать),
                                2. оставлять цвет (да и не влияет отсутствие этой строки ни на что),
                                3. отключать курсор (а здесь нельзя нормально редактировать напечатанное),
                                4. использовать разное состояние keyboard transmit (приведёт к тому, что некоторые приложения станут работать некорректно: смотрите github.com/fish-shell/fish-shell/issues/2139 и ссылки внутри) или
                                5. смотреть оболочку в alternate screen (здесь не виден scrollback, либо scrollback виден только от основного экрана).


                                Эти строки были собраны в результате просмотра последствий вывода бинарных файлов на терминал и крэшей [Neo]Vim.
                                • 0
                                  Имеете полное право, ваш компьютер, ваши процессы :)
                                  я бы лично так не делал, но это мои заботы.
                                  • 0
                                    Так я спрашиваю потому, что не вижу никаких причин использовать что‐либо из отключаемого таким образом функционала. Но возможно, я что‐то пропускаю из‐за такого отношения.

                                    Если что, данный код, будучи запускаемым только перед command prompt никак не мешает другим приложениям явно пользоваться графическим режимом (хотя я таких приложений не видел вообще), цветами, отключением курсора, другим режимом keyboard transmit или alternate screen. Только интерактивный zsh не сможет использовать ничего из списка.
                                    • 0
                                      я не спорю, честно :)
                                      я редко сейчас работаю в линукс консоли, в основном в графическом терминале, под разными системами и оболочками.
                                      У каждого свои задачи и, возможно, этот подход решает ваши.
                                      я давно уже не имел проблем с потеряным вводом в консоль, поэтому для меня данный подход это оверкилл.
                                      • 0
                                        Здесь проблема не с потерянным вводом — с ним‐то как раз ничего плохого не происходило, — а с тем, что после того, как вы случайно написали cat /some/binary, или у вас свалился Vim во время тестирования, пользоваться терминалом становится неудобно. Раньше такое решалось тем, что я вслепую набирал echo $'\ec'. Но это, насколько я помню, для чего‐то не работало (кажется, не переключало keyboard transmit режим, из‐за чего некоторые приложения переставали адекватно воспринимать стрелочки), да и, в отличие от term_reset, \ec очищает экран.

                                        Кстати, stty sane моя функция никак не заменяет. Но это и не нужно: у zsh есть ttyctl -f (-f[reeze]), замораживающая (некоторые) настройки терминала. Вот этот эффект мне иногда приходится отменять.
                        • +14
                          Не убираю руки с клавиатуры, потому что под ней маковский тачпад. Это намного эффективнее заучивания сотен шорткатов, правда требует отсутствия предрассудков. Ещё не должно быть желания изо дня в день превращать себя в робота, которому, видите-ли, по каким-то причинам труднодоступны Delete, Backspace, Escape или даже Enter.
                          • 0
                            Кстати, интересная идея использовать тачпад, не убирая рук с позиции. Только как быть с мультитачем? Используете два больших пальца для скрола?
                            • +3
                              не знаю как на маковских, но на Thinkpad-клавах есть средняя кнопка для этого
                              • +1
                                И есть трекпоинт с которым вообще ничего не надо никуда двигать, а только слегка сместить палец.
                                • 0
                                  супер удобное решение. Жаль, что они не так распространены, и даже внешнюю клавиатуру с трекпоинтом и купить
                                • 0
                                  Да.

                                  Правда сама маковская клавиатура не блещет, например на ней нет Insert, Delete, (комбинации с Fn) PrintScreen и т.п.
                                  тачпад да — удобный, только на маке я перестал хотеть взять мышку, потому что тачпад реально удобнее.

                                  Потом через несколько лет, при постепенном плановом уходе от маковской техники (как оказалась у неё есть очень неудобные минусы) с удивлением обнаружил что почти такой же по удобству тачпад есть на недорогом Dell Inspiron, который еще и под ubuntu хорошо работает.
                                  • +3
                                    Самое грустное, что там нет PageUp / PageDown. Остальное всё можно пережить.
                                    • 0
                                      Fn+arrows, try it.
                                      • 0
                                        Это, конечно, так. Можно и просто пробел нажимать, чтобы вниз листать. И тачпад изумительный близко. Но мне всё-равно хочется отдельные кнопки для этого. Fn от курсорных клавиш ну очень уж далеко расположена, я люблю хоткеи, которые одной рукой доступны.
                                  • 0
                                    Нет, кистью (одной из) нужно двигать, скролл обычным способом. Просто не обязательно держать руки в одном положении, не отрывая от основных клавиш, это искусственное ограничение.
                                    • 0
                                      Просто не обязательно держать руки в одном положении, не отрывая от основных клавиш, это искусственное ограничение

                                      Какой же это слепой, десятипальцевый метод тогда?
                                      • –1
                                        Это же движение кистью делается, как перевели пальцы на тачпад, так и перевели обратно. Рука не отрывается от поверхности. Я люблю отрывать, но это уже дело привычки, потому что я печатаю как бог, а не как слепой.
                                        • 0
                                          Рука не отрывается от поверхности

                                          В слепом, десятипальцевом методе рука должна не отрываться от sdfjkl, а не от поверхности.
                                  • +1
                                    Это намного эффективнее заучивания сотен шорткатов

                                    Не соглашусь с вами. Можем провести эксперимент. Уверен, у меня набор текста, работа с git, дебагинг и тестирование намного быстрее вашего будет ;)
                                    • 0
                                      vimeo.com/135206509 Теперь ваш черёд.
                                      • +2
                                        К сожалению часовая запись может уложить мой ASUS, потому предлагаю коротенькое видео.
                                        Видео

                                  • 0
                                    Спасибо за собранную в кучу таблицу, удобно.
                                    Хочу дополнить список полезных сочетаний в shell(bash) перемещение по истории команд:
                                    ctrl+r — поиск по командам (вдруг кто не знает)
                                    Alt+> — самая последняя команда в списке истории
                                    Alt+< — самая первая команда.
                                    Если история команд используется очень активно, то Alt+> порой проста необходима.
                                    • +1
                                      Интересный вопрос: если «проскочил» нужную команду в ctrl+r, как вернуться на одну команду назад?
                                      • 0
                                        У меня — <C-n>/<C-p>. Но это ZLE с bindkey -M isearch "\C-n" "history-incremental-pattern-search-forward". Исходя из man readline, я думаю, что <C-s> должен работать (найдите в man C-r и посмотрите соседей). Только <C-s> — это tty stop по‐умолчанию, и перед использованием придётся что‐то переназначить — либо через stty, либо в настройках терминала.
                                        • 0
                                          можно в .bashrc в последней строке написать stty stop undef
                                      • 0
                                        тогда и Ctrl+g — отмена reverse поиска (выход без выбора)
                                      • +18
                                        Я с этим Ctrl+w регулярно закрываю вкладки, когда хочу слово стереть
                                        • +2
                                          Не совсем ясно что значит
                                          Ctrl-_

                                          На сколько я понял это
                                          Ctrl+Shift+-

                                          ?
                                        • +2
                                          Стоит еще добавить комбинации 'ALT+.' или 'ESC + .' — перебирают аргументы предыдущих команд.
                                          • 0
                                            Дополню. Если вам приходится работать в консоли Windows и вы хотите пользоваться этими сочетаниями (и другими плюшками), установите себе Clink.
                                            • +2
                                              «Безмышиный» здесь больше подходит, потому что «Безмышечный» — это когда отсутствуют или не задействованы мышцы. При наборе текста они все равно используются
                                              • 0
                                                Полностью согласен, я думаю нужно просто в скобках добовлять mouse-less
                                              • 0
                                                Спасибо за статью.
                                                На счет «Начало строки: Ctrl-a»
                                                Может кто-нибудь знает как это исправить в терминале screen?
                                                • 0
                                                  Ctrl+a, потом «a» (маленькая, не «А»)
                                                  • 0
                                                    Да, спасибо.
                                                    Работает.
                                                  • +1
                                                    Я для себя эту проблему решил перебиндив кнопки в screen, а именно:
                                                    escape ^pp # suggested binding for emacs users
                                                    После небольшого привыкания так даже удобнее и не перекрывает кнопки в vim.
                                                    • 0
                                                      Я использую ,i (к началу строки)/,a (к концу строки), в том числе в readline. В Vim <C-e> — довольно полезное сочетание, <C-a> забито screen’ом/tmux (с биндингами от screen, а так у него <C-b>).

                                                      Если быть точнее, то ,i — к первому непробельному символу. С readline — к первому символу, т.к. я не знаю, как сделать «к первому непробельному символу» с readline.
                                                  • 0
                                                    Еще один лайфхак помогающий использовать все выше перечисленное: в настройках клавиатуры сделайте байндинг CAPS LOCK -> CTRL, лично мне очень помогает (особенно хорошо чувствуется в screen где много шорткатов начинающихся с ctrl-a, capslock-a нажимать гораздо удобнее чем ctrl-a).
                                                    • +1
                                                      У многих Caps Lock уже занят под переключение раскладки; к тому же, на некоторых клавиатурах это stateful-клавиша.
                                                    • +4
                                                      Если вы держите руки в стандартной позиции для 10-пальцевой слепой печати, более удобно нажать Ctrl-m вместо того, чтобы тянуться мизинцем к энтеру.

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

                                                      (это, конечно, если смотреть на то положение, которое у вас на КДПВ)
                                                      • +2
                                                        Возможно у автора есть педаль ctrl, кастомная клавиатура или что вероятней капс лок переделан в ctrl.
                                                        • 0
                                                          Caps Lock-m — координация двух рук. Тоже сложнее, чем кажется.
                                                          • +2
                                                            Проще, чем вы думаете :).
                                                            • 0
                                                              Но сложнее, чем нажать одну клавишу.
                                                              • +1
                                                                Нет, проще. Я ниже расписал подробно, почему.
                                                                • 0
                                                                  Там как-то обойден тот замечательный момент, что движение двух пальцев сложнее координировать, чем одного.
                                                                  • 0
                                                                    Координнация двух пальцев на разных руках — такая вещь, которую умеют все, кто учился слепой печати. И большинство из тех, кто много занимается набором текста.

                                                                    А вот необходимость постоянно гнуть запястный сустав чтобы переместить мизинец на две клавиши вправо — верный путь к RSI.
                                                                    • 0
                                                                      Координнация двух пальцев на разных руках — такая вещь, которую умеют все, кто учился слепой печати. И большинство из тех, кто много занимается набором текста.

                                                                      Умение координировать не означает, что координировать легче, чем не координировать.

                                                                      А вот необходимость постоянно гнуть запястный сустав чтобы переместить мизинец на две клавиши вправо — верный путь к RSI.

                                                                      Эээ, а зачем для этого запястный сустав гнуть? Просто мизинец вытянуть мало?
                                                                      • 0
                                                                        Умение координировать стирает для человека разницу между скоординированым и не координированым движением.
                                                                        Эээ, а зачем для этого запястный сустав гнуть? Просто мизинец вытянуть мало?

                                                                        Пальцы правой руки лежат на JKL;. Указательный на J, мизинец на;. То есть для нажатия Enter надо подвинуть мизинец на одну клавишу вправо. Если клавиши стандартного размера, то для того, чтобы сделать это, не задействовав запястный сустав, нужно сильно напрячь мизинец, что в общем достаточно болезненно и уж точно гораздо медленне, чем Control+m. Это, кстати, на моей клавиатуре. На клавиатуре, изображённой на рисунке в топике, между мизинцем и Enter вообще две клавиши.
                                                                        • 0
                                                                          Умение координировать стирает для человека разницу между скоординированым и не координированым движением.

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

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

                                                                          Странно, а мне — не нужно (и совершенно не болезненно).
                                                                          • 0
                                                                            Не знаю, что у вас за пальцы и клавиатура, но для нажатия на <C-> (который на CapsLock) мне можно запястье не двигать. А для нажатия на <Enter> (который через клавишу: Steel Series 6GV2) нужно. Если не двигать, то будет напряжней и дольше.
                                                                            • 0
                                                                              Вы говорите, что разница между скоординированым и одиночным движением не стирается с опытом, потому, что скорость одиночных движений растёт и кроме того делать их с каждым разом всё легче. Соответственно, хотя качество скоординированых нажатий тоже растёт, разница между скоординированным и одиночным движеним остаётся постоянной.

                                                                              Предположим, что начинающий программист жмёт одну клавишу 10 секунд. Нажать две клавиши — те же 10 секунд, плюс минута на то, чтобы скоординировать движение. В процессе обучения время нажатия клавиши уменьшится до половины секунды, то есть в 20 раз. Предположим, что время, необходимое для координации тоже уменьшится в 20 раз и станет равно трём секундам.

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

                                                                              А вот время координации продолжит падать, пока, в конце концов, не сократится настолько, что человек перестанет его замечать. И тут разница между одиночным и координированным нажатием исчезнет.
                                                                              • 0
                                                                                А вот время координации продолжит падать, пока, в конце концов, не сократится настолько, что человек перестанет его замечать.

                                                                                Откуда у вас такая уверенность?
                                                                                • 0
                                                                                  Время нажатия клавиши ограничено скоростью распространения нервных импульсов и физическими свойствами мышц.

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

                                                                                  По моему, начиная с одной пятой секунды разница уже не ощущается.
                                                                                  • 0
                                                                                    Синхронизация происходит в голове, соответственно мышцы тут не участвуют, а расстояние которое проходят сигналы — существенно меньше. Поэтому минимальное время, за которое можно скоординироваться перед нажатием будет существенно меньше времени самого нажатия.

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

                                                                                    По моему, начиная с одной пятой секунды разница уже не ощущается.

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

                                                                                        (смешное развлечение: положите обе руки на стол, так, чтобы все пальцы кончиками касались столешницы. Теперь поочередно постучите одновременно одноименными пальцами каждой руки: сначала обоими большими, затем обоими средними, и так до мизинца. «Постучите» — это несколько раз подряд одним и тем же пальцем. Остальные пальцы в это время должны оставаться на столешнице (или хотя бы не стучать по ней). Сравните степень «одновременности» для разных пальцев. Найдите ту скорость, с которой вы можете стучать пальцами разных рук гарантированно одновременно. Сравните ее со скоростью, с которой вы можете стучать одним (тем же) пальцем на одной руке. Если не надоело — сравните со скоростью одновременного движения двух пальцев на одной руке.)
                                                                              • 0
                                                                                А что за клавиатура, если не секрет?
                                                                                  • 0
                                                                                    Вот это номер! У меня точно такая же! Жать Enter мизинцем, не задействуя запястье реально тяжело и по субъективным ощущениям ведёт к травме.
                                                                                    • 0
                                                                                      Ну, вы не забывайте, что у людей отличаются не только клавиатуры, но и руки — включая их тренированность.
                                                                                      • 0
                                                                                        Ну я помню, да. Но подозреваю, что людей с такими руками, как у меня — подавляющее большинство.
                                                                              • 0
                                                                                Кстати, еще один нюанс. Дело в том, что я набираю вслепую с альтернативным положением пальцев. И получается, у меня три клавиши между мизинцем и энтером, и только одна между мизинцем и капс локом.
                                                              • +1
                                                                Если CapsLock перемаплен на Control, то Сontrol+m раза в 2 быстрее. И раз в 10 приятнее.
                                                                • 0
                                                                  То есть сработает уже не на любой клавиатуре. Приятно, да.
                                                                  • 0
                                                                    На любой клавиатуре, на которой есть CapsLock :). Там хабра съел часть. На всякий случай продублирую сюда правленый вариант.

                                                                    Если CapsLock переделан в Control, то <C-j> быстрее потому, что CapsLock стоит слева от клавиши a, на которой лежит мизинец. А Enter находится через клавишу вправо от ;, на которой лежит мизинец правой руки.
                                                                    • 0
                                                                      Я боюсь, что на моей клавиатуре вы получите просто 'M' вместо перевода строки.
                                                                      • 0
                                                                        Я правил сообщение выше, оказалось, что правил не то, которое надо было править, но теперь уже ничего изменить не могу. Прошу прощения.

                                                                        Насчёт вашей клавиатуры — уверен, что если её воткнуть в мой компьютер — будет работать прекрасно :).
                                                                        • 0
                                                                          Мне кажется, вы прекрасно понимаете, о каком сценарии я говорю. Мне вот часто приходится сидеть за чужими компьютерами, и даже различия в переключении раскладки клавиатуры раздражают, хотя это редко нужно. А уж Caps вместо Ctrl — ненене.
                                                                          • 0
                                                                            Если речь идёт о работе на чужом компьютере, то о собственном комфорте естественным образом приходится забыть, это правда.

                                                                            Я был уверен, что мы обсуждаем работу на своей машине. На мой взгляд, собственное рабочее место, как и свои привычки, нужно максимально кастомизировать под свои нужды. Когда я осознал, что переключение окон по Alt+Tab требует запоминать в каком окне ты был до текущего, я отказался от этой порочной практики и повесил используемые прораммы на хоткеи. Когда я понял, сколько раз в минуту!!!! перевожу взгляд с монитора на клавиатуру и обратно, я стёр с клавиш буквы и научился печатать не глядя. Когда прикинул, сколько раз в день жму Control — сделал дополнительный Control на CapsLock.

                                                                            Если окажется, что можно сделать работу ещё комфортнее, пусть ценой большего дискомфорта при временной пересадке за другой компьютер — я сделаю это не задумываясь. Ибо за своим я провожу больше половины своей же жизни.
                                                                            • 0
                                                                              На мой взгляд, собственное рабочее место, как и свои привычки, нужно максимально кастомизировать под свои нужды.

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

                                                                              PS У меня вот три «своих» компьютера, и я несколько утомился поддерживать в синхронизации даже тот минимум настроек, который я использую.
                                                                              • +1
                                                                                Ну тот факт, что чем больше ты кастомизируешь, тем больше проблем на других компьютерах — неоспорим. Разногласия возникают, по поводу того, стоит ли удобство у себя дискомфорта в других местах.

                                                                                Синхронизацию настроек приходится возлагать на средства автоматизации — решение не для всех.

                                                                                Короче это отдельная, тоже очень интересная дискуссия, но, видимо, не совсем по теме данного топика.
                                                              • +2
                                                                Странно говорить, что Ctrl дальше чем Enter, да и тянуться за ним мизинцем до него тоже так себе удовольствие.
                                                                • +8
                                                                  Я почитаю на хабре кучу полезных советов.
                                                                  Проходит время. И чик, все забыл.

                                                                  Решил с этим бороться.
                                                                  Засунул вывод в терминале при старте:

                                                                  Может пригодится кому-нибудь.
                                                                  Perl Скрипт, который формирует это хозяйство здесь.
                                                                  Текстовый вывод для /etc/motd здесь.
                                                                  • 0
                                                                    А зачем здесь <C-j>? Нажимать просто <Enter> вроде быстрее.
                                                                    • 0
                                                                      Ну это я со статьи взял, просто за основу.
                                                                      Для себя я там кое-что удалил, кое-что наоборот добавил.
                                                                      В том числе удалил и C-j.
                                                                      Я еще не дошел до такого скила, чтобы юзать C-j, вместо Enter ))
                                                                      • –2
                                                                        Чем больше зазубрено шорткатов, тем круче скилл, несомненно.
                                                                        А если забылось, то только потому, что мозг падла, а не потому, что знания по своей сути абсолютно бесполезные и не пригождаются на практике. *irony*
                                                                      • +2
                                                                        Если CapsLock переделан в Control, то <C-j> быстрее потому, что CapsLock стоит слева от клавиши , на которой лежит мизинец. А находится через клавишу вправо <;>, на которой лежит мизинец правой руки.
                                                                        • 0
                                                                          Я как‐то не замечаю разницы; наверное, с непривычки: хотя я вижу, что мне нужно перемещать кисть для <Enter> и <BS>, нажимаются они привычно быстро. А вот конкретно <C-j> в Vim иногда забирают под что‐то вроде умного автодополнения, потому что это довольно удобный <C-Space> (точнее, это <C-Space>, потому что Vim никогда нормально не переваривает нулевой байт, в том числе и здесь; в gvim такой проблемы нет). Ну и в dvorak особой разницы между <C-j> и <C-m> нет: что j, что m на нижнем ряду под указательным пальцем, только j ещё и на той же руке, что и переделанный CapsLock.

                                                                          Кисть перемещается в любом случае, только с <Enter> она перемещается дальше.

                                                                          PS: Я использую <code> вокруг сочетаний клавиш не потому, что мне нечем заняться, а потому что хабраредактор может выреза́ть всякие вещи, похожие на HTML тёг. В вашем сообщении явно что‐то пропущено.
                                                                    • 0
                                                                      Мне для удобной работы в консоли (кроме перечисленного) очень помог переход на dvorak-programmer. В основном это всякие вещи спецсимволы типа ;,.:<>'"/?@^-_\|, особенно минус, который часто используется в параметрах команд и теперь находится практически под мизинцем, и до которого теперь не надо тянуться. Ну и просто на английском печатать стало заметно проще.
                                                                      • 0
                                                                        Давно хотел попробовать. Скажите, а проблем с хоткеями нету? В часности в vim? Ведь они по сути рассчитаны на обычный qwerty.
                                                                        • +1
                                                                          За исключением hjkl никакого QWERTY тут нет и в помине. Остальное мнемоники вроде d[elete] или t[o]/f[ind]. Я нормально пользуюсь programming dvorak и иногда hjkl (чаще jk, hl намного реже). Просто помните, что в большинстве случаев быстрее использовать не hjkl.

                                                                          В остальных приложениях обычно тоже сочетания привязаны к мнемоникам, связанным со значением сочетания, а не к положению клавиши на клавиатуре.
                                                                          • 0
                                                                            Первое время, конечно же, есть. А потом все выучивается, я в емаксе работаю (и во многих других программах), тут хоткеи что в кверти не супер удобны, что в двораке, не сильно поменялись. Есть еще путь переназначения всего на привычные положения, но я не рискнул по нему идти)
                                                                        • 0
                                                                          Ctrl + M на Mac-клавиатуре набирать определённо неудобнее, чем нажать Enter. А за статью спасибо.
                                                                          • 0
                                                                            Некоторые советы не работают…

                                                                            По поводу «Вместо того, чтобы тянуться мизинцем к enter-у»…
                                                                            Я вот не тянусь, у меня удобная клавиатура, и мизинец буквально висит над энтером, и я точно не промахнусь мимо Enter-а, а вот вместо ctrl-m вполне можно Ctrl-< нажать.

                                                                            и Ctrl-w у меня уже стойкая ассоциация с закрытием вкладки/окна.

                                                                            • 0
                                                                              Прелесть маленьких клавиатур тут демонстрируется на ура…
                                                                              • 0
                                                                                Тут через почту человек попросил передать:
                                                                                Есть маленький нюанс — далеко не во всех nix системах это поведение работает:)
                                                                                Только что было проверено в AIX/HP-UX — половина не работает.
                                                                                Выше уже отписывались о неработающих командах. Доступный набор команд в основном зависит от используемой оболочки, но могут быть и другие факторы (например, версия, конфигурация, способ взаимодействия с оболочкой, выставленный тип терминала). Стоит иметь это в виду и консультироваться со справкой в случае сомнений.
                                                                                • 0
                                                                                  В консоли аналог xev — showkeys
                                                                                  работает почти так же
                                                                                  • 0
                                                                                    Почему никто не отметил, что Ctrl-D завершает сессию?
                                                                                    • 0
                                                                                      В консоли cisco эти команды также работают, очень удобно. про сокращения из бонус таблицы не знал, спасибо.

                                                                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.