All streams
Search
Write a publication
Pull to refresh
16
0
Дмитрий @deitry

программист

Send message

Само приходит. Почему — сие неведомо.


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


  • Хотим переименовать улицу, какое название лучше? 1. Путинская 2. Медведевская
  • Если всех обяжут надевать маски, вы будете это делать? 1. Да 2. Так точно

Вопросы были незначительные, варианты ответа — тем более, но за них можно было получать некие баллы, которые можно было конвертировать в проездной и/или чё-то там ещё.


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

Ну что Вы, vim и nano некошерно сравнивать. Если проводить какие-то параллели, скорее между vim и less, у которых / включает поиск, а q символизирует выход.


eumorozov
В vim'овских хоткеях есть своя логика, это да, но касательно


большинство сочетаний клавиш IDE — не мнемонические

есть некоторый минимальный "стандарт" комбинаций типа Ctrl+стрелки как перемещение между словами, Ctrl+F, Ctrl+Del/Backspace, который поддерживается не то что в большинстве редакторов, но и в большинстве приложений вообще.


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

Кстати, типичная рабочая задача — посмотреть git diff файла.
В VS Code (хоткеи могут не совпадать со значениями по умолчанию):
С предыдущей версией: Ctrl + Shift + G
С произвольной веткой: Ctrl + Shift + F1, выбрать ветку из списка, Enter


А в vim скорее всего надо будет делать вызов команды, которой ещё нужно передать путь до файла, и вспоминать как ветка называлась.

У меня Ctrl + Q. Поскольку оригинальную комбинацию забыл, то чтобы не сбивать с толку если вдруг кто-то полезет эту инструкцию проверять, на всякий случай умолчал.

Поделитесь секретом?


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


(Да, я посмотрел, что у Вас в хабах C# или .NET не значатся, вопрос в большей мере риторический.)

Нормальная задача. Вот прямо сейчас, при попытке сборки:
MyApp.cs(1425,76): error CS1061: 'Document' does not contain a definition for 'DocuumentInfo'


Omnisharp вовремя не подсветил, проклятый MSBuild пишет путь относительно проекта, а не от того места, где VS Code открыт, поэтому нельзя просто перейти по Ctrl + Left Mouse.


Собственно да, есть места, где VS Code проигрывает той же Visual Studio.

  1. F1, test.c, Enter — это если надо предварительно файл открыть
  2. F1, :264, Enter — переход к строке
  3. Ctrl + F, ", Esc — переход к ближайшей кавычке
  4. Ctrl + Del или Ctrl+Shift+Right до желаемого эффекта, после чего можно вводить expr.

l — перейти левее

Может, правее?

Вы Vundle тогда зачем ставили?

Потому что я в них тогда вообще не разбирался и ставил то, что предлагали в туториале


:help %комманда% / %setting%

А если я не помню как команда/настройка/плагин называется?
Например (предположив, что все необходимые плагины установлены, но моторные навыки ещё не выработаны), как в vim поставить закладку в одном файле, выбрать другой файл в дереве проекта, включить анализаторы Omnisharp, найти варнинг и применить фикс от Roslynator? (Не уверен, что для последнего есть поддержка в виде vim плагина, но по крайней мере у него есть CLI.) Четыре Три разных плагина со своими мануалами, которые надо изучить. И вместо этого удобная панелька Show All Commands и settings.json, и всё это с отличным автодополнением.


:script

Спасибо, этого не знал.

разработчиков в смысле разрабатывающих что-либо для самого редактора.

Я неправильно Вас понял. Про контрибьюторов согласен, поэтому отдельно указал количество тех, кто судя по статистике вносит активный вклад.


Но опять же, надо учитывать, что то что в виме реализовывается с помощью плагинов, в VS Code идёт уже встроенным, для примера:



И каждая из этих фич имеет миллион реализаций. А то, что не встроено ни там ни сям, но крайне востребовано, имеет свои плагины:
https://github.com/OmniSharp/omnisharp-vim
https://github.com/OmniSharp/omnisharp-vscode


Я не "топлю" однозначно за VS Code и против vim, оба являются отличнейшими редакторами, просто из VS Code гораздо проще сделать универсальную IDE, чем из vim, поэтому она и обрела такую популярность.

Ну на самом деле всё круто и гибко и один раз настраивается. // trollface
Перефразируя анекдот про питон, vim такой гибкий, что выскальзывает из рук!


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


Если работать постоянно над одним и тем же проектом — тоже ещё можно жить, действительно можно всё настроить чтоб круто и гибко, и привычно. Но когда у тебя несколько разных проектов, все разных размеров и на разных языках от Typescript и Python до Java/Android и C#/Unity, проще взять что-нибудь поудобнее.

https://github.com/vim/vim
Contributors: 2, из которых первый — создатель, а второй законтрибутил один коммит на 10 строк
https://github.com/neovim/neovim
Contributors: 553, из которых человек 8 регулярно активных
https://github.com/microsoft/vscode
Contributors: 1198, из которых человек 20 занимаются им в качестве основной работы, во главе с небезызвестным https://github.com/egamma, из той самой "банды четырёх"

простые действия позволяет сделать в пару кликов

А посложнее?) Как из него выйти?


