Pull to refresh

Comments 28

Ребят, но для начала надо выучить все эти команды. А в обычном интерфейсе иконки на кнопrках как минимум логичны и есть подсказка при наведении. Если для того что бы мне писать на языке мне кроме того что изучать язык надо еще в два раза дольше зубрить команды редактора — то мне не нужен такой редактор. А если везде внедрять такой принцип как предлагает автор — то вперед -> назад к ДОСу
Если к иконкам добавить подсказку, какое клавиатурное сочетание выполняет эту команду, то через некоторое время обучишься, и можно будет иконки убрать, чтобы не мешали.
Когда изучал программирование, очень долго пускал слюни на vim, не зная, с какой стороны к нему подступиться. Однако, когда я освоился, осознал набор фич, нужных мне от редактора, дело пошло.

Зубрить ничего не нужно, достаточно посматривать на (предварительно разобранную) распечатку .

Еще одна офигительная вещь — это то, что можно работать на ноутбуке без мыши и тачпада. Хоть я и владею тачпадом настолько, что могу играть в action-игры, писать код быстрее и удобнее в vim или ideavim.
Тут есть такое понятие, как «long run». А точнее — стоит ли такой «оверхед» (в данном случае — процесс изучения функционала при подготовке к работе) того, чтобы потом экономить время? Будет ли он оправдан в будущем?

Согласен, не всегда есть смысл. Но в конкретных сферах IT без этого продуктивность значительно уменьшается.

Например, «выделить всё — положить правую руку на мышь — правая кнопка — копировать». Интересно, сколько десятков минут своей жизни я уже сэкономил таким образом?
Горячими клавишами я пользуюсь со времён DOS и Windows 3.11 for Worksgroups по сей день, но ваши примеры мне кажутся неудачными:

Реальная сила Vim в том, что эти комбинации клавиш являются языком. Вы «говорите», что вы хотите сделать. Хотите удалить следующие 10 строк текста? Вы можете просто набрать: 10dd.
Но как часто вам нужно удалять именно 10 строк? А если нужно удалить 11 строк, то будет: 10dd dd — потому что вы сперва ошиблись в оценке количества строк, и пришлось удалять ещё одну строку. А если 12, то 10dd 2dd или 10dd dd dd — выигрыш уже не так заметен. Пока вы будете считать количество строк, чтобы ввести число на удаление, я уже раз семь нажму клавишу «вниз» с зажатым шифтом — при этом я буду явно видеть, как строки выделяются по одной, и всегда могу прекратить выделять или развыделить лишнюю строку обратно, или мышкой выделю нужный блок и нажму delete (в привычном редакторе я бы нажимал ctrl+d для удаления отдельных или группы строк).

Скажем, я на 10 слайде и я хочу переместить название этого слайда «Space and Times» на слайд 22. В традиционном интерфейсе я бы визуально проверял название, затем переместил курсор, чтобы выделить его. После нажал CTRL+X, чтобы вырезать название, затем переместил бы курсор на боковую панель, в которой перечислены все слайды, возможно, прокрутив панель вниз, пока не увижу слайд 22. Затем выбрал слайд 22, затем вставил на него заголовок.
На выразительном языке клавиш я мог бы сделать то же самое, всего лишь нажав: /Spacxxg22gpp
Вы всегда точно знаете номер слайда, на котором находитесь, и номер слайда, на который хотите переместить текст? Скорее всего вам придётся сперва пролистать все слайды, чтобы удостовериться, что номер нужного слайда — 22, потом вернуться на слайд 10 (а значит или в самом начале запомнить номер исходного слайда или же точно так же листать, пока не дойдёте до нужного слайда), чтобы поиск текста начался с него, а не со слайда 22, и лишь потом уже вводить магические команды. Последовательность «даблклик мышкой по заголовку, ctrl+X, скролл мышкой, клик в нужное место, ctrl+V» может оказаться быстрее.
Насчет количества удаления строк:

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

Более того, в vim можно прыгать по логическим блокам. Например, можно прыгнуть в конец/начало блока вроде while/for/if. Или прыгнуть от открывающей до закрывающей скобочки. Список можно продолжать до бесконечности.

Последовательность «даблклик мышкой по заголовку, ctrl+X, скролл мышкой, клик в нужное место, ctrl+V» может оказаться быстрее.

Ваша последовательность тоже отлично переносится на vim :) Поиск, вырезание по x, навигация (можно прыгать по заголовкам слайдов, как — зависит от типа презентации), вставка.
В Google Docs кстати многих команд не хватает, а часть существующих ведет себя не так, как ожидаешь.
А еще жутко бесит, что в Google Translate приходится мышкой елозить только чтобы языки местами поменять.
Хорошо хоть в OSX можно забиндить любой пункт меню без посторонних средств, а то иногда у некоторых разработчиков хочется отнять клавиатуру за отсутствие необходимых хоткеев в их продуктах.
Но в вебе делать так как в vim это уже перебор.

