Я немного расскажу, как использую vim в работе full stack программиста, со своей колокольни, но для начала отвечу на некоторые вопросы, которые задают мне, когда узнают, что я использую vim при разработке проектов:
Зачем?
Хороший вопрос. Стоит для себя лично на него ответить. Зачем валандаться с vim, изучать кучу комбинаций клавиш и плагинов? Какой смысл, если есть vscode или pycharm или phpstorm? Жизнь коротка, стоит ли ее тратить на все это? Чтобы впечатлить кого-то, как на картинке в начале статьи? Да кого этим удивишь?
Я могу ошибаться, но на мой взгляд, ответ - всегда число. Сколько вы за свою жизнь затратите секунд на то, чтобы дотянуться до мыши и вернуться назад на клавиатуру? Посчитайте за сегодняшний день, сколько раз вы дотянулись до мышки и вернулись на клавиатуру, переведите в секунды, умножьте на 365 и на те годы, что планируете проработать программистом. Держа в голове это число и холодный расчет, можно прикинуть, стоит ли оно того. Есть и второстепенные факторы - сколько секунд ваше IDE тратит при старте или на открытие тяжелого файла и т.д. Эти секунды – тоже ваша жизнь. Возможно, в вашем случае это будет не такое уж и большое число, ну что же, статью можно закрывать, нет смысла тратить время.
Вы так же можете сказать, что и в IDE тоже есть горячие клавиши, да, они есть, но только они мало что решают, и вы не сможете полностью вытащить мышь из своего компьютера при работе с ним, пока не включите vim-эмуляцию. А если vim эмуляция включена, то стоит ли парится с IDE, когда можно получить то же самое с помощью плагинов и голого vim-а. Вот такая палка о двух концах.
Можно ли вести серьезную разработку на vim?
Разработка не то что будет уступать IDE, а, наоборот, их опережать за счет гибкости и настройки именно под ваши нужды. Да и быстродействие vim никто не отменял. Плюс бесчисленные комбинации клавиш, которые сидят на уровне подкорки. Тут вопрос затраченных усилий, то, что вы получите в IDE из коробки сразу же, в vim придется разобраться, как все работает и какие нужны для этого плагины или самописные функции. Это как санки тащить в гору – тяжело, но зато потом можно нестись с горы как ветер. Проблема лишь в освоении и тренировки навыка, а также в том, сколько времени на этот навык уйдет.
Тут был забавный комментарий в одной из статей про vim, что человек с помощью мышки и gui обогнал своего коллегу в терминале. А вот реальная история из моей жизни. Один человек купил себе спортивную машину с ручной коробкой передач. И мой знакомый ему говорит, я тебя без проблем на своей обычной машине с автоматической коробкой обгоню. Выехали на светофор, и так оно и получилось. Человек на автомате победил, потому что знал, что за рулем спорткара - дилетант. Значит ли это, что посадив за этот спорткар профессионального гонщика, он его тоже обгонит?
Как тренировать навык работы?
Совсем новичку стоит сразу начинать работать с neovim. Neovim – это самый современный на данный момент форк vim-а. Установите neovim и введите команду
:Tutor
Пройдите все уроки, на это уйдет примерно 1.5 часа времени, но оно того стоит, если решили потратить n-усилий, чтобы освоить работу с vim. В инете можно найти на русском этот тутор.
Можно установить приложение на телефон Vim Master и проходить тесты по командам vim. Когда я начинал изучить vim, такого приложения не было, оно бы сэкономило мне тьму усилий. Когда мне скучно и рука тянется почитать новости или заняться еще какой-либо прокрастинацией, я стараюсь запустить эту приложуху. Как не странно, меня это еще и успокаивает.
Есть vim игра, но мне лично она не понравилась, хотя на вкус и цвет фломастеры разные.
Плюс стоит прочитать все доступные книжки по vim, которые есть на данный момент. Их не так уж и много.
Этих знаний будет достаточно, чтобы покрыть 99% проблем, оставшийся 1% покроет гугл.
О всех новинках и модных течениях, которые связаны с vim, можно читать на редите в этих четырех ветках: 1, 2, 3, 4.
Пару слов о neovim
Возможно кто-то не знает, я кратко расскажу историю neovim и с чего все началось. Жил был программист Thiago de Arruda из Бразилии. В 2013 году он написал патч для поддержки многопоточных плагинов для vim. Но его реквест отклонили. Другой бы на его месте расстроился и плюнул, но Тиага оказался не из тех, кто легко сдаётся. Он создал форк vim, назвал его neovim. Вкатил в него асинхронную сишную библиотеку libuv, стал писать тесты, начал избавляться от старого C89 кода. Его вдохновение и настойчивость увидели другие разработчики. Образовалось комьюнити. И вот через 7 лет можно сказать, что neovim - это уже стандарт дефакто в мире vi*. Короче говоря, получилось как в пословице, не было бы счастья, да несчастье помогло. В статье, если я пишу vim, то я уже имею ввиду neovim.
Плагины
С помощью плагинов можно превратить vim в IDE, которая будет настроена на ваши потребности и на ваш вкус. Полно разных туториалов или видео-уроков на этот счет. Но я бы хотел в этой статье сконцентрироваться на плагинах, которые бы ускоряли разработку. Да, есть плагины, которые занимаются внешним видом или выводят всякую там полезную информацию, или плагины, которые рассчитаны на определенный язык, например, для GO есть vim-go и т.д. Я не буду тут перечислять специфические плагины для отдельно взятых языков, тем более, что они легко гуглятся, а попробую рассказать о плагинах, которые бы подходили для всех, вне зависимости от яп, и которые, на мой взгляд, помогают быстрее писать код.
Плагин Tagbar (навигация внутри файла)
На навигацию по файлу уходит много времени, особенно, если это легаси, с кучей всего. Открыли вы файл, в котором тысяча классов и функций. Хорошо бы сразу получить их список, а так же возможность мгновенно переместится в нужный класс или функцию. Плагин Tagbar этим и занимается. Строит отдельное окошко с правой стороны, что-то вроде дерева из классов и функций, и дает возможность по ним перемещаться.
Я добавил такие настройки себе в .vimrc (nvim/init.vim) для этого плагина:
" Автостарт плагина для некоторых типов файлов
autocmd VimEnter *.py,*.pl,*.js,*.php TagbarToggle
" Компактный вид у тагбара
let g:tagbar_compact = 1
" Отк. сортировка по имени у тагбара (мне хронология важнее)
let g:tagbar_sort = 0
Если вы переключились на окошко с tagbar и хотите развернуть или свернуть дерево с классами, то используйте клавишу =
Плагин NERDTree (навигация по дереву папок и файлов)
Работа плагина NERDTree - вызов окошка слева со структурой файлов и папок
NerdTree плагин для навигации по файлам проекта, что-то вроде файлового менеджера. Использую, чтобы посмотреть структуру файлов и папок, а также чтобы создать файл в нужно месте. Я добавил для себя следующие настройки
" Показывать скрытые файлы и папки в NERDTree
let NERDTreeShowHidden = 1
" F6 для запуска и свертывания
noremap <F6> :NERDTreeRefreshRoot<CR> :NERDTreeToggle<CR>
Плагин fzf - нечеткий поиск по именам файлов
Представьте, вам нужно открыть файл, но вы не помните, в какой папке он лежит, и не помните, как он точно называется, все что вы помните, это то, что в имени файла есть слово ball и что у него расширение вроде .cpp. В жизни обычно именно так и происходит. На gif-ke выше видно, как происходит поиск и открытие нужного файла.
Плагин fzf обеспечивает просто невероятную скорость работы с файлами и папками, и с нечетким поиском. В больших проектах на поиск и открытие нужного файла уходит много времени и сил, но с помощью этого плагина все это становится парой пустяков. Так же если у вас открыто множество вкладок (буферов) и тоже стоит проблема быстро переключится на нужный файл, то fzf вам в помощь.
Плагин понимает .gitignore, так что он не будет искать среди картинок. Я добавил такие настройки:
" Если файл уже открыт в vim, то перейти к нужному буферу
let g:fzf_buffers_jump = 1
" Горячие клавиши для файлов и буферов
noremap <C-a> :Files<CR>
noremap <C-p> :Buffers<CR>
Сейчас появился модный telescope.nvim, который делает нечто похожее, и там еще есть ряд наворотов. Если кто-то использует, напишите, пожалуйста, в комментариях, как вам?
Плагин ack.vim поиск внутри файлов
Например, вы работаете над проектом и вам нужно открыть функцию, которая содержит слово get_all, но вы не помните где и в каком файле она лежит. На gif-ке сверху идет поиск и открытие файла по этому слову, потом показан поиск по слову def. Или, например, у вас есть класс MyClass и вам надо быстро понять, где он используется.
Мои кое-какие настройки: по клавише F4 ищет слово под курсором, а по shift F4 выдает команду для поиска
" Поиск слова под курсором, воскл. знак, чтобы не было автооткрытия файла
noremap <F4> :Ack! <cword> --ignore-dir={static,logs,files}<cr>
noremap <S-F4> :Ack! --ignore-dir={static,logs,files}
Плагин deoplete.nvim (асинхронная автодополнялка)
Плагин deoplete.nvim - асинхронный автокомплит. Очень быстрый. Здесь список поддерживаемых языков программирования. Раньше я использовал coc.nvim для этих целей, но уже давно перешел на deoplete.nvim. Вот то, что в IDE есть из коробки, а в vim нужно немного поразбираться.
Плагин emmet-vim
Трудно даже описать, что делает emmet-vim, но время точно сильно экономит. Если в двух словах, он превращает аббревиатуру в код.
Смотрите на gif-ку с работой плагина. Я набрал html:5
+ ctrl y,
и получил:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
Дальше вставил список, ввел ul>li.my-class*>span
и получил
<ul>
<li class="my-class">
<span>один</span>
</li>
<li class="my-class">
<span>два</span>
</li>
<li class="my-class">
<span>три</span>
</li>
<li class="my-class">
<span>четыре</span>
</li>
</ul>
Все это заняло у меня несколько секунд.
Плагин surround.vim
Если понаблюдать за работой программиста, то можно увидеть, что громадная часть времени уходит на то, чтобы засунуть код в скобки или в кавычки или в какой-нибудь тег. Был код в фигурных скобках, надо эти скобки заменить на квадратные скобки, был в кавычках, надо вообще эти кавычки убрать. Почему бы не сделать это максимально быстро?
Плагин surround.vim - даст супер скорость в работе с обрамляющими кавычками, скобками и тегами. На гиф-ке видно, как это все работает.
О некоторых настройках
Навигация только через hjkl
Самая жесткая и кошмарная настройка, которую надо внести на первых порах это:
nnoremap <Left> :echoe "Use h"<CR>
nnoremap <Right> :echoe "Use l"<CR>
nnoremap <Up> :echoe "Use k"<CR>
nnoremap <Down> :echoe "Use j"<CR>
Отключаем стрелочки. По началу можно возненавидеть все на свете, каждый раз рука будет тянуться к стрелочкам и каждый раз получать сообщение, что, давай, используй hjkl
для навигации. Тут читал статью, что человек, который самостоятельно научился плавать и потом решил, чтобы ему поставили правильную технику профессиональные пловцы, будет в шоке, насколько ему неудобно, но это надо просто пережить, зато потом с правильной техникой он сможет плыть эффективнее, быстрее и дольше.
ESC как jj
До клавиши ESC тянуться достаточно далеко и не очень эргономично, так что выход из режима insert многие вешают на jj или на jk, кому как удобнее
imap jj <Esc>
P.S.
Хотел еще рассказать о других плагинах и настройках, но посмотрел и увидел, что мое графоманство довело меня до того, что статья получилась очень длинная. Так что в следующий раз напишу еще. Я не считаю себя гуру vim и есть вещи, с которыми бы мне хотелось разобраться.
Комментарии (175)
northzen
24.10.2021 20:21+1Статья хорошая, прямо с теми плагинами, которые нужны для старта.
Чего лично мне не хватает -- какого-то полного гайда того, как работать без мыши все время, абсолютно со всем что есть внутри окружения.
Кстати, выход и вход в режим ввода повесил на правый альт. До этого пользовался ctrl+], но понял, что такое двойное нажатие сильно портит опыт работы в Виме.Иногда надо консоль открыть и потыкаться, иногда файлы поперетаскивать, иногда браузер открыть, что-то в поиске вбить, почитать ответы и т.д.
И как-то не получается выстроить поток работы без мыши, сколько бы я не пытался.pcdesign
24.10.2021 20:31+1А я в браузере поставил этот плагин
https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb
Мышку практически не использую.
vtb_k
25.10.2021 01:06+1И как-то не получается выстроить поток работы без мыши, сколько бы я не пытался.
И не получится без емакса))))
Потому что вим — это только редактор текста, а емакс — это целая вселенная, с собственным терминалом, просмотром пдф, картинок, латекса, встроенным рсс ридером, почтовым клиентом, браузером и незаменимым орг модом. Проще перечислить, чего нету в емаксе, чем то, что есть. И одна простая причина, почему в емаксе все это есть — чтобы все управление у человека было одинаково, одна привычная модель управления без мышки. А если сверху поставить evil-mode то как раз получишь лучшие с двух миров.jt3k
25.10.2021 02:41У меня на одном проекте используется styled-components. Похоже, что не существует нормального способа подсветки этих чудо-конструкций, при этом чтобы там внутри корректно работали emmet-аббревиатуры.
Все плагины что я видел имеют баги.
Такая же ситуация с стулед-момпонентами и в sublime , к сожалению. Поэтому в ряде задач без редактора vscode не обойтись(
lrrr11
25.10.2021 04:07Потому что вим — это только редактор текста, а емакс — это целая вселенная
а чего из этого нет в vim? Просматривать почту можно с помощью notmuch, читать rss - можно найти пару плагинов (или загружать их скриптом в Maildir и см. п. 1), org mode имеется (neorg), просмотр картинок и т.п. - опять же никто не мешает настроить бинд на запуск какого-нибудь imv.
vtb_k
25.10.2021 08:44а чего из этого нет в vim?
Ничего, только сторонние решения. Вы используете для этого другие программы. Картинки в виме нельзя посмотреть даже в gui для неовима, потому что вим оперирует линиями текста, а емакс - пикселями. Я не говорю, что это плохо. Просто это другой подход, к которому стремится комментатор выше и которого не достичь с вимом. В емаксе, благодаря лиспу это все встроенно, имеет все привычные настройки, темы, кастомизации и так же легко разширяется благодаря лиспу
trokhymchuk
24.10.2021 20:33+3Неплохая статья, но я бы хотел её несколько дополнить, начну с преимуществ неовима перед вимом.
Прежде всего, это нативная поддержка плагинов не только на вимскрипте, но и на Луа. Луа не привязана к виму. То есть разрабатывая редактор, теперь нет нужды параллельно разрабатывать ещё и свой язык программирования.
Потом, в неовиме есть нативная поддержка ЛСП. это позволяет разрабатывать редактор отдельно от серверов для поддержки языка. То есть, как было раньше: для вима один плагин для поддержки условного Го, для емакса другой, для вскода третий. Теперь же вы разрабатываете лишь лсп-сервер, который будет един для всех реакторов, поддерживающих ЛСП. Самое большое преимущество --- теперь не надо вкладывать силы в поддержку всех редакторов. Если условный лсп-сервер разрабатывается в для одного редактора, он будет пригоден и для другого.
Ну и поддержка tree-sitter, более умная подсветка синтаксиса, indention.
Теперь о статье, точнее, о некоторых плагинах:
NERDTree --- я бы вам советовал посмотреть на nvim-tree.lua, аналог NERDTree, но на луа;
deoplete.nvim --- я организовал у себя автокомплит через lsp + nvim-cmp;
К слову, я удивлён, что вы не рассказали про ale, крайне хороший плагин.
Ну я советую посмотреть на конфиги на луа.
Rilkener Автор
24.10.2021 20:46+1Благодарю за добрые слова. Плагин ale я использую с вот такими настройками
" Конфиг ale + eslint let g:ale_fixers = { 'javascript': ['eslint'] } let g:ale_sign_error = '❌' let g:ale_sign_warning = '⚠️' let g:ale_fix_on_save = 1 " Запуск линтера, только при сохранении let g:ale_lint_on_text_changed = 'never' let g:ale_lint_on_insert_leave = 0
Хотел про него написать, но понял, что больно уж длинная получается статья.
На счет lua, а вот вы пишите на нем что-нибудь? Или используете исключительно для nvim?
trokhymchuk
24.10.2021 22:20На счет lua, а вот вы пишите на нем что-нибудь?
Не доводилось ничего кроме конфигов для неовима писать. Мне, как и большинству, понравилось.
Dreamka
24.10.2021 20:47+30Вы уж извините, но работа программиста заключается не в скорости написания кода, а придумывании правильных решений. И переключение между мышкой и клавиатурой не критично в контексте того сколько времени разработчик может обдумывать решение, наливая себе кофе или выходя в курилку. И vim здесь не даст ощутимого выигрыша во времени. А вот утверждение о том что vim по качеству можно сравнивать со штормом, как по мне несостоятельно. vim хорош для редактирования и написания. Могу предположить что данный инструмент (а это именно инструмент, для конкретных задач) подойдет девопсам, может быть тестировщикам, но никак не разработчикам. Например для работы с git мне придется выйти из vim в командную строку. В шторме я просто опускаю глаза вниз экрана [интересно это можно считать компенсацией потраченного на переключение между мышкой и клавиатурой времени?]. Ничего лучше продукции JBrains для разработки не придумано. Чисто субъективно. Можно и столяру подарить микроскоп, чтобы он им гвозди заколачивал, но зачем?
Rilkener Автор
24.10.2021 20:49+5Я не настаиваю и не призываю. Используйте то что считаете нужным.
Для git есть
avengerweb
25.10.2021 08:20+5А для чего вы тогда сравниваете с ide в посте? Например моя проиндексированный проект открывает за 1-2 секунды, а файлы даже большие за 0, ну и как плюс сама подскажет какие плагины мне нужны. (Не зря же 600 баксов в год подписка стоит) могу открыть 2-5 проектов на разных ЯП без перенастройки, и все равно за 0 секунд будет даже большой файл открываться. Когда я читаю посты хающие перформанс ide, ожидаю ссылочку внизу чтобы задонатить автору на железку
pcdesign
25.10.2021 08:29+1А вот здесь человек не поленился и провел любопытный тест
avengerweb
25.10.2021 08:53+15Открывать файл в несколько гигов и говорить что вим в этом кого то рвёт, ну крайне синтетический тест. Это как ламбу в бездорожье, и потом всем рассказывать что ваш дед на старой ниве обошёл спорткар за лям баксов
В статье конкретно говорится о написание программного кода, а не о разборе логов или дампов
TrashboxBobylev
25.10.2021 23:03+1Каким же идиотом нужно быть, чтобы написать код в настолько большой файл, чтобы vim был нужен?
NickSin
27.10.2021 16:55В данном контексте говорилось о логах, а не коде! Бывает надо посмотреть логи на серваке и лучше вима эти логи никто не откроет.
vya
24.10.2021 22:17Если десятипальцеаый метод работы с клавиатурой ещё не освоен, то преимущества вы не ощутите. Автор привёл очень яркую и качественную аналогию ручной коробки и автомата. Если можно кодить максимально продуктивно, почему этого не делать?
Dreamka
24.10.2021 22:26+13Написание кода требует меньше всего времени разработчика. Я правда не понимаю зачем пытаться ускорять именно процесс набора.
0xd34df00d
25.10.2021 00:53+3Это не про ускорение процесса набора, а про количество отвлечений. Если хотя бы базовые команды для работы с редактором лежат в механической памяти (а в случае с клавиатурой их туда положить проще), то вам не нужно отвлекаться на мелочи вроде «передвинуть курсор к закрывающей скобке», «выделить следующие пять строк и сдвинуть их на три уровня табуляции вправо» (V4j3> — я просто представил, что я в виме), «открыть файл рядом в сплите», и так далее.
К слову о вашем предыдущем комментарии —
Например для работы с git мне придется выйти из vim в командную строку. В шторме я просто опускаю глаза вниз экрана [интересно это можно считать компенсацией потраченного на переключение между мышкой и клавиатурой времени?].
Есть плагины и для гита, но работа с гитом составляет настолько малую часть времени в моей практике, что лично я даже не прикручивал их. Смысл-то?
Ничего лучше продукции JBrains для разработки не придумано. Чисто субъективно. Можно и столяру подарить микроскоп, чтобы он им гвозди заколачивал, но зачем?
Не для всех языков есть продукция JetBrains.
warhamster
24.10.2021 22:47+2Я бы сравнивал не с ручной коробкой, а с ручной регулировкой угла опережения зажигания, как на старых машинах. Дополнительная крутилка среди органов управления прикольно выглядит, дает дополнительный контроль над важным параметром работы двигателя, повышает чувство собственной значимости водителя, является единственно возможным решением ряда технических проблем на момент своего создания, и катастрофически снижает отдачу от двигателя, если использовать её на современной машине.
Ну правда, не напасешься же плагинов. Идешечка — это, кроме навигации по классам и файлам, еще и: дебаггер, умный рефакторинг, поддержка баз данных со всеми вытекающими плюшками при написании запросов, запуск тестов, и это только то, что первым в голову приходит, а есть ещё куча вещей, которые используются раз в неделю/месяц, но экономят массу нервов и времени. Плюс у текстового режима, при всей моей ностальгии, объективно ниже плотность информации из-за единственного моноширинного шрифта везде, и нельзя раскидать окошки по разным мониторам.
C4ET4uK
24.10.2021 22:50+3Потому что отказываясь от всей мощи IDE, можно выиграть в скорости набора текста, но вот в продуктивности - сильно не факт.
checkpoint
24.10.2021 22:22+1Отказ от мыша действительно ускоряет работу когда "мысль растекается по клавиатуре". Надеюсь, надеюсь Вам знакомо такое чувство ?
Dreamka
24.10.2021 22:37+6Знакомо. А еще знакомо чувство когда находяcm в одной IDE ты держишь под рукой все процессы (контроль версий, дебаг, несколько рабочих окружений и многое другое). А индексация? Одним кликом (или комбо клавиш) можно провалиться в метод и узнать откуда растут ноги у того или иного класса. А умное автодополнение на основе уже написанного (и возможно не тобой) кода. Возможно и для этого всего тоже найдутся плагины, но это уже больше похоже на франкенштейна. Я склонен считать что каждой задаче - свой инструмент и разработка не задача для vim, если только не разрабатывается какой то простенький однофайловый скрипт. Если бы из vim можно было бы собрать полноценную IDE - не было бы спроса на PhpStorm. Или вы считаете что люди платят за подписку JB только потому что не умеют использовать vim?
MentalBlood
24.10.2021 23:58+1люди платят за подписку JB только потому что не умеют использовать vim
Имхо, так думают большинство людей, сравнивающих vim с IDE
Немного странно, учитывая, что основные фичи vim -- многочисленные комбинации клавиш и быстрая навигация -- есть во всех современных IDE и даже редакторах вроде atom и vscode. Даже отдельные плагины для vim-style интерфейса есть
0xd34df00d
25.10.2021 00:56+1При этом вим реже тормозит (с точностью до плагинов), и комбинации клавиш в нём более нативные. Серьёзно, я пытался прикрутить хаскель к идее, и получилось нечто тормозное и жручее память. vim + haskell-language-server — всё летает.
Пользуясь случаем — аватарку будете обновлять?
MentalBlood
25.10.2021 09:22При этом вим реже тормозит (с точностью до плагинов)
Мда, помнится был странный опыт, когда поставил какую-то сборку вима, а оно заметно притормаживало… Что ж, будет нужда в хаскелле, попробую
аватарку будете обновлять?
Зачем, я же на хабре специально такую поставил, яркую, чтоб в глаза бросалась
vya
25.10.2021 00:31+1Видимо кому-то просто нет в этом необходимости, а мы тут навязываемся. ;) Если появится - сами придут к тому, что мышь режет скорость слепой десятипальцевой печати в разы. И сами найдут подходящий инструмент позволяющий это преодолеть. А потом научатся дебажить юнит тестами и долгим вдумчивым взглядом в логи.
Ta10s
24.10.2021 21:35Посоветуте, как перейти на vim тем, у кого основная раскладка клавиатуры — Dvorak.
У меня основная проблема — hjkl не под одной рукой, а если переназначать на домашний ряд — ломаются другие шорткаты.checkpoint
24.10.2021 22:18-1Я так поимаю, Вы ожидали этого вопроса - зачем Вам Dvorak ?
PS: Обхожусь без всяких плагинов около 30 лет, screen + vi - все что мне требуется для кодинга. Вместо мыша использую тачпад (он всегда под пальцами) если требуется копипастить из FireFox-а или других X-овых прикладух. В остальном, screen - и Библия и пища. hjkl в vi не использую, просто не вижу смысла - клавиатуры без esc и стрелок попадаются крайне редко (про Ctrl+[ надеюсь все знают).
yorgo
25.10.2021 01:21Ничего не менял и неудобств не испытываю. В Dvorak jk и hl довольно неплохо расположены, быстро привык. В остальном же vim не полагается на qwerty, так что переназначать - себе дороже, как мне кажется.
C4ET4uK
24.10.2021 22:37+11А скажите, пожалуйста:
NeoVim умеет показывать иерархию вызовов?
NeoVim умеет в рефакторинг хотя бы на пол шишечки как Idea? Ну там поиск дубликатов кода? Inline/Extract method? Хотя бы переименование полей с одновременным изменением getter-ов и setter-ов? Или весь рефакторинг заключается в find/replace?
NeoVim может мне показать, все места где поле класса пишется, но не читается?
У NeoVim'a есть нормальный анализатор кода, который подскажет тебе, что вот это условие всегда true, а эта переменная 10 раз пишется но нигде не читается?
А удобный инструмент для Debugging-a там есть?
Если хоть на один из эти вопросов ответ нет, то я пожалуй останусь на своей IDE.
Vim на мой взгляд это ультимативный способ ускорения набора текста, что безусловно кому-то может быть важно. Однако, современная разработка это по большей части чтение и анализ кода. Само по себе написание кода занимает лишь малый процент твоего времени. Если очень хочется его оптимизировать, то я бы использовал Vim-плагин для IDE, получив лучшее из двух миров.
P.S. Хотя мне почему-то кажется, что с учетом того, сколько времени я трачу именно на написание кода, те десятки часов который мне понадобятся на приемлемое освоение vim-a не окупятся приблизительно никогда.
Dreamka
24.10.2021 22:43+1Знать vim полезно, вникнув в него, действительно можно восхититься его удобством, как редактора кода/текста, но в том что он не заменит IDE полностью солидарен.
pcdesign
24.10.2021 23:01+1NeoVim умеет показывать иерархию вызовов?
NeoVim умеет в рефакторинг хотя бы на пол шишечки как Idea? Ну там поиск дубликатов кода? Inline/Extract method? Хотя бы переименование полей с одновременным изменением getter-ов и setter-ов? Или весь рефакторинг заключается в find/replace?
NeoVim может мне показать, все места где поле класса пишется, но не читается?
У NeoVim'a есть нормальный анализатор кода, который подскажет тебе, что вот это условие всегда true, а эта переменная 10 раз пишется но нигде не читается?
А удобный инструмент для Debugging-a там есть?
Nvim это просто голый редактор. В нем не может быть априори ничего из вышеперечисленного. Все эти пункты достигаются и настраиваются с помощью плагинов и линтеров. Если в плагинах что-то не устраивает или не нравится, можно накидать свое, это не сложно.
У вас будет полная свобода настроить и создать систему под себя.
C4ET4uK
24.10.2021 23:06Это я понимаю, я и спрашиваю, если его нафаршировать плагинами, как утку яблоками, неужели весь этот функционал можно будет получить, и оно будет работать хотя бы в половину так же хорошо как в полноценных IDE? У меня есть сильные сомнения по этому поводу.
По поводу настройки "под себя" та же Idea мало того что имеет крайне широкие возможности кастомизации плагинами, так и вообще OpenSource настраивай - не хочу.
pcdesign
24.10.2021 23:09Да, функционал получите. Работать будет отлично. Времени потратите много, чтобы со всем разобраться. Проблема исключительно в затраченных усилиях.
C4ET4uK
24.10.2021 23:20Ну вот я вижу вот такую статью на первых страницах гугла
chrisatmachine.com/Neovim/24-neovim-and-java/
И то, что я вижу вызывает у меня сильный скепсис по поводу, того, что Nvim сможет покрыть все возможности IDE. Если очень нравится vim мне кажется все-таки самое правильное решение это vim-plugin
Fortop
25.10.2021 15:29-1У вас будет полная свобода настроить и создать систему под себя.
Раздражает. Почему такие люди останавливаются только на vim/Linux/wtf?
Давайте вы сделаете собственную ткань, жить будете в доме из собственного кирпича, который вы сделали из лично вырытой глины.
Миром правит вот это.
Называется эта штука разделение труда.
Апологеты же вима предлагают вернутся куда-то в каменный век с аргументами каждому напилить свой каменный топор с блекджеком и шлюхами.
magic2k
25.10.2021 12:45-1Мое мнение что именно для java — ничего лучше Idea нет, хотя и можно подобное добавить в vim. Но для других языков, что я использую (c, erlang, ruby и go в основном) — vim (а точнее — emacs+evil) это совершеннее чем IDE от jetbrains, т.к. функционал что мне нужен — весь там есть, включая дебаггер. Для БД все же использую DataGrip -)
В Idea есть vim plugin, но и без него там много чего (если не все?) делается шорткатами.
Скорость набора текста или отвлечение на мышь, как написано в начале статьи — странное утверждение, значение имеет сколько мыслетоплива сжигается на взаимодействие с IDE. Тут то и надо выбирать что больше подходит. Для меня это emacs+evil(vim).
trokhymchuk
25.10.2021 19:14NeoVim умеет показывать иерархию вызовов
Типа такого?
NeoVim умеет в рефакторинг хотя бы на пол шишечки как Idea? Ну там поиск дубликатов кода? Inline/Extract method? Хотя бы переименование полей с одновременным изменением getter-ов и setter-ов? Или весь рефакторинг заключается в find/replace?
Где-то на четверть шишечки умеет, но за рефакторинг отвечает ЛСП.
NeoVim может мне показать, все места где поле класса пишется, но не читается?
Думаю, нет.
У NeoVim'a есть нормальный анализатор кода, который подскажет тебе, что вот это условие всегда true, а эта переменная 10 раз пишется но нигде не читается?
Неовим --- редактор кода. Он *не должен* иметь какой-то встроенный анализатор кода. Проблема решается при помощи ЛСП и какого-то линтера, подключаемого к неовиму путём расширения.
А удобный инструмент для Debugging-a там есть?
https://github.com/puremourning/vimspector
https://github.com/vim-vdebug/vdebug
Vim на мой взгляд это ультимативный способ ускорения набора текста, что безусловно кому-то может быть важно. Однако, современная разработка это по большей части чтение и анализ кода. Само по себе написание кода занимает лишь малый процент твоего времени. Если очень хочется его оптимизировать, то я бы использовал Vim-плагин для IDE, получив лучшее из двух миров.
Согласен, не стоит делать из вима серебряную пулю.
P.S. Хотя мне почему-то кажется, что с учетом того, сколько времени я трачу именно на написание кода, те десятки часов который мне понадобятся на приемлемое освоение vim-a не окупятся приблизительно никогда.
Вим легко учится, когда в нём есть необходимость, сам его освоил, когда надо было править огромное количество конфигов.
cjmarse
24.10.2021 23:32+2Рекомендую обратить внимание на lua сборку neovim, под названием LunarVim. Там все современные lua плюшки уже в комплекте (telescope, lsp...).
Я сам не люблю конфиг сборки со времён вима, но сначала посмотрев на ютубе очень понравилось и затем попробовав, втянулся.
В комплекте шикарнейший плавающий терминал по Ctrl+t, очень удобно и интуитивно.
Rilkener Автор
24.10.2021 23:37Спасибо. Обязательно попробую. А вы пишите на lua? И можете дать ссылку на видео?
cjmarse
25.10.2021 06:16+1https://youtu.be/NlRxRtGpHHk
На lua не пишу, по инструкции на сайте lunarvim.org вполне разобрался как добавить привычные мне родные опции вима в конфиг на lua.
yorgo
25.10.2021 02:32+1Vim часто неверно воспринимают как альтернативу IDE. Это ложная дихотомия. Vim - это прежде всего концепция нескольких режимов (навигации, выделения, редактирования) + максимальное задействование буквенной части клавиатуры без необходимости корёжить пальцы с
Ctrl-Shift-Alt-...
и подобными. Концепция эта может находить себя в различных реализациях:ed
,vi
,vim
,neovim
или плагин для IDE/браузера/текстового редактора.Примеры:
удаление слова с
Ctrl-Del
противdw
(cw
с переходом в режим редактирования)выделение текста мышкой против
v
/V
- переход в режим посимвольного/построчного выделения + навигация сhjkl
соединение нескольких строк в одну вертикальным выделением мышью и
Backspace
против выделения сV
иShift-j
замена текста внутри скобок выделением мышью или
Ctrl-Shift-←→
иDel
противci(
отмена последнего действия с
Ctrl-z
противu
повторение последнего действия с текущего положения курсора с помощью
.
даже сравнить не с чем
Другое дело, что и документация vim оставляет желать много лучшего (привет
vimtutor
), уделяя внимание таким вещам какd3l
(удалить 3 символа вправо от текущей позиции), которыми последний раз пользовались операторы каких-нибудь древних терминалов, когда от нажатия на клавишу до выполнения команды могло пройти пару десятков секунд.DirectoriX
25.10.2021 02:42+1отмена последнего действия с Ctrl-z против u
Esc u. Да и вообще всё время надо переключаться между режимами. А ещё большие буквы-команды — это, внезапно, не одна, а две клавиши, с корёженьем пальцев (V == Shift+v).
Надеюсь, всем известна шутка, что Vim любят барабанщики, а Emacs — пианисты?yorgo
25.10.2021 02:54Согласен,
Esc
неудобен. Многие переназначают наCaps Lock
. Я в итоге обошелся 60% клавиатурой гдеEsc
сразу надTab
.С другой стороны, согласитесь,
Shift
все же поближеCtrl
иAlt
.pecheny
25.10.2021 17:30Согласен, Esc неудобен. Многие переназначают на Caps Lock.
На что только не переназначают, один из популярных вариантов, которым пользуюсь – kj. У капса полно полезных применений: сейчас я переключаю им раскладку, но подумываю отказаться в пользу дополнительного клавиатурного слоя типа extend.
AlexanderAstafiev
25.10.2021 05:59До клавиши ESC тянуться достаточно далеко и не очень эргономично
Пытался пользоваться Emacs, NeoVim, Texadept даже, но остался на VS Code, точнее, Codium. Там есть много проблем, но они решаются гораздо легче, чем в емаксах и вимах.
Главное — это эргономика клавиатуры. Никакие конфиги не повысят Вашу эффективность, если Вы, во-первых, не осилите слепую десятипальцевую, во-вторых, не задумаетесь о том, что современные 105-клавишные клавиатуры в принципе не эргономичны, в-третьих, не будете использовать что-то кроме QWERTY.
Но тут оказывается, что на каком-нибудь Dvorak уже нет тех самых родных HJKL. Надо либо привыкать к беготне по всей клавиатуре, либо менять бинды, либо... использовать то, что уже давно было изобретено? Стрелочки? Клавиатура же эргономичная, значит, по определению должна быть удобна и для навигации, и для ввода текста. Навигация по файлу, работа с интерфейсом редактора и непосредственный ввод текста — все это разные задачи.
HJKL в Vim просто потому, что vi разрабатывался на терминале ADM-3A. Если есть вообще какие-то исследования, объясняющие, что расположение клавиш навигации в одну линию - удобно и естественно, буду рад изучить. Но мне проще всего пользоваться стрелками, расположенными крестом — не надо тратить время на переобучение, их расположение интуитивно понятно.
vya
25.10.2021 11:39+4На баше проскакивало: "Единственный интуитивно-понятный интерфейс это сиська, всему остальному надо учиться".
alex_gopher
25.10.2021 08:02Ок) а вот я например в джетбрейновских ide могу добавить базу данных и при написании запросов у меня будет автокомплит для названий таблиц и колонок. И если база достигает размера более 150 таблиц с очень странным неймингом колонок, то эта фича очень помогает. Это один пункт.
Второй пункт я могу кликнуть по функции и сразу найти места где она реализована и где она применяется, тоже касаемо интерфейсов, могу найти кем они реализованы и наоборот.
neovim сможет такое? Автокомплит там есть и насколько хорош?
avengerweb
25.10.2021 08:14+2Ща набегут и установят плагины вам в vim. Vim это конструктор (почитайте коменты), где каждый может написать свой плагин, главное чтобы было желание (как vs code только для
извраизбранных). Для автокомплита есть language-server стандартизированный протокол который позволяет добавить эту фичу в любую ide.
antonguzun
25.10.2021 09:32-1Для этого есть отдельная утилита, pgcli например. Странная мода тащить весь функционал в редактор, он становится похож на ОС по кол-ву функционала.
quillon45
25.10.2021 08:08Искренне не понимаю vi-адептов. Для домашнего пользования для текста и конфигов освоил прекрасный micro, для остального есть или nano, или VS Code и по нарастающей.
pmcode
25.10.2021 09:03+15Статья однобокая, как и большинство статей о vim. Вы перечисляете только его достоинства, но не недостатки. Ну вот, например:
В vim свой синтаксис регулярных выражений. Хуже или лучше не важно. Важно, что он нестандартный. Его либо придется учить, либо каждый раз пытаясь сделать замену в тексте вы будете забывать какие символы надо экранировать, а какие нет. Чтобы запутать людей еще больше к нему прилагается еще и magic mode. Теперь вам надо помнить не только отличия от стандартных regexp, но и отличия от magic mode. Здорово, правда?
В vim нет встроенного мультикурсора. Поддержка есть только в виде плагина. Вроде мелочь, ставь плагин и пользуйся? Но штука в том, что это не только довольно востребованный, но и сложный в реализации функционал, а плагины поддерживаются хуже самого редактора. В частности, старый vim-multiple-cursors был настолько глючным и тормозным, что пользоваться им было весьма затруднительно, и альтернативы ему никакой не было.
В vim нет команды
delete
. Весь удаленный вами текст помещается в буфер обмена, т.е.delete
в vim является эквивалентомcut
, потому что 40 лет назад программисты работали с одним окном терминала и удалять текст без возможности восстановления им в общем то было без надобности. Ну а так, вот вы только что скопировали особенно вкусный и заковыристый кусок кода со StackOverflow, который искали до этого целый час, и перед тем как вставить его по назначению решили немного подчистить место. Всё, буфер затёрся мусором, идите и копируйте заново. Я пользуюсь vim больше 10 лет и у меня до сих пор пригорает от этой фичи. Кстати, вот самый популярный ответ на StackOverflow. Оказывается всего то надо нажать эргономичную комбинацию"0p
, или не менее эргономичную"_dd
:) На самом деле лучше, конечно, поставить какой-нибудь плагин.В vim не все завязано на комбинации клавиш. Иногда приходится поработать с командами, которые бывают системные и пользовательские, соответственно. Ну и поскольку нэймспейсов никаких нет, то создателям редактора показалось удобным ввести правило, что системные команды будут писаться строчными буквами, а пользовательские пусть используют PascalCase. Лучи "добра" им за это. Еще один шедевр эргономичности, зато никаких конфликтов имён, да.
-
vim - это голая коробка. Чтобы наполнить ее полезным содержимым у вас уйдут недели. Даже если вы возьмете чей-то конфиг за образец, разбираться в нем все равно придется. Вас ждет увлекательное погружение в мир...
set noerrorbells
set novisualbell
set t_vb=
settm=500
... и прочих столь же полезных для современного редактора опций. И нет, в отличие от VSCode рядом не будет услужливого краткого описания для каждого пункта. Если что забыли, будьте добры каждый раз читать help.
Да, и потом еще надо:
найти нужные плагины;
доустановить для них зависимости (если требуется);
почитать документацию по каждому плагину и добавить настройки в конфиг;
интегрировать эти плагины их в свой workflow, потому что во многих случаях вы не захотите использовать дефолтные комбинации клавиш;
чинить все это по мере того как что-то будет отваливаться.
Можно конечно поставить какую-нибудь сборку типа SpaceVim, и допиливать ее, но я сомневаюсь что это даст большой выигрыш по времени.
Поэтому, как тут уже писали в 100500 раз:
Можно ли вести серьезную разработку на vim? Можно, так же как и в Notepad++, Geany и любом другом продвинутом блокноте со свистелками. Но средств навигации по коду, рефакторинга и статического анализа в vim многократно уступают средствам IDE или отсутствуют в принципе.
Сэкономит ли vim время при разработке? Нет, нисколько не сэкономит, потому что разработка это прежде всего навигация, рефакторинг и отладка, а не набор текста. Хитрое удаление всего текста между скобочек смотрится, конечно, очень красиво и поднимает настроение, но требуется довольно редко и времени потраченного на исправление ошибок, которых бы вы не допустили, если бы сразу пользовались IDE вам не компенсирует.
Для чего vim подходит хорошо? Просмотр и фильтрация логов, потому что vim супер производительный. Редактирование конфигурационных файлов, потому что не надо выходить из терминала, и вот тут как раз продвинутые возможности удаления и замены текста приходятся к месту и вполне себе помогают. Нестандартное редактирование текста при помощи макросов. Макросы это круто. Серьезно.
Имхо, разумеется.
pcdesign
25.10.2021 09:25+1В vim свой синтаксис регулярных выражений.
Да, но его не сложно освоить.
нет встроенного мультикурсора
Есть другой плагин для этого. Но мне привычнее просто это сделать командой.
В vim нет команды
delete
. Весь удаленный вами текст помещается в буфер обменаВы можете всегда посмотреть в каком именно регистре лежит нужный вам текст с SO
:registers
По моему, наоборот очень удобно, что все что поудалял находится в регистрах, всегда под рукой.
В vim не все завязано на комбинации клавиш. Иногда приходится поработать с командами, которые бывают системные и пользовательские, соответственно
Всегда можно все переопределить.
vim - это голая коробка. Чтобы наполнить ее полезным содержимым у вас уйдут недели
Согласен. Мне понравилось видео, которое автор указал в статье с заголовком "ответ всегда число". Каждый сам для себя может получить эти числа, которые нужны на освоение vim или заниматься другими делами.
yorgo
25.10.2021 11:44+1Сэкономит ли vim время при разработке? Нет, нисколько не сэкономит, потому что разработка это прежде всего навигация, рефакторинг и отладка, а не набор текста.
Набор нового текста везде одинаков. Vim силен прежде всего навигацией и редактированием уже существующего текста.
Хитрое удаление всего текста между скобочек смотрится, конечно, очень красиво и поднимает настроение, но требуется довольно редко и времени потраченного на исправление ошибок, которых бы вы не допустили, если бы сразу пользовались IDE вам не компенсирует.
Как я писал выше, vim, хоть и является отдельным приложением, но с равным успехом может использоваться и в виде плагина для IDE.
grigorra
25.10.2021 09:08/* никому не в обиду, только личные впечатления
я не программист, с ide не сравниваю в принципе
в чем-то могу быть не прав в силу недостаточного погружения, заранее прошу прощения */Лично для меня главный стимул опробовать vim/emacs - это проблема на клавиатурах современных ноутбуков на ощупь найти стрелки и использовать комбинации с home/end.
Специфичная навигация - не такая большая проблема, привыкнуть и проникнуться можно довольно быстро. Проблема - документация в стиле "кому надо, тот поймет", и при таком подходе вопрос "а точно оно мне надо?" возникает довольно скоро.
В тех же туториалах дают только базовую навигацию и ни слова про настройку. Вы, кстати, тоже решили опустить этот момент, просто перепрыгнув к перечислению плагинов. Ситуация, когда впечатленный статьей новичок попытается поставить lua-плагин на версию с vimscript - это фантастика, правда? Да, найти в интернете можно все, но: 1) нужно точно знать, что именно искать 2) интернет завален мусорными статьями.
Честно пытался полюбить emacs, но пока не зашло. Дефолтные настройки удручают. Коплю силы разбираться. Emacs изначально привлек командой execute-extended-command (M-x), что я воспринимаю как аналог command palette, полюбившийся в vscode как полноценная альтернатива хоткеям и меню.
Тот же VSCode вполне функционален из коробки, установка плагинов интуитивно понятна и без гугла.
Также я пытался в ютубе найти ролики с реальным использованием vim/emacs на живых примерах, чтобы проникнутся удобными ежедневными приемами, но то, что нашел, выглядит скорее "синтетическими" примерами.
Тем не менее, за статью спасибо.
P.S. Забавно, что в каждой статье про gnu/vim/emacs обязательно есть раздел с историей возникновения. Стабильность =)
magic2k
25.10.2021 12:58про емакс — попробуйте стандартный путь — Spacemacs -> Doom emacs -> свой конфиг на vanilla emacs. Может, все устроит уже на Doom и качество жизни возрастет :)
Ну и не лишним определить зачем вам емакс — обычно его ставят из-за org mode/ org-roam, а там уже и остальное подтягивается.lorc
26.10.2021 22:30Забавно, очень давно пользуюсь emacs. Точно больше 10 лет. Но org mode так и не заценил. Что в нем такого прекрасного?
magic2k
30.10.2021 17:47Я вместе с org-roam использую чтобы вести свою базу знаний, а так же текущий список дел просто в org. Org'овский трек времени в тасках (там как раз как мне нужен, до этого использовал timelyapp.com) С тех пор как начал еще и как IDE использовать (недавно), таски интегрируются с кодом, мне так удобнее и нагляднее. Я правда не уверен что оргом правильно пользуюсь, и точно много фич даже не знаю, просто для меня работает и я пока так и оставил.
SquareRootOfZero
25.10.2021 09:32Что сделать в deoplete, чтобы после автокомплита имени функции он начинал автокомплитить ее аргументы? Пользовался ncm2 для Питона, он всё делает (показывает список функций, потом список аргументов для выбранной функции), но, похоже, однопоточный и при этом дико тормозной — на какой-нибудь библиотеке с большим количеством функций первого уровня, вроде OpenCV, каждый раз фризит neovim секунд на десять, невозможно работать. Deoplete, похоже, не страдает этой проблемой, но че-то не могу найти, где у него подсказки по аргументам, а без них теряется весь смысл автокомплита — все равно ж в документацию лезть.
HellWalk
25.10.2021 10:16+1На мой взгляд ключевой момент здесь - сколько человек пишет кода за рабочий день. Одно дело, если 5 тысяч строк, и другое дело - если 100 строк. В первом случае ускорение набора кода повысит эффективность работы, во втором случае - толку будет ноль.
pcdesign
25.10.2021 10:23Хороший комментарий. Оперировать числами, а не эмоциями "нравится / не нравится". Еще можно учитывать перспективу.
ksenofobius
25.10.2021 10:36Не совсем так, вим в 1 очередь не для написания кода. В среднем, именно на написание, разработчик тратит в день не более 15 процентов времени. Остальное время - чтение и рефакторинг, в этом случае как раз normal mode + easy motion ускоряют навигацию
Dreamka
25.10.2021 10:58Это уже вопрос квалификации, если речь идет про разработчика. Можно сначала подумать, а потом написать 10 строк, а можно бездумно переписывать одно и то же место в поисках правильного решения по пол-дня. Во втором случае vim даст прибавку в скорости, но можно ли считать это повышением производительности? Врядли.
0xd34df00d
25.10.2021 21:17+1У меня есть проект на одном смешном языке из одних закорючек, на котором норма — этак 10-50 строк в день. И вот чтобы не отвлекаться на набор этих самых закорючек, я специально как-то потратил полчаса-час и настроил свою клавиатуру, чтобы минимизировать количество нажатий, чтобы эти самые закорючки были больше в мышечной памяти, и не отвлекаться на них.
kulikovDenis
25.10.2021 10:37+2Это пользовательский интерфейс из альтернативной реальности, как бы выглядело автоматизированное рабочее место программиста, если бы в 90х годах развалился бы не Советский Союз, а "загнивающий Запад".
ksenofobius
25.10.2021 10:39+2Где-то 2 года сидел на виме (из них месяца 3-4 на неовиме). Неовим + lua это прям новый шаг. Однако, если попробовать какой-нибудь емакс..понимаешь что в виме слишком много чего не хватает (и даже самого вима..что парадоксально, т.к. в evil его реализация более удобна и реализует многие очевидные вещи из коробки). Как минимум, тем кто сейчас планирует переходить с проприетарных редакторов, рекомендую попробовать оба варианта
StingerFG
25.10.2021 11:35+1Emma Roberts на скрине из сериала никак не соответствует заголовку статьи. Уж простите, что «додолбался».
morijndael
25.10.2021 12:10+2Бесконечно можно смотреть на три вещи - огонь, воду, и холивары про Vim :D
mibori
25.10.2021 16:43+1на счет воды и огня не понятно, но вот в холиварах часто проскакивают полезные ссылки и названия. Так что пусть будут :)
IhnatKlimchuk
26.10.2021 10:04Ну пусть развивают идею vim, может где очень пригодится. Если кому-то нравится и удобно, то я очень рад, серьезно. Разнообразие это хорошо. Не могут и не должны все мыслить одинаково, иначе мы зайдём в тупик. Просто напрашивается изменение одной шутки...
Vim это как член. Хорошо, что он у вас есть. Великолепно, если вы им умеете пользоваться. Но пожалуйста, не показывайте его моим детям.
Pavel1114
25.10.2021 15:11+1Не обязательно делать из vim IDE. Можно пользовать vim для мелких правок в одиночные файлы, а также для работы на удалённом сервере. Для больших же проектов, на мой взгляд, всё же лучше использовать IDE, где интеграция различных компонентом более полная. К тому же это не повод отказывать от преимуществ vim — к счастью существуют плагины для интеграции vim в IDE. Например, для Pycharm(и всех IDE от Jetbrains) есть замечательный ideavim. Но мне мало vim в редакторе, поэтому у меня и в браузере спец плагин и window manager i3wm (где я тоже настроил похожие клавиши для навигации). По итогу уже несколько лет даже не подключаю мышь (есть конечно touchpad, но я его я использую поминимуму — гораздо быстрее использовать различные горячие клавиши и комбинации из vim)
karon
25.10.2021 15:37Потратить n часов на изучение ситанксиса
Потратить m часов на установку плагинов
Получить 30% от функциональности ide.
Вместо того что бы ткнуть мышкой и открыть класс в дебагере и провалиться куда нить в словарь\мапу, пытаться ввести это вручную)Про подключение к базам, или внешним сервисам я даже не говорю
pcdesign
25.10.2021 16:22Получить 30% от функциональности ide.
Откуда это число?
karon
25.10.2021 16:27Если честно взято из головы.
По тому, что вы описали, это примерно 30% того, что используется мной при разработке, и идет из коробки. Про сложные кейсы. я даже не говорю.pcdesign
25.10.2021 16:35Я ничего не описывал.
А в целом: "Damnant, quod non intellegunt. - Осуждают то, чего не понимают. (Квинтилиан)
karon
25.10.2021 18:50Да виноват, перепутал вас с автором.
То что описал автор, это такие базовые вещи). При этом никто не хочет написать статью, как например интегрировать бд, линтер, или нормальный отладчик)) или если мы говорим про фулстэк, банально открыть картинку без переключения окон
А это базовый фугкционал))
vtb_k
25.10.2021 18:57У меня в емаксе все интегрировано и бд и линтер и тесты запускаю. Картинки, пдф, орг файлы — все открываю в емаксе. ЧЯДНТ?
pcdesign
25.10.2021 19:09Вы правы. Все эти вещи в статье пропущены. Линтеры надо устанавливать и настраивать. И lsp надо ставить. И все вышеперечисленное вами в nvim нуждается в настройке и установке. Это реально требует знаний. И боли. Но все что вы хотите, вы получите и даже с лихвой. Стоит ли оно того или нет, решать надо каждому своей головой.
vtb_k
25.10.2021 16:39Вместо того что бы ткнуть мышкой и открыть класс в дебагере и провалиться куда нить в словарь\мапу, пытаться ввести это вручную)
После обучения слепому набору, ваши советы выглядят очень смешно. Слава богу, все больше действий можно сделать без богомерзкой мышки. Для тех 0.5% случаев, когда нельзя что-то сделать с помощью хоткеев есть тач
IsUnavailable
25.10.2021 17:25А почему мышка "богомерзкая"?
Есть вещи которые удобнее совершать хоткеями, есть действия которые удобней делать мышкой.
Не раз встречаю людей которые плюются на мышку, но никак не могу понять чем же она так не угодила?
vtb_k
25.10.2021 17:39+1Тем, что надо ее искать, отрывая руки от клавиатуры. Это сбивает с мыслепотока. А еще много программ на мышку ориентированы, а я чувствую себя дико медленным, когда надо ее использовать. Как пересесть с феррари на копейку. С емаксом+evil-mode я могу сконцентрироваться на коде, фактически материализуя свои мысли. Так я максимально продуктивен. Мышка — это всегда переключение контекста.
karon
25.10.2021 18:47-1Я видимо тупой и хреновый программист))
Даже если я буду печатать одним пальцем, скорость разработки у меня не сильно изменится))
А вот возможность иметь несколько окон в рамках одного проекта даст жффект гораздо выше))
Я отлаживался через gdb на консоли)) и никогда не будет это быстрее чем мышкой в ide.
Хотя 10 пальцевым владею
vtb_k
25.10.2021 18:55А вот возможность иметь несколько окон в рамках одного проекта даст жффект гораздо выше))
Что вам мешает имет ьнесколько окон в вим/емакс?
Я отлаживался через gdb на консоли)) и никогда не будет это быстрее чем мышкой в ide.
Я не помню, когда я вообще что-то отлаживал в gdb/pdb и тд. Зачем мне это делать? Я пишу тесты для логики перед реализацией фичи. Потом запускаю тест и смотрю, что мне нужно реализовать. Иногда 2-3 итерации проходит, пока тесты не позеленеют.
Aldrog
25.10.2021 19:09+1Я тоже не очень люблю отладчики, но определённый класс багов в сколько-нибудь большом проекте без них практически невозможно отловить.
Раньше даже запускал CLion специально чтобы поотлаживать, но потом осознал, что это полная дичь и освоил-таки CLI gdb :)vtb_k
25.10.2021 19:11Так я не на плюсах, я на го/раст и питоне работаю, поэтому отладчиком ну очень редко пользуюсь
Dreamka
25.10.2021 22:15Тем, что надо ее искать, отрывая руки от клавиатуры. Это сбивает с мыслепотока.
А говорят - "Умные мысли не рвутся". Если такое простое действие способно вас сбить с мысли, то может быть стоит задуматься о смене профессии?
vtb_k
26.10.2021 07:16Если такое простое действие способно вас сбить с мысли, то может быть стоит задуматься о смене профессии?
Может перед тем, как мне советовать что-то, стоит попробовать это? Не пробовал, но осуждаю?
Dreamka
26.10.2021 11:40Так я и секс с мужчинами не пробовал. Полагаете это тоже надо попробовать чтобы понимать что это не мое?
vtb_k
26.10.2021 11:43Обязательно попробуйте, может тогда перестанете раздавать всем свои "умные" советы
Aldrog
26.10.2021 11:50Извиняюсь, а вы и на гей-форумы регулярно заходите и пишете там, что они неправильно всё делают, от такого секса никакого удовольствия нет?
DirectoriX
26.10.2021 06:20-1надо ее искать
Не надо, она точно там же, где вы её оставили.А еще много программ на мышку ориентированы
В XXI-то веке? Ну да, конечно.я чувствую себя дико медленным, когда надо ее использовать
В старые Windows специально включали всякие сапёры-косынки, чтоб пользователи привыкли эту странную стрелочку по экрану двигать, да объекты перетаскивать. Может, вам тоже стоит попробовать? Компьютерные игры правда очень хорошо развивают мышемоторные навыки.С емаксом+evil-mode я могу сконцентрироваться на коде, фактически материализуя свои мысли
Если вам нужно исключительно набирать и удалять символы кода — конечно.vtb_k
26.10.2021 07:20В старые Windows специально включали всякие сапёры-косынки, чтоб пользователи привыкли эту странную стрелочку по экрану двигать, да объекты перетаскивать. Может, вам тоже стоит попробовать? Компьютерные игры правда очень хорошо развивают мышемоторные навыки.
Я тут обсуждаю исключительно рабочий процесс. В игры я мышкой играю, "мышемоторные" навыки у меня может и получше ваших.
Не надо, она точно там же, где вы её оставили.
В слепую, не отрывая взгляд от экрана ее нужно всегда искать.
a1111exe
26.10.2021 11:59В слепую, не отрывая взгляд от экрана ее нужно всегда искать.
Почему? У меня перемещение руки на мышь, стрелки и End происходит рефлексивно, без отвлечения внимания.
P.S. Два года работал под Emacs, потом какое-то время под Vim, в итоге сегодня разработку предпочитаю делать в средах JetBrains, отдельные задачи редактирования под Vim.
vtb_k
26.10.2021 12:08Почему? У меня перемещение руки на мышь, стрелки и End происходит рефлексивно, без отвлечения внимания.
Потому что у меня 2 ладони постоянно на клавиатуре, а не на мышке. Если мышь не использовать, то и рефлексов для ее поиска не будет. Когда надо использовать мышь, я ее взглядом нахожу и не отпускаю потом, но использую я ее только в играх
a1111exe
26.10.2021 12:27Потому что у меня 2 ладони постоянно на клавиатуре, а не на мышке.
Так и у меня по умолчанию обе руки на клавиатуре, а не на мышке.
Если мышь не использовать, то и рефлексов для ее поиска не будет. Когда надо использовать мышь, я ее взглядом нахожу и не отпускаю потом, но использую я ее только в играх
Мне непонятно, откуда берётся поиск. Вы говорите "если мышь не использовать рефлексов не будет" и тут же "когда надо использовать нахожу". Т.е., мышь используется. Зачем её искать взглядом? Вот я сижу перед монитором, руки на клавиатуре, мышь справа около клавиатуры. Периферийным зрением мне видно и клавиатуру, и мышь - без необходимости что-то искать взглядом. Но специально сейчас проверил: закрыл глаза и поперемещал ладонь между клавиатурой и мышью - работает. У Вас, наверное, какая-то сильно другая конфигурация размещения клавиатуры и мыши, раз последнюю приходится искать.
vtb_k
26.10.2021 12:32Мне непонятно, откуда берётся поиск. Вы говорите "если мышь не использовать рефлексов не будет" и тут же "когда надо использовать нахожу". Т.е., мышь используется. Зачем её искать взглядом? Вот я сижу перед монитором, руки на клавиатуре, мышь справа около клавиатуры. Периферийным зрением мне видно и клавиатуру, и мышь — без необходимости что-то искать взглядом.
У меня мышь находится в самом углу стола, потому что я ее использую только для игр. Вообще чаще всего я работаю на диване или пуфике с ноутом на коленках, поэтому мыши рядом нету. совсем.
a1111exe
26.10.2021 12:45Вообще чаще всего я работаю на диване или пуфике с ноутом на коленках, поэтому мыши рядом нету. совсем.
Тогда понятно. Спасибо.
Yser
25.10.2021 19:08+1Пользуюсь Вим на серверах, по необходимости, с тех пор как рахобрался как из него выходить :)
Ради интереса прошелся по вашему списку плагинов в контексте PHPStorm (думаю ситуация верна для всех продуктов компании)Плагин Tagbar (навигация внутри файла)
Alt + 7
Плагин NERDTree (навигация по дереву папок и файлов)
Alt + 1
Плагин fzf - нечеткий поиск по именам файлов
Ctrl + N / Ctrl + Shift + N
Плагин ack.vim поиск внутри файлов
Ctrl + F / Ctrl + Shift + F
Плагин deoplete.nvim (асинхронная автодополнялка)
Плагин emmet-vim
Просто работает
Плагин surround.vim
Ctrl + Alt + T
ПыСы. В контексте ПХП - ни один из редакторов / ИДЕ не научился расставлять запятые и долбаные точки с запятой, в зависимости от контекста, так хорошо как это делает PHPStorm. CTrl + Shift + Enter и у меня нет раздражения от использования софта.
IhnatKlimchuk
26.10.2021 09:47+1Я вот считаю что моноколесо лучше чем велосипед, мотоцикл и даже автомобиль. Научиться очень просто, надо только найти тренера (их 2 в СНГ) или просто зайти на форум моноколесоводов, там все детально написано. Велосипед не такой маневренный, я вот умею на месте разворачиваться. Просто не у всех получается сразу, надо просто потренироваться некоторое время, чтобы мышечная память появилась. Мотоцикл быстрее, но очень тяжёлый и тормозит когда пытаешься заехать в лифт. Я добавил моторчик от газонокосилки с цепью и солнечную батарею для зарядки телефона. На одном колесе могу намного быстрее передвигаться в пробках чем все эти автомобили, а расход резины в 4 раза меньше. Только обидно что комьюнити маленький, реально же лучшее средство передвижения из созданных.
(Тут очень много сарказма и гиперболизации, заранее прошу прощения)
vtb_k
26.10.2021 11:23Только обидно что комьюнити маленький, реально же лучшее средство передвижения из созданных.
А вот тут вы серьезно промахнулись, коммюнити у вима или емакса просто гигантское, по сравнению с любой иде
gg_co
26.10.2021 12:19+1На память приходят такие фильмы:
Самый быстрый Indian
Ford против Ferrari
Гонка (2013)
Во всех них, гонщик = механик. Сам в своей машине разбирается и ее собирает и подстраивает. Купили бы готовую машину, да и все, вот же глупые люди.
Люди, которые изучают vi*, хотят знать свой инструмент, с тем c чем им приходится работать. И не только знать, но и пытаются его улучшить, подстроить под себя, почти как гонщик и автомеханик в одном лице. Такая аналогия.
Ну а люди, которые юзают ide живут по принципу, ну что дали, то я и ем. И ладно бы просто ели, так нет же ведь приходят и начинают других учить жизни. Это просто удивительно.
Dreamka
26.10.2021 12:28Проблема только в том что кино отличается от жизни. В жизни механик и гонщик - разные люди. Один хорошо умеет разбираться в системах автомобиля, второй хорошо управляет этим автомобилем. Просто представляю как на питстопе гонщик выходит из болида и начинает его обслуживание. Каковы его шансы победить в такой гонке?
gg_co
26.10.2021 12:47+2Ники Лауда был механиком и в реальной жизни и в кино. Умер совсем недавно. Остальные фильмы тоже.
Любой профессиональный гонщик, может разобрать машину до винтика и собрать.
И профи в vi*, тоже понимает, что у него под "капотом".
Не хотите разбираться, хотите просто ездить, да, пожалуйста. Другим только не мешайте.
a1111exe
26.10.2021 13:00-2Ну а люди, которые юзают ide живут по принципу, ну что дали, то я и ем.
Не хотите разбираться, хотите просто ездить, да, пожалуйста.
Вот Вы, наверное, не живёте по принципу "что дали, то и ем", а досконально разбираетесь в кишках всего, чем пользуетесь, собирая и затачивая все инструменты под себя. Т.е., и операционную систему компилируете из исходников, предварительно изучив их и отредактировав параметры конкретно под своё железо и свои предпочтения. Можно поинтересоваться, какую конкретно операционную систему Вы используете?
Другим только не мешайте.
Кто мешает-то?
gg_co
26.10.2021 13:09+2Делаю то, что считаю нужным. Других жизни не учу. Знаю как работает Linux & vim. Мне лично нравится разбираться в своем рабочем инструменте. Не вижу в этом ничего плохого.
А мешают люди с дилетантскими комментариями, которые сами в предмете не разбираются, но что-то пытаются кому-то доказать.
a1111exe
26.10.2021 13:40-2Других жизни не учу.
Ну, это как посмотреть... Высказывания в духе "молчите, неразборчивые дилетанты" намекают на обратное. :)
Мне лично нравится разбираться в своем рабочем инструменте. Не вижу в этом ничего плохого.
Тоже не вижу в этом ничего плохого. Но давайте будем честными: если "люди, которые юзают ide живут по принципу, ну что дали, то я и ем", то и люди, которые просто юзают ОС (не компилируя из внимательно изучаемых исходников) тоже живут по принципу "что дали, то и ем". Что люди, которые используют компьютер, не пытаясь досконально разобраться в устройстве его компонент, не осваивая способы пайки на печатных платах, не осваивая схемотехнику и физические принципы работы транзисторов и т.д. - тоже живут по принципу "что дали, то и ем".
А мешают люди с дилетантскими комментариями, которые сами в предмете не разбираются, но что-то пытаются кому-то доказать.
Если Вы спокойно работаете себе под (или разбираетесь в) собственноручно собранными системой линукс (LFS, да?) и редактором Vim, и, внезапно, вопреки Вашему желанию, закрывая Vim открывается страница Хабра на комментарии с критикой использования Vim, то да, мешают.
Но если Вы сами по своей воле заходите в холиварное обсуждение и начинаете возмущаться мнениями, отличающимися от Вашего, то это не публикация этих мнений мешает Вам разбираться в своих инструментах или работать с ними, а что-то совсем-совсем другое. :)
Aldrog
26.10.2021 14:08Но если Вы сами по своей воле заходите в холиварное обсуждение и начинаете возмущаться мнениями, отличающимися от Вашего, то это не публикация этих мнений мешает Вам разбираться в своих инструментах или работать с ними, а что-то совсем-совсем другое. :)
Вот я зашёл сюда в надежде почитать об интересных плагинах и о настройке Neovim. Если бы тут была адекватная критика vi*, тоже было бы интересно.
Но нет, большинство комментариев здесь — просто бесполезные высказывания в духе «не пробовал, но осуждаю». От хабра хотелось бы чего-то большего ожидать.
gg_co
26.10.2021 14:16+2Ну, это как посмотреть... Высказывания в духе "молчите, неразборчивые дилетанты" намекают на обратное. :)
Вы переиначили мои слова. Но вообще, давайте холодно подойдем к этому. Большинство негативных комментариев строятся по принципу: «Не читал, но осуждаю!». Попробовать vim - сравнивают даже с однополым сексом, в комментах выше. Разве это не дилетантские комментарии? Как их можно еще назвать? Это вообще что должно быть у человека в голове?
Но давайте будем честными: если "люди, которые юзают ide живут по принципу, ну что дали, то я и ем", то и люди, которые просто юзают ОС (не компилируя из внимательно изучаемых исходников)
Нормально до тех пор, пока они не придут на гитхаб или еще куда-нибудь и не начнут высказывать свое "мнение". Я же не хожу на форум эндокринологов и не пытаюсь навязать им свое мнение о гормонах. Данный хаб называется "vim". Имеет смысл разбираться в предмете.
Но если Вы сами по своей воле заходите в холиварное обсуждение и начинаете возмущаться мнениями, отличающимися от Вашего, то это не
Я не испытываю по этому поводу никаких эмоций. Написал то что думал. И написал для людей, которые возможно хотят попробовать vim.
DirectoriX
26.10.2021 18:54-3В комментариях приводят и объективную критику, например:
- для создания из vim (который в чистом виде — блокнот) аналога готовой IDE надо или искать готовые сборки, или самому заниматься конфигописательством, понаставив не один (а может и не один десяток) плагинов и потратив не один час (а то не один день). В ответ обычно слышно что-то вроде «Ну зато один раз помучаешься 15 часов на освоение vim + 40 часов на настройку, зато потом будешь не отрывая рук от клавиатуры удалять три слова вправо от курсора».
- vim-фанаты настойчиво не хотят замечать, что vim-навыки слабо распространяются на не-vim (особенно если пользоваться Windows) — тестовые процессоры (типа MS Word), табличные, фото-, видео- и аудио-редакторы, почтовые клиенты, даже с браузерами не всё так однозначно.
- vim-фанаты постоянно в плюсы приводят «можно не отрывая рук от клавиатуры делать всё», незаметно умалчивая, что значительную часть времени приходится думать (если вы, конечно, не просто перепечатываете текст). Если вы думаете, не отрывая рук от клавиатуры — вопросов нет.
- (моё любимое) vim-фанаты постоянно говорят, что vim-комбинации позволяют суммарно нажимать меньше клавиш, но при этом забывают про бесконечные переключения режима, про то, что большие буквы требуют нажатия двух клавиш, что клавиши привязаны не на все действия (ряд из них можно активировать только вводом команд) и так далее. А в пример обычно приводят какие-то странные действия, например «удалить 4 строки вниз от курсора».
Но увы, vim-фанаты обычно не менее настойчивы и глухи к аргументам, чем vim-ненавистники…vtb_k
26.10.2021 19:36+4Вы комментируете под темой, где пользователь вима делится своей конфигурацией, настройками и лайфхаками с другими пользователями вима и рассказываете тут про фанатизм? Может стоит сходить к психологу, а то у вас явно какая-то мания преследования. Вам что с помощью вима виндоуз взломали? Почему такая ненависть к редактору текста?
DirectoriX
26.10.2021 21:00-1У меня нет никакой ненависти ни к vim, ни к его простым пользователям. Если вам нравится vim или какой-нибудь другой инструмент тридцатилетней давности — пользуйтесь им на здоровье. Если нравится что-то другое — пользуйтесь другим, пожалуйста.
Но тем не менее:
Про «делится конфигурацей и лайфхаками» — а вы не задумывались, зачем вообще есть такие статьи? А просто потому что vim сложный во всём.
Почему под статьями типа «15 плагинов для разработки на languagename в VS Code» много комментариев вида «опять смесь общеизвестных и никому не нужных плагинов», а под vim-статьями такого нет? Потому что для настройки vim нужно читать доки. Конкретный пример: сравните объём инструкций по установке настройке rust-analyzer для работы с VS Code и с vim (который из коробки даже не понимает, как работать с lsp) — ссылка. К слову о сообществах и фичах: всё могучее сообщество vim за все эти годы не придумало lsp, его сделала Microsoft именно для VS Code.
Почему под каждой vim-статьёй начинается срач «vim против мыши»? Потому что подавляющее большинство vim-фанатов прямо заявляют, что vim быстрее мыши, но не могут привести адекватных примеров использования, для которых нет сравнимых по скорости аналогов. Единственное, что удалось придумать коллективными усилиями — работу с гигантскими файлами, но это не очень похоже на разработку ПО, скорее на администрирование или мониторинг.
Почему на мой предыдущий комментарий никто (пока) не дал внятных ответных аргументов? Потому чтоvim-фанаты обычно не менее настойчивы и глухи к аргументам, чем vim-ненавистники
.pcdesign
26.10.2021 21:07+2Почему на мой предыдущий комментарий никто (пока) не дал внятных ответных аргументов?
Да, просто лень отвечать на всю ту чушь, что вы написали. Вам никто и ничего не должен.
DirectoriX
26.10.2021 22:02-1лень отвечать
Подозреваю, что сложно найти опровержение, когда прям на этой странице есть слова, подтверждающие мои:- про время/сложность настройки: сама статья (хотя бы её размер) +, например, этот комментарий.
- про не-vim: ну вот, например, про браузер. Обратите внимание, что на странице плагина в ответном комментарии, автор vim-навигации для Chrome использует мышь во время настройки. Какая досада.
- про печать не отрывая рук: буквально половина комментариев от vim-фанатов на этой странице.
P.S. быть фанатом и фанатиком — разные вещи.
Neikist
26.10.2021 23:11Ну вообще, хоть вим и не использую (для мобильной разработки не выйдет нормально, писал бы бекенды/веб фронтенды — может подумал бы об использовании), но с трудом уже представляю как можно жить без ideavim плагина. Ибо это реально очень удобно.
Просто однажды из интереса посидел часик в vimtutor и на следующий день на рабочем компе поставил плагин для idea. С тех пор мне уже трудно представить свою работу без него. Иногда по необходимости открываю другие IDE которые у меня не настроены и ideavim не установлен (ибо ради того чтобы запустить раз в пару месяцев настраивать лениво) и прямо боль испытываю.
Хотя нет, вру, использую вим, но он у меня вообще чистый без всяких плагинов, когда какие то конфиги поправить надо.
И да, это реально удобнее чем к мыши тянуться. Я и до того как плагин начал использовать навигацию хоткеями и стрелками осуществлял (shift/ctrl+arrow), мышь использовал по минимуму ибо раздражало постоянно руку с клавы на мышь и обратно перемещать, но с вим плагином все стало куда удобнее.
vtb_k
27.10.2021 01:10А просто потому что vim сложный во всём.
Я понял причину вашей ненависти. Раз вы не смогли осилить вим, его никто не должен использовать.
Дальнейший психоанализ мне не интересен, прошу мне больше не отвечать.
DirectoriX
27.10.2021 02:31То есть vim не сложный? И даже не надо никаких vimtutor'ов запускать, чтоб научиться делать элементарные вещи? Неужто автор статьи нам наврал?!
вы не смогли осилить вим
Я осилил ровно настолько, насколько считаю нужным — и да, мне для него достаточно лишь уметь внести базовые правки, сохранить и выйти (ну или выйти без сохранения). Я честно пробовал им попользоваться, но, видимо, я слишком молод и UI-приклеен для этого. И да, я пользуюсь горячими клавишами в своей VS Code.его никто не должен использовать
Я этого не говорил нигде. Если найдёте — приложите ссылку на комментарий, пожалуйста.Дальнейший психоанализ мне не интересен
Ну вот, думал, что говорю с айтишником, а мне психоаналитика подсунули :(
pcdesign
27.10.2021 08:52Я честно пробовал им попользоваться, но, видимо, я слишком молод и UI-приклеен для этого. И да, я пользуюсь горячими клавишами в своей VS Code.
Спасибо за информацию. Держите нас в курсе.
0xd34df00d
26.10.2021 22:25+3для создания из vim (который в чистом виде — блокнот) аналога готовой IDE надо или искать готовые сборки, или самому заниматься конфигописательством, понаставив не один (а может и не один десяток) плагинов и потратив не один час (а то не один день)
Ок, предложите IDE, которая даст мне фичи вроде этих. Особенно case splitting and hole-driven development интересно.
DirectoriX
28.10.2021 03:30А вы пробовали VS Code + это расширение? Судя по картинкам и их описаниям — это примерно то, что вы ищете, да ещё и официальное.
0xd34df00d
28.10.2021 21:35+1Кстати, буквально пару недель назад ради интереса пробовал. Расширение не завелось, haskell-language-server не подцепило, куда оно там логи выдаёт — непонятно, так что я через 10 минут ковыряния удалил vscode обратно. К слову, обратите внимание, тоже надо ставить плагины, настраивать их, и так далее — так в чём разница?
Ну и да, даже если бы завелось, отвалилось бы два юзкейса:
- Интеграция с nix — это когда у вас для проекта зафиксированы не только хаскелевские библиотеки (что и так делается пакетным менеджером), но и, скажем, сишные зависимости.
Я тут попиливаю сейчас пару проектов, которые плотно используют nix для воспроизводимого окружения сборки-разработки. В случае vim'а после того, как я делаю cd в директорию с проектом, специальный хук для моего шелла подгружает специфичные для проекта пути ко всем нужным зависимостям, бинарям, версиям компилятора, и так далее, и всё это автоматически видится vim'ом. Как бы это работало с vscode — неизвестно. - Работа через ssh. Вот вчера у меня что-то к вечеру заболела спина, я отошёл от настольного компьютера, взял ноутбук, лёг на матрас, ssh'нулся на настольную машину и продолжил ковырять проект.
- Интеграция с nix — это когда у вас для проекта зафиксированы не только хаскелевские библиотеки (что и так делается пакетным менеджером), но и, скажем, сишные зависимости.
pcdesign
28.10.2021 21:54@0xd34df00d,хотел спросить на счет ssh. Я всю жизнь юзаю ssh, подключаюсь к удаленной машине, ставлю там tmux + vim и работаю (раньше был screen). Но иногда бывает машина уже очень старая, современный nvim со всеми пирогами туда не поставить и приходится довольствоваться старьем. Попадали в такие ситуации? Использовали локальный vim?
0xd34df00d
28.10.2021 21:57+1Да, бывало пару раз. У меня поэтому конфиг на vimscript и обратно совместимый с вимом (с точностью до пары плагинов, которые точно не понадобятся на тех машинах, где нет возможности поставить neovim).
Олсо, я не осилил undercurl'ы вместе с tmux + konsole (не знаю, кто из них виноват), поэтому теперь юзаю голый kitty.
vtb_k
28.10.2021 23:30Попадали в такие ситуации? Использовали локальный vim?
Может конечно это не будет актуальный совет, но в емаксе есть tramp-mode, это ssh на удаленный хост не выходя с емакса, тмукс не нужен и даже автокомплит работает, хотя и не особо шустро.
romwhite
05.11.2021 22:57Вставлю свои пять копеек:
удобно переназначить CTRL на CAPS-Lock;
Переназначить переключение рус-англ. раскладки на Ctrl-A в режиме вставки;
Выход из режима вставки по дефолту на <Ctrl-[> Быстро привыкаешь, двумя мизинцами.
lrrr11
если это статья про neovim, то она устарела на несколько лет, сейчас все не так.
Neovim сейчас переводят с vimscript на Lua, соответственно конфиг и все плагины должны быть на этом языке.
Главные плагины, с которых надо начать - это lsp, telescope, treesitter, и что-нибудь для асинхронного автокомплита, лучше всего nvim-cmp. Далее на них уже навешивается все остальное, от fzf до тем оформления. Вот например тема, поддерживающая все эти фичи: https://github.com/Pocco81/Catppuccino.nvim
pcdesign
На счет lua. Мне нравится идея перенести свой конфиг (.vimrc), который состоит из 100500 строк в отдельные файлы. Навести порядок и еще получить больший прирост производительности. Но меня смущает, что надо хоть немного знать lua. Кто-нибудь прошел этим путем?
По поводу lsp - он ведь используется в ассинхронном deoplete.nvim, без него он работать не будет.
Если есть telescope, разве нужен fzf?
И статья в целом хорошая, особенно для новичков и как tutorial.
shiftdevy
Lua для неовима достаточно лёгкий. Самое главное - знать, как вызывать сторонние плагины и как работать с таблицами, остальное подтянется по мере пользования. Есть плагин-компаньон, который натягивает на lsp Lua API неовима с документацией. Есть довольно-таки много активно разрабатываемых "готовых" конфигов, по типу NvChad, doom-nvim.
Rilkener Автор
Я вот всегда старался избегать "готовых" конфигов / сборок. Мне казалось, что во-первых я теряю контроль над ситуацией, во-вторых было ощущение, что мне втюхивают в довесок то, что мне не нужно.
Я вижу явный профит от использования lua + nvim, но не вижу, красивого и простого решения.
HelpOrMe
lua это язык который учиться за 15 минут
NickSin
ага, а потом он же выкладывает видео как выучить Lua за час)