Компания
28,76
рейтинг
24 ноября 2014 в 11:02

Разработка → Как повысить скорость общения и продуктивность: Внедрение в мессенджер идеологии Vim

image

Горячие клавиши (или shortcuts) позволяют ускорить работу с любым продуктом — можно вспомнить известную всем комбинацию клавиш Ctrl+C/Ctrl+V, используемую для копирования и вставки. Приложения для общения не являются исключением — например, в Gmail присутствуют десятки шорткатов. Проблема с этими клавиатурными сокращениями заключается в том, что многие из них могут не работать на различных устройствах или операционных системах.

Для того, чтобы избежать таких проблем, разработчикам приходится прибегать к нестандартным решениям. Сегодня мы расскажем о том, как внедряли в сервис Kato клавиатурные сокращения, соответствующие идеологии Unix-редактора Vim.

Зачем нужны горячие клавиши


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

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

Исследователи использовали для грубого подсчета впустую потраченного времени следующую формулу:

image

Таким образом продуктивность каждого сотрудника может быть увеличена на 3,3%, что в рамках компании довольно много. Реальный результат, конечно, будет ниже, поскольку никто не пользуется мышкой непрерывно 480 минут в день, однако тот факт, что горячие клавиши помогают добиться значительной экономии времени, неоспорим. К тому же использование хоткеев просто гораздо веселее и может скрасить даже выполнее довольно скучной работы.

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

При этом разные операционные системы по-разному обрабатывают нажатие горячих клавиш, вследствие чего некоторые шорткаты, объявленные для определенной платформы, могут не работать у пользователей других платформ…

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

Редактор Vim спешит на помощь


Знакомый любому пользователю операционных систем семейства Unix текстовый редактор Vim, обладает двумя режимами работы — в командном режиме осуществляются различные именованные действия (перемещение по тексту, удаление символов и т.п.), а в режиме вставки осуществляется экранное редактирование текста.

image

Преимущества переключения между режимами состоит в том, что пользователю не приходится зажимать клавиши вроде command, shift или alt и тянуться пальцами к другим кнопкам на клавиатуре.

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

Как это работает


Очевидно, что командный режим «как в Vim» нужен только достаточно продвинутым пользователям. Поэтому по-умолчанию он выключен и активируется в настройках за несколько кликов.

После включения командного режима (клавиша Esc) сразу вводить текст уже нельзя — нажатие на некоторые клавиши будет интерпретировано сервисом, как команда. Переключиться в режим ввода и редактирования текста можно, нажав клавишу i.

Вдохновившись идеологией Vim, мы постарались максимально использовать имеющиеся там клавиатурные сокращения (полный их список доступен на сайте).

image

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

Внедрение подхода Unix-редактора оказалось нестандартным ходом, который полностью оправдал себя — пользователи Kato благодарят за его реализацию.

На сегодня все. В следующем материале мы расскажем о том, как внедряли в Kato режим разметки, позволяющий создавать сообщения, оформленные почти как настоящий документ.
Автор: @KatoProject
Kato.im
рейтинг 28,76