Вот простой, но, как мне кажется, удачный пример превосходства «невидимого интерфейса» над «видимым» в вебе — www.guituner.com/. Ну и github, конечно.
А еще жутко бесит, что в Google Translate приходится мышкой елозить только чтобы языки местами поменять.
Кстати совершенно непонятно, почему он не определяет язык автоматом.
помнится было время, когда он это делал
Помнится, было время, когда у гугла был неплохой поиск.
Но в цифровом мире мы имеем преимущество гораздо более прямых маршрутов между намерением и действием. Я могу нажать комбинацию клавиш, и действие сразу же выполняется. Нет необходимости тащить мой курсор сквозь пространство и время, чтобы довести дело до конца. Разрыв между намерением и действием резко сжимается, и мы можем эффективно обойти ограничения закона Фиттса.


Хм, а что, для клавиатуры закон фитса уже не раотает? У меня у коллеги на маке все функциональные клавиши находятся в сочетании с fn, каждый раз мне приходится вспоминать, что ее надо нажать и ещё и тянуться 2 руками. В некоторых случаях это дольше, чем двинуть мышкой. И дольше, чем тоже самое действие реализовать через тач.
Если интерфейс позволяет не убирать руки с клавиатуры — то наличие у пользователя десяти пальцев дает весьма неплохой бонус к скорости. И даже если одна рука лежит на мышке — все равно остается целых пять пальцев…

Ограничивающим фактором для клавиатуры является не закон фитса, а сложность или даже невозможность нажатия некоторых комбинаций клавиш одной рукой. (Тут обычно жалуются на «самую важную комбинацию клавиш» в Windows — как будто она нажимается не реже чем два раза в минуту)
Так сложность, в общем-то и следуе из закона Фитса. Если вспомнить Маковские трехпальцевые комбинации, то тут нужно ещё придумать, как правильно применить закон фитса, какая-то интегральная формула будет, ибо если клавиши находятся далеко друг от друга, то нельзя просто посчитать наибольшее время по одной из клавиш.
Достаточно перенести модификаторы на большие пальцы, вместо длинного пробела можно использовать короткий, и нажимать его одной рукой. Уже давно на своей клавиатуре так сделал, и теперь не понимаю, почему исторически сложилось так по уродливому: огромный пробел, который мало кто правильно нажимает, дублирование модификаторов по краям клавиатуры. Тот же шифт на большом пальце позволяет печатать в режиме Caps Lock, просто зажав его. А Ctrl на большом пальце наконец-то сделал использование EMACS комфортным, руки вообще не смещаются и не раскорячиваются при работе.
Интерфейс программ следует проектировать для стандартной клавиатуры.
Ограничивающим фактором для клавиатуры является не закон фитса, а сложность или даже невозможность нажатия некоторых комбинаций
Вспоминается плагин XML Tools для Notepad++ и его горячая клавиша Ctrl+Alt+Shift+B… но да, это всё же быстрее, чем Меню → Плагины → XML Tools → Pretty Print.
Вложенность больше 2х — зло.
Забавно, но почему-то, почти всегда, когда мне попадаются рассуждения об удобстве VIM-а, я вижу сравнение работы человека, этот редактор освоившего, с человеком, который с компьютером работает очень и очень неуверенно. :) Да, профессионал работает в редакторе быстрее и эффективнее.
Но с тем же успехом продвинутый (по-настоящему продвинутый, а не по резюме) пользователь сможет работать с любым редактором из сотен, представленных в винде. И не только текстовыми. Возможно, графическими. Или музыкальными. И не факт, что в проводнике. Боюсь, что навыки работы в VIM могут при таком сравнении оказаться бесполезными. А навыки работы в виндовс вообще помогут освоить подавляющее большинство программ, с которыми вообще может столкнуться пользователь.
А навыки слепой печати окажутся куда эффективнее в редакторе, чем знание нескольких сотен горячих клавиш. :) Кстати, а часто приходится удалять первую строку, находясь в середине текста? Или следующие 10 строк, именно 10, а не 8 или, например, 13? Как мне кажется, значительно реже, чем поменять букву в одном из последних набранных слов. К примеру, поменять букву «я|е|р|ы» на «ч|н|о|ф» в третьем|четвертом|первом|восьмом от курсора слове, находящуюся на третьей|второй|первой|предпоследней позиции в слове. Вам каждый раз придется считать комбинацию заново? А если вы ошиблись при наборе комбинации.
Я не спорю с тем, что VIM (или EMACS) хороший редактор. Я полностью согласен с тем, что профессионал должен осваивать любимый инструмент. Осваивайте. :) Задумайтесь только, что виндовс, офис и еще over 9000 программ являются инструментом для кого-то другого. И не факт, что работающий на них профессионал будет работать менее эффективно, чем вы.
Комбинацию считать не нужно. На картинке ниже показаны нажатия клавиш в русской раскладке, на самом деле там Fт;rь
Сначала перемещаемся к ближайшему слева F символу т. Видим, что мы еще не попали куда нужно, нажимаем ;, чтобы повторить движение. Заменяем r букву т на ь. Мышечная память с этим всем творит чудеса.
картинка


