Search
Write a publication
Pull to refresh
0
0
ukrdev @ukrdev

User

Send message
Ещё раз — это медленно с точки зрения массового применения. А вот с точки зрения необходимости каждый раз запускать ребилд, при изменениях, если они вносятся часто, а посетителей у проекта единицы — это уже гораздо более рациональный подход.

image

Я хотел бы высказать свое имхо по поводу первой части статьи.


Мне кажется что на уровне middle/senior плохого кода не бывает, бывает только плохое или неудачное но вполне рабочее решение.
За 9 лет разработки, я понял одну простую истину — никогда за одну итерацию не получится сделать хорошое решение, нужно несколько итераций что бы добиться хорошего решения, а вот кол-во итераций уже зависит от опыта, поэтому чем больше опыта тем меньше итераций делает разработчик. Чем быстрее ты пройдешь нужное кол-во итераций тем быстрее ты получишь тот результат на который расчитываешь.

И согласитесь, гораздо логичнее для перехода в режим вставки использовать клавишу Insert, для удаления символов — клавишу Del или Backspace.

Логично — да, удобно — нет.
При слепом наборе руки всегда находятся в области буквенно-цифровых клавиш, а если быть точнее указательные пальцы всегда на F и J и все в пределах досягаемости, без перемещения кистей рук. Так зачем мне тянуться к del или insert, или выворачивать свой мизинец что бы нажать backspace? Все что мне нужно уже у меня под пальцами.
И это абсолютно не универсальное решение, которое хорошо работает только если у вас полноразмерная клавиатура, а если это ноутбук в котором хоть и есть del, но нет insert. И все это находится не на своих местах и урезано что бы сократить место.


Тут как бы уже речь идет об универсальности, среди людей который пишут код очень много тех кто любит универсальные и простые решения и инструменты.
Мне не важно какая под моими пальцами клавиатура, есть в ней цифровой блок или его нет, на клавиши fN мне тоже все равно, мне не нужны стрелки — я ими не пользуюсь как и клавишами del, insert, pgup, etc. Я могу взять любую клавиатуру или любой ноут и работать так как я работаю всегда. А для того что бы начать использоваться вим мне нужно его установить, стянуть свой конфиг и установить плагины, и все это занимает 5-10 минут и я готов к работе.


Об очевидных проблемах. Жц вместо :w — почему-то не работает. Если вместо u набрать г — тоже почему-то не работает. И т. д. для практически любой команды.
В результате редактирование русского текста превращается в постоянное переключение раскладок.

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


  1. Насколько я знаю все это можно настроить в конфиге, в том числе и сделать что-то вроде ctr+s
  2. зачем вам кириллица при написании кода?) Ну ок, комментирование фрагментов кода, но в чем проблема переключить раскладку?
    <шутка про punto switcher>

Я не совсем понимаю о каких проблемах с раскладкой кириллицы вы говорите, можете привести пример?


По поводу интуитивности на уровне пальцев, я имел ввиду
d — delete
a — append
u — undo
di" (delete inside ")
ci" (change inside ")
Это не достаточно интуитивно?

Мне кажется нет смысла уходить с macos на linux, imho

Я к тому, что без выработки дурацкой^W привычки тыкать Esc перед любым действием vim — это наказание, а не редактор.

Я использую ctrl+c(на qwerty это ctrl-i) вместо esc, при этом на caps lock забинден ctrl, очень удобно


Да что вы говорите?/слово
Нажать / ввести слово (или несколько слов) и потом прыгать по результатам поиска нажимая n, что может быть проще? Ах да, Ctrl+f а потом Enter, да, "очень удобно". А как же быть с регистронезависимым поиском, наверное поставить какую нибудь галочку, в vim можно просто ввести \c после слова и он произведет такой поиск.

В целом нет смысла говорить о каких то конкретных вещах типа поиска, ведь мощь вима раскрывается тогда когда используется набор команд, т.к. вы же не делаете поиск только ради поиска, обычно это поиск + редактирование.
Реальный пример: вам нужно найти слово, потом найденное слово оказывается в кавычках и вам нужно удалить все что в кавычках и написать что-то новое.
В обычном редакторе это: Ctrl+f + enter + подвести мышку к найденному результату и сделать двойной клик что бы выделить все что в кавычках, а потом начать вводить изменения.
В vim это: /word + n + ci"


