Pull to refresh

Comments 30

У меня функциональная клавиша клавиатуры + hjkl замаплены на стрелки. Сама функциональная клавиша - это левый контрол. А левый контрол перенесен на левый пробел (клавиатура сплит, поэтому два пробела). Поэтому удобно и в Vim в режиме вставки, когда надо на пару символов назад вернуться, и в других приложениях стрелками на hjkl можно пользоваться.

Выходить в нормальны режим делать hhhhh, cl... <Esc>A довольно утомительно, не считаете? Отпишитесь пожалуйста если знаете способ лучше, действительно очень интересно

Пускай заминусят, но я знаю офигенный способ решения чуть ли не 100% проблем с vim. Установите VSCode и не парьте мозг. Я много лет проработал с vim, даже научился-таки его варить нормально, но в итоге пришёл к выводу:

раз эти GUI есть, то я не вижу разумных причин ими не пользоваться

Я понимаю, что существует 10 тыщ плагинов, делающих из всего vim и все эти плагины, на мой взгляд, полная лажа) Я не нашел для ничего, чего не может VSCode или что в нём сделано хуже чем в vim.

Вы знаете, я больше скажу, vim получил новое дыхание как-раз благодаря VSCode и LSP сделанным под него. Другое дело, что вместе с этим меняется и общий архитектурный ландшафт разработки. Давайте я попробую чуть более аргументированно обосновать свой выбор. Важно - свой. То есть мне, с моей спецификой работы, когда надо иметь дело с разными средами, виртуальными машинами и с очень разными проектами одновременно, к сожалению ни VSCode, ни Fleet, ни тем более онлайновые среды просто не подошли. Уверен, вам для ваших задач достаточно иметь на рабочем месте единый хорошо настроенный VSCode или любой другой продукт, а вот некоторым, довольно многочисленным специалистам проще не привязываться к какой-то одной конфигурации и иметь возможность относительно безболезненно продолжать работать может быть не так эффективно, но в разных условиях. Пока я работал в одной узкой специализации постоянно, мне не нужны были вообще никакие универсальные инструменты.

VSCode вполне себе портабельный и умеет в SSH. В 99% случаев, этого хватает для того, чтобы работать. При условии постоянной смены окружения, Vim просто ужасен, потому как без напильника и тонкой настройки - это удобный инструмент пару-тройку конфигов подправить, но не более.

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

Да, бывают совсем ограниченные среды, без доступа к внешнему интернету, через 5 проксей и RDP, но это прям очень специфические условия. Согласен, тут можно и поюзать vim.

Просто я не понимаю, почему люди продолжают есть этот кактус добровольно) Когда выбор был между vim или тяжеловесной IDE, я могу понять почему выбор падал в сторону vim, но теперь есть промежуточные варианты в виде VSCode или того же Sublime Text. Они имеют портабельные версии, они относительно лёгкие (для современного железа), в них куча плагинов, которые не надо настраивать по 4 дня (как это бывает с vim). Зачем тогда продолжать им пользоваться как основным инструментом?)

у VSCode нет нормального модального редактора, vim mode не в счет( в нем есть далеко не все)
в плане настройки, всякие сборки типа
https://astronvim.github.io/
https://www.lunarvim.org/
https://spacevim.org/
не сложнее vscode, так же поставил и работает
плагины которые сложно настраивать( это в основном поддержка языков и разные gui ) там уже встроены и настроены
а с мелкими плагинами в vim проблем с настройкой не имеют, поставил и они работают
привлекательность вим не в куче плагинов ( в этом плане разницы с другими инструментами нет), а в базовой функциональности, в удобстве модального редактирования( для тех кто выбрал вим это именно так)

Почему у всех vim ассоциируется исключительно с чёрно-зеленым чудовищем из которого нельзя выйти, с размером таба 8 и правкой конфигов?
Vim это про редактирование кода как текста, неважно в каком редакторе/IDE — это может быть как и голый вим, так и любая IDE с эмуляцией vim: начиная со всех продуктов семейства Jetbrains до, простите, QtCreator'а (я понимаю, что поддержка в этих плагинах далеко не на высшем уровне, но, например, за последние лет 5 в той же IDEA изменилось с "да блин, это не так работает" каждый час на "что-то вроде не так оно должно себя вести, хотя может и норм" раз в месяц или даже реже)
В таком случае вы получаете И мощь vim'а при редактировании кода как текста, И мощь IDE при редактировании кода. Об этом и пишется большинство статей (как я надеюсь, по крайней мере я так вижу...)