Вот например, моё любимое: копировать в / вставить из системного буфера
VS Code: Ctrl+C / Ctrl+V
vim: "*y / "*p — если не пользоваться этими сочетаниями постоянно, вылетает из головы на раз. Да, можно ремапить, но при использовании через SSH на чужой машине оригинальную комбинацию можно и не вспомнить. К слову, VS Code через SSH тоже умеет работать, хотя сценарии использования у них совершенно разные.


Как найти команду, которая ты даже не знаешь как называется и есть ли она вообще
VS Code: F1 > вбиваешь что-то примерное > автодополнение подскажет
vim: гугл + Stack Overflow + RTFM


Как найти настройку, которую ты даже не знаешь как называется и есть ли она вообще:
VS Code: settings.json > вбиваешь что-то примерное > автодополнение подскажет
vim: гугл + Stack Overflow + RTFM


Установка плагинов
VS Code: Зашёл на панельку с плагинами, вбил в поиск, выбрал подходящий или с наибольшим количеством скачиваний, установил.
vim: Нууу, сначала надо поставить менеджер плагинов. Допустим, выбрали Vundle. Сначала нам понадобится вставить set rtp+=~/.vim/bundle/Vundle.vim \n call vundle#begin() ... call vundle#end() в .vimrc, а как вставить из буфера в vim мы уже забыли. Дальше поиск по интернетам; плагинов к vim слишком много и не сразу очевидно, какой из них живее. Допустим нашли, RTFM, убедились что это вроде бы то что нужно. Выкачали в .vim/bundle, конечно же вручную, вписали в .vimrc Plugin 'best/plugin, перезапустили vim, обнаружили, что мы где-то опечатались, из-за этого сломался .vimrc и если не повезёт, не работает половина сконфигурированного функционала...


Отключение плагина для текущего проекта
VS Code: вкладка с плагинами > правой кнопкой мышки > Disable in workspace
vim: лезть в .vimrc и добавлять строчку, исключающую плагин для соответствующей директории
https://stackoverflow.com/questions/601412/how-to-turn-off-a-plugin-in-vim-temporarily


А как потом посмотреть какие из плагинов включены:
VS Code: на вкладке плагинов они "серенькие".
vim: а вот ищи или думай, это у тебя плагин сломался, или ты сам его отключил, или он и не должен был запускаться для текущего файла.


Допустим, я поставил себе новый плагин и ещё в нём не разобрался
VS Code: пойду на панельку плагинов, найду нужный, на вкладке Feature Contribution единообразно прописано всё, что плагин делает
vim: гугл + Stack Overflow + RTFM, или копайся в исходниках


Если подходящего плагина нет


Ситуация с расширяемостью одинакова.