А вообще да, у практически всех продуктов должна быть низкая кривая обучения, кроме совсем уж узкоспециализированных. Наличие шорткатов при этом — только плюс.
А если это восемнадцатый слева символ «Т»? А если это случайно пропущенный символ "=" в строчке -=-=-=-=-=-=-=-=--=-=-=-=-=-=-= из двухсот чередующихся символов, причем, этими строчками юзер-мудак отделяет строчки таблицы и мы заметили, что пропустили "=" в пятой по счету строчке из 20?
Обратите внимание, мои примеры не менее надуманы. Именно потому, что это придуманные примеры, которыми я пытаюсь иллюстрировать свою мысль. :)
С VIM я не работал. Немного пришлось поработать с EMACS. поэтому я могу себе представить всю мощь VIM (я серьезно).
Я не понимаю другого — возможности VIM, равно как и его особенности, почти невостребованы во всей остальной области пользования программным обеспечением, кроме как в области редактирования текстов. Мы не можем нарисовать картинку в текстовом редакторе, не в состоянии произвести статистический расчет с сотнями тысяч ячеек, не справимся с созданием презентации, не сумеем нарисовать миндмэп. Перечислять сколько всего мы не сможем сделать на компьютере с помощью VIM можно часами. Именно поэтому меня так удивляют восторги тех, кто, освоив VIM, вдруг осознают, что это удобно… :)
При этом они продолжают пользоваться проводником, а в качестве альтернативы VIM ни разу не предлагали серьезных текстовых редакторов. :) Кстати, это же касается и EMACS.
Как мне кажется, им стоит освоить несколько десятков различных пакетов на достаточно высоком уровне, чтобы понять — каждому свое. И каждому пользователю и каждой задаче… :)
Итак, с 10 слайда переместить заголовок на 22? Разберем этот простой пример. :)

/ = «начать поиск объекта, начиная с текста...»
Spac = «Spac» (соответствует тексту объекта, содержащего " Space and Times ")

Объектов нашлось несколько — заголовок, первый абзац текста и подпись под иллюстрацией. Что делать?

Enter = (нажатие Enter) «выбирает совпадающий объект»

Выбираем первое вхождение. Прекрасно.

xx = «вырезает его»

Вырезаем? А если надо скопировать?

g =«затем переходим к слайду…»
22 = «22»

Точно 22? А если у нас не презентация, а публикация, и нужен не 22 слайд, а 5 страница 3 главы 2 раздела? Или просто слайд номер 43, 44, 45 — где-то там…

g = (подтверждаем перемещение)

А зачем? Если мы уже перешли? А если мы должны провериться визуально и подтвердить переход, то в чем прелесть комбинации?

pp = «затем вставляем»

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

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

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

Слишком надуманный пример, который не учитывает всей сложности процесса, с которым приходится сталкиваться пользователю. Просто потому, что захотелось придумать пример. Не все хорошо в стандартных интерфейсах. Именно поэтому постоянно ведется очень большая работа, не всегда лежащая на поверхности, по их изменению. И самая большая проблема этой работы заключается не в том, чего бы придумать нового, а в том, как бы сделать так, чтобы люди на это новое перешли. И если не с песнями, то хотя бы без особых проблем. Иногда это получается, иногда нет. Лучше всего это получается, когда пользователю не приходится учить ничего нового.
Помнится, английский лучник показывал в бою результаты лучше, чем обычный пехотинец, вооруженный мушкетом. Только лучника нужно было учить двадцать лет, а мушкетер начинал стрелять через полчаса обучения. Результат оказался предсказуемым. Как только лучники кончились, лук ушел с поля боя, оставшись в руках только энтузиастов и спортсменов. Боюсь, то же ждет и пользующихся VIM-ом. :)
немного вырвано из контекста, но
раскладка клавиатуры по Двораку...Vim действительно интересно использовать
дворак
популяризовать управление с клавиатуры помогла бы строка, в которой показывается последовательность(или как вариант, несколько альтернативных трактовок) нажатий для осуществляемого сейчас действия: например, при переходе на первую строку покажется gg или ctrl+home, при удалении допишется строки dd или ctrl+d
Такой подход применим разве что для разработчика. А онные не часто строят презентации. Офисные приложения в этом плане просто заступорят среднего менеджера или бухгалтера.
Всю мощь шорткатов оценил после «блендера» и стал первым делом в изучении нового софта распечатывать таблицу шорткатов и настраивать под старые привычки все что можно. Многие как и я в прошлом игнорируют силу ускорения которую дает использование клавиатуры и работают «мышкокликательно». Радуют тенденции появления «ошорткачивания» на фликре, и 500px, которые за ними следуют.

По-моему, широкое распространение сенсорных мониторов сделает горячие клавиши ненужными. Захотел выделить и перетащить, выделил пальцем по экрану, и перетащил пальцем по экрану. Не говоря уже о скроллинге-листании и т.п. Ну и кнопки в интерфейсе нажимать будет гораздо проще, чем мышкой. И главное — кривая обучения обратная к подходу VIM!
Sign up to leave a comment.

Articles