В vim нет привычной вам интуитивности на уровне интерфейса, в нем интуитивность на уровне ваших пальцев

Попробую вставить свои 5 копеек в ваш холивар.
Уже 5 месяцев прошло с того момента как я перешел на vim, до этого работал в phpstorm, поэтому есть что сказать.


Но сначала о слепой печати…
Перед тем как перейти на vim я освоил слепой набор, на раскладке dvorak и на это у меня ушло 95 часов (или ~3 месяца по 1-2 часа тренировок каждый день). Раскладка dvorak была выбрана не случайна т.к. до этого пробовал освоить слепой набор на qwerty, и после 20 часов тренировок понял что это самая неудобная раскладка для латиницы, которая так же сопровождается туннельным синдромом после длительного набора текста.
За скоростью набора текста особо не гнался но после 95 часов, скорость была ~300 знаков, на данный момент 350-400.


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


Ок, теперь по поводу vim'a
Основная причина по которой я решил перейти на vim — это желание избавиться от мышки, что бы полностью перейти на ноут и сделать свою тушу более мобильной.
И vim в данном случае является великолепным инструментом и ни одни шорткаты в других редакторах кода не дадут вам такой свободы в навигации по коду.


По поводу того что нужно что-то заучивать,… ну первые пару недель активной работы в vim'e у меня была постоянно открыта шпаргалка, но потом я ей пользовался все реже и реже. Спустя некоторое время уже перестаешь вспоминать, а просто делаешь это на автомате даже не задумываясь, как при вождении автомобиля на механике.


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


Ну и конечно, vim нужно использоваться в связке с tmux — это самый крутой сетап.

Никакой адаптации не требуется, во всяком случае если вы начали изучать vim уже с раскладкой dvorak, если вы до этого работали на qwerty, можно сделать qwerty langmap для dvorak в режиме normal(command), а при переключении в insert будет dvorak, но это ужасный костыль который все только усложнит. Т.е. не смысла использовать две раскладки, лучше сразу использовать dvorak.

Поддерживаю автора статьи, vim очень удобен особенно в связке с tmux.
5 месяцев назад перешел на vim + tmux и ни разу не пожалел, попутно сменил раскладку с qwerty на dvorak и windows на linux. До этого 3 года пользовался phpstorm, а еще до этого 4-5 лет netbeans.


Конечно переход на vim это должно быть осознанное решение и тот человек который задумался об этом должен точно понимать зачем ему этот редактор. Но я к сожалению не могу сказать что одна лишь смена редактора с <ваш_редактор> на vim даст вам что-то ощутимое, тут должен быть комплекс изменений которые в совокупности увеличат продуктивность. Поэтому у меня кроме vim вот такой список:


  1. Смена стационарного компа на ноутбук
  2. Смена раскладки с qwerty на dvorak + освоение слепой печати
  3. Смена ОС, с windows на linux

Моя мотивация была такая:


  1. Отказ от использования мыши, который был спровоцирован желанием полной миграции с стационарного компьютера на ноутбук, для повышения мобильности. Это дает возможность мгновенной смены локации что положительно сказывается на продуктивности.
  2. Повышение скорости набора и редактирования кода, а смена раскладки на dvorak только добавила скорости и комфорта
  3. Tmux позволяет забыть о том что такое окна, и дает возможность очень легко управлять областью в терминале. Во время разработки кроме редактора с кодом приходится часто открывать еще несколько терминалов с тестами или просто для выполнения консольных команд, без tmux нужно городить окна и активно юзать виртуальные рабочие столы, а это все хот-кеи, а хот-кеи не очень то и удобны, даже если вы забиндили ctrl на клавишу caps lock.
  4. Переход на linux — ну тут все просто, практически все что я использую при разработке или в разработке, очень хорошо работает на linux, на windows приходилось вечно сталкиваться с различными проблемами и искать обходные пути. Ну и конечно же терминал.

Ожидал что в статье будут рассмотрены подводные камни или что-то типа того, а нет все по классике — пост о том что и так написано readme.md

Information

Rating
Does not participate
Registered
Activity