Например, вы написали какой-то if с простым условием, оно разрослось до сложного со всякими скобками. Теперь вы хотите вынести выражение в скобках в константу.
IDE: поставить каким-то образом курсор на открывающую скобку, мышкой или через стрелочки с зажатым шифтом выбрать всё с закрывающей скобкой, С-А-С, <имя переменной>
VIM: поставить каким-то образом курсор внутри скобок, ca)<имя переменной><ESC>Oconst <имя переменной> = <ESC>p, удалить скобки
IDE+VIM: поставить каким-то образом курсор внутри скобок, va)<C-A-C><имя переменной>


Для меня очевидно, что комбинированный вариант самый удобный: я просто не представляю, как можно обходиться без vimовских motion-change/delete комбинаций (dap, di), c2w, v%, ...) не говоря уж о всемогущей точке, так и без обычных IDEшных фич. Даже сейчас, когда пишу этот коммент в браузере мне этого не хватает: всякие плагины типа vimium помогают, но это только для навигации, а не для написания какого-то текста, в такие моменты проще создать временный файл и редактировать его как раз голым вимом (да даже плагинов никаких не надо, разумеется), нежели чем страдать с обычным редактором


Просто я не понимаю, почему люди продолжают есть этот кактус добровольно

Кому-то может быть не нужны все возможности IDE. Я вот понаблюдал за собой, что я использую из всего WebStorm'а и понял, что это в большинстве своём автоимпорт, refactor->rename, refactor->extract и подобное, git view. Не так уж и много фич, которые при желании можно и в голом виме плагинами сделать, но смысл? А вот для спортивного программирования на с++ мне вообще ничего из IDE не нужно, поэтому смысл использовать IDE?


которые не надо настраивать по 4 дня

Мне даже интересно, что это за плагин. У меня более 20 плагинов (из которых обязательных — 0, а из желательных только автокомлит), но я не помню, чтобы установка занимала больше минуты, а настройка различалась по времени с чтением README устанавливаемого плагина
Да в той же IDEA для того чтобы при желании пролистать все настройки уйдёт наверно 4 дня, но смысла в этом никакого нет — пользуешь по дефолту, понимаешь что что-то не нравится, идёшь в конфиг и чинишь. Но это я бы сказал это вообще про любой софт верно

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

Прям сейчас пишу этот комментарий в Емаксе, используя tridactyl плагин для ФФ. Любые текстовые поля можно редактировать, используя системный редактор. Уже давно мышь не использую в браузере. Кстати, этот плагин никогда не будет работать на хромых браузерах.

У нас, динозавров, трактористов и заслуженных работников виртуальных терминалов и консолей, есть одно простое правило -- если при работе с текстом в редакторе нужно прикасаться к мышке и, вообще, отрывать руки от клавиатуры, то редактор немедленно отправляется в /dev/null. В этом плане, единственный конкурент vim -- это emacs.

У меня студент работает во всяких VSCode, PyCharm и прочих продуктах идеостроя. Когда он показывает результаты, тыкая мышкой во все эти табы с кучей свистоперделок, у меня начинает дёргаться глаз, потому что всё это чудовищно тормозит. Почти любое действие -- не менее полусекунды задержки, и это на супермощном ноутбуке с 6-ядерным процом. Это второй пункт, по которому vim обставляет все эти новомодные ГУИ.

Я в VSCode мышкой если и пользуюсь, то ОЧЕНЬ иногда для каких-то жутко странных штук. С ходу могу вспомнить только один сценарий: мне нужно поставить несколько курсоров в случайных местах в тексте и что-то подредактировать такое странное (что, к слову, vim вообще не умеет, ибо multiline edit в vim реализован так плохо, что цензурных слов у меня нет для этого).

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

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

Я сам вимовод со стажем, и когда я смотрю на своих коллег вимоводов (с ещё большим стажем) - мне больно смотреть. Они делают все ТАК ДОЛГО. Я оперирую горячими клавишами и GUI элементами примерно процентов на 30 быстрее.