Вот только поддержка Typescript в современном мире гораздо лучше, чем у Vimscript. То же автодополнение из коробки, которое даёт лёгкую и удобную навигацию по API. Хотя действительно, это не просто скриптик запилить, сначала надо будет поставить Node.js + npm, освоить базовые команды для них, yeoman для создания плагина из темплейта и фирменная утилита vsce для упаковки плагина в пакет и размещения в каталоге


Ещё по мелочи достоинства VS Code: вместо единого ~/.vimrc три уровня конфигурационных файлов (пользовательские настройки/workspace (что-то типа солюшена у MSBuild)/workspace folder), отдельные файлы с хоткеями, с глобальными тасками, с локальными тасками, с конфигурациями запуска/отладки. Отдельные панельки с отладочным выводом для каждого плагина. Возможность настройки одних и тех же хоткеев на разные команды в зависимости от контекста (доступен ли ввод с клавиатуры или файл открыт readonly, открыт ли виджет поиска или diff editor...). Ну и чрезвычайно удобный встроенный плагин для работы с git, из-за которого я и подсел на VS Code уже почти три года назад.

Пару лет назад обзавёлся OneMix Yoga, самой первой версии.


Портрет

image


Очень забавная машинка, лёгкая и компактная, выбор #1 для путешествий, в которых не планируется много работать. Фильмы на ней смотреть удобнее чем на телефоне — экран 7'' немногим больше, удобство по большому счёту из-за того, что можно угол наклона регулировать. Работать очень неудобно из-за тормозов, но можно только в vim. Клавиатура непривычная, но всяко лучше, чем на телефоне печатать.


Оперативки 8 Гб (по ощущениям меньше), процессор Atom x5-Z8350, у более новых моделей той же линейки вроде что-то помощнее. Батарейку держит часов 8-10, точное время не замерял.


Да, по умолчанию Windows 10, убунту воткнуть можно, но могут быть проблемы с некоторыми драйверами.

Ааа, теперь всё понял!

Пустите покататься на ufo

Дробление окна == split screen? Всё есть.


Честно пробовал использовать обвешанный плагинами neovim для разработки на стеке Python/C++ и таки не поверите, под нагрузкой он тоже начинает тормозить.


VS Code представляет собой оптимальный компромисс между визуальными плюшками типа тем, боковых панелек и прочих автодополнений, и возможностью делать всё через консоль/команды. Да, в целом тормознее чем vim, но в отличие от vim, гораздо удобнее для кастомизации. Всё под рукой, не надо по полчаса вспоминать хоткеи/команды или искать их по конфигам. Если какой-то плагин не нужен в данном воркспейсе — отключаешь его для данного воркспейса. Красота.

Честно говоря, отладка в VS Code, особенно Qt-приложений, не всегда удобна, по крайней мере так было года полтора назад. То, что тот же Qt Creator отображает в Locals/Watch в удобном виде (типа различных коллекций), в VS Code предстаёт в чистом и незамутнённом, со всеми голыми указателями на служебные объекты и прочие QObject. И это всё не считая того, что Step Into/Over дико тормозили.


В качестве основного редактора использовал VS Code, но для отладки использовал исключительно Qt Creator, экономил кучу нервов. Возможно, за полтора года что-то изменилось и на данный момент отлаживаться стало удобнее.

К слову о "два раза клонировать" — в git есть возможность держать несколько рабочих копий для одного репозитория. Клонирования не происходит, по сути просто чекаут в другую папку, которую потом не жалко удалить.


https://git-scm.com/docs/git-worktree
Пример:


$ git worktree add -b emergency-fix ../temp master
$ pushd ../temp
# ... hack hack hack ...
$ git commit -a -m 'emergency fix for boss'
$ popd
$ git worktree remove ../temp

> GitLens: Directory Compare Working Tree with...
Раньше не умел, не так давно добавили.


Там это решается не через второй экземпляр, а через псевдо-workspace с двумя рабочими папками.

Расширение GitLens для VS Code так умеет, правда на больших репозиториях делает это очень медленно. Если сравнивать конкретный файл с другой веткой, это гораздо быстрее и можно завязать на хоткей.

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Software Developer, Backend Developer
Lead
C++
C#
Git
Python
Software development