Комментарии (30)

  • +8
    текстовый редактор Vim, обладает двумя режимами работы

    На самом деле примерно восемью :)
    • +3
      Функция mode() в VimScript различает 18 режимов.
      • +3
        Там всё-таки избыточные режимы есть, вроде того же operator-pending, который суть normal посреди команды.
        Опять же, можно спорить, имеет ли смысл объединять visual, line-visual, block-visual в один режим или нет. Поэтому и «примерно 8» :)
    • +17
      По легенде вроде двумя:
      1 — бибикать
      2 — все ломать
      :)
      • +1
        Спасает только :q! )))
      • +3
        Существует два основных режима работы в редакторе. В первом он пищит, а во втором — всё портит. Для продвинутых пользователей имеется нулевой режим, который был единственным в полумифическом предшественнике vi, который, по легенде, назывался v. В нулевом режиме редактор управляется смайликами. Попробуйте, например, ввести команду :%s).):)g

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

        И это уже четыре!
  • +3
    Если вы внедрите Kato в Vim (плагин для Vim), а не наоборот, я стану вашим активным пользователем. Сейчас активно пользую vimchat.
    • 0
      Хм, попробовал vimchat, пришлось патчить python-xmpp, который иначе не заводился, плюс ростер выглядит примерно вот так:
      image
      Как Вы им пользуетесь?
      • 0
        У меня завилось все без патча (ставил python-xmpp из репы). Что касается кодировки приведенного вами окна, то в самом плагине используется UTF-16 (строка 1043 файла plugin/vimchat.vim). Я задал себе UTF-8 и узнал, что это самое окно не нужно там совершенно, после вернул плагин в исходное состояние и забыл об этой проблеме.
  • –2
    Всегда интересовало, зачем писать огромное количество уравнений и огромные паттерн матчинги с хвостовой рекурсией если есть fold который сделает все что нужно, да и поддерживать такой код гораздо проще.
    Ps. Это я про вашу функцию compile если что.
  • +6
    Обожаю статистику :-) А ребята из Brainscape не посчитали, сколько в среднем сотрудник тратит на вспоминание одной из сотни горячих клавиш?
    • 0
      Эти подсчеты в значительной степени условны, о чем мы и говорим. Однако они хороши для постановки проблемы, которая есть — с хоткеями работать получается быстрее, а те, кто этого не делают, тратят какое-то количество времени впустую.
    • 0
      Когда пользуете одними и теми же горячими клавишами несколько дней подряд, это время стремится к нулю. Я пользую Vim так долго, что иногда выполняю несколько действий, а после задумываюсь — как я это сделал?
      • +3
        А в следующие несколько дней подряд пользуешься другими, а первые забываешь. На вспоминание редкоиспользуемого хоткея тратишь куда больше времени, чем на клик мышью.
        • 0
          Представляете сколько горячих клавишь в Vim? А у меня там еще десятки плагинов со своими клавишами и я ничего не забываю. Человеческая память — удивительная штука, вы зря в ней сомневаетесь.

          P.S.: У меня в firefox еще и vimperator стоит, у которого свои горячие клавиши.
          • +2
            Я безмерно рад за вас. Всем бы такую память :-)
            • +2
              У всех память не хуже, просто вы заранее убеждаете себя в том, что ваша память не столь хороша. Вы попробуйте vim (или vimperator под firefox) в течении пары недель и сомнения исчезнут.
            • 0
              Все эти навыки тренируются, это не что-то запредельное; о чём и говорит автор оригинального комментария. Просто многие люди не знают своих возможностей и считают, что «это не для них». Результирующий workflow это комбинация нескольких компромиссных параметров, в том числе ленности и необходимости выполнять работу. Нужно знать и любить свои инструменты и вовремя проводить улучшения, когда упираешься в предел их возможностей.
              • 0
                Я каждый день использую более десятка программ. Предлагаете мне заучивать все хоткеи в них? А при смене некоторых из них переучиваться?
                • +1
                  Да. Не вы один такой.
                  • 0
                    И зачем мне это? Чтобы быть на 1% «эффективней»?
                    • 0
                      Вы делаете выводы основываясь на своих предположениях, а не на фактах. Вы попробуйте Vim или Vimperator, а потом уже задумайтесь об эффективности. Если вы станете менее эффективными, продолжим спор.
                      • 0
                        Большую часть времени я трачу на обдумывание, а не на клац-клац, чего и вам желаю :-)
                • +1
                  Да.
                • +1
                  Мозгу все равно что запоминать: расположение иконок и пунктов меню или горячие клавиши. Если вы пользуетесь мышкой — он все равно запоминает целые автоматические движения по движению мышкой в нужную область связанные с необходимым действием.
                  Если вы принудите себя пользоваться клавиатурой — в его «список для запоминания движений» попадут нажатия нужных клавиш, сам разум может даже не помнить что там за клавиши, все делать автоматом. Т.е. образуется нейронная связь «необходимое мне действие -> команда пальцам», и она может проходить без участия сознания высшего уровня в качестве контроллера ( без дополнительных осознанных мыслей «необходимое действие» — «нажму-ка я эти клавиши» — «нажатие»). Разумеется для такой прямой связи это действие должно быть осуществлено достаточное количество раз, собственно как все учатся вслепую печатать — никто ведь не говорит, что он запомнил расположение всех 120 клавиш на клавиатуре, и осознанно вспоминает расположение каждой чтобы напечатать нужную букву.
                  Поэтому «переполнения памяти» не возникает, «нажатия на клавиши» — это ничтожно малая доля двигательных активностей которые человек помнит и автоматически применяет всю жизнь.

            • 0
              Да я вас умоляю — какая память? Это уже на уровне мышечной памяти и рефлексов, благо большинство редакторов, браузеров и ide поддерживают vim mode, а используя Karabiner можно использовать стандартные hjkl и в других программах. В итоге, клик мышью по ссылке в браузере занимает значительно больше времени, чем, например, нажатие f, as
        • 0
          В vim же система хоткеев. Что-то вроде d2w (d — команда, 2 — количество повторений, w — слово) — то есть удалить два слова.
          Поэтому если знаешь всего несколько команд, остальные сочетания генерируются автоматически. И не нужно запоминать все бесчисленное множество сочетаний.
          • 0
            Да, но там порядок другой — 2dw.
            • 0
              Ваш тоже верный. Оба работают. Что еще увеличивает количество вариантов.
  • 0
    Самая страшная проблема всех виденных мной «эмуляций vim» состоит в том, что они на vim похожи достаточно хорошо, чтобы ввести в заблуждение, но недостаточно хорошо, чтобы действительно выполнять всё то, к чему привыкли руки в оригинальном vim (самый разочаровавший пример: SublimeText). Судя по написанному, вы эту черту пока не перешли. И не переходите.

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

Самое читаемое Разработка