Но да, студентики у меня тоже очень ленивые, учить горячие клавиши не хотят и тоже всё тыкают мышкой. Они делают всё НЕВЕРОЯТНО ДОЛГО, иногда хочется им прописать курс vim-а только для того, чтобы появилась привычка делать всё через клавиатуру. Так что проблема не в VSCode. Проблема в студентах)

Чисто любопытства ради: какие именно действия в VSCode выполняются быстрее, чем в vim? Не специфические языковые фичи -- всё-таки, vim является редактором текста, а не IDE, -- а действия, связанные с редактированием текста.

И в обратную сторону. Сколько нажатий клавиш в VSCode потребуется, чтобы выполнить следующие действия?

  1. Проскакать вперёд/назад по, например, запятым (в общем случае, по любым символам).

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

  3. Вставить столбец чисел в псевдотабличку (набор из выравненных столбцов, разделённых пробелами).

  4. Сделать следующее: имеется несколько строк с текстом, например, с объявлениями переменных, завершающиеся комментариями. Нужно перенести все комментарии в отдельную строку над соответствующим объявлением (опционально добавить пустых строк между каждым объявлением).

Пускай заминусят, но я знаю офигенный способ решения чуть ли не 100% проблем с vim.

И это Емакс с evil-mode. Лучшее с двух миров. VSCode идет в топку. Он никогда не будет настолько же удобен, как настроенный под себя Вим или Емакс.

Так и не понял зачем он нужен, вим управление конечно хорошо работает, но в целем тормозной, и никаких плюсов по сравнению с вим не увидел

Самый большой плюс — elisp. Для полной кастомизации под себя. Виму с его убогим вимскриптом очень далеко до elisp. Не пробовал неовим с Луа, но в емакс намного приятнее в плане кастомизация, можно все через гуи сделать и в конфиг результат перенести. А еще можно любую функцию или переменную посмотреть, а особенно полезно просмотр face — кастомизация текста(Цвет, размер, стиль). В виме этого просто нету. Емакс умеет абсолютно все, что и вим, но это только 10% его возможностей. Остальное в виме просто невозможно.

Vim (обычный, не Neo) уже очень давно поддерживает функции, написанные на Python.

Примеры в студию.

Примеры чего? Того, что Vim поддерживает Python?

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

Ну например у меня есть функция, которая ищет файлы в папке ~/.config. Я ее написал за 5 минут. А еще есть функция удалить все буферы определенного расширения. У меня их сотни. Это как с баш скриптами, очень легко что-то для себя сделать, для личных нужд. В Емаксе есть поддержка dir-locals.el файла, который устанавливает специфические настройки для всех файлов в этой директории и всех вложенных директорий. Например у меня был питон проект, в котором все отступы на табах сделаны. В виме для этого проекта исключение сделать не смог.

e ~/.config/ ?
манипуляции буфферами даже на vimscript делалось, сейчас на lua можно
ну и как бы от редактором пользуются не для того чтоб его интерфейс программировать, плагины вполне покрывают общие функции закрыть буфферы справа, закрыть все кроме текущего, при желании свой можно написать, чем это принципиально от того что в emacs отличается?
загрузка vim.rc из папки проекта есть и вим, только она отключена по умолчанию, есть плагины по управлению проектами

что elisp может дать особенного для редактирования кода/структурированного текста, чего не может вим, или любой скриптовый язык типа перла?
зачем мне переменные редактора смотреть тоже не понятно, те которые используются для управления настройками и в вим доступны

elisp конечно лучше vimscript, но сейчас есть lua, и других
возможностей манипуляции с текстом куча, если что консоль рядом с кучей инструментов и vim позволяет применять эти инструменты на требуемуемые части кода. Чем elisp для этого лучше?

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

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

Почему я должен вам что-то доказывать? Не нравится - не пользуйтесь. Я то знаю что в виме/емаксе нельзя, а что можно.

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

Вим это только 10% того, что в Емаксе доступно, но вы продолжайте себя успокаивать)

это постоянно говорят, только никаких примеров привести не могут
пустой треп

по поводу hjkl
Нет никакой философии в плане "не пользоваться стрелочками".
Просто в древние времена некоторые терминалы и протоколы не поддерживали передачу непечатаемых символов, отсюда и буквы. А когда появились стрелочки - добавились и стрелочки

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

Sign up to leave a comment.

Articles