LINUX.ORG.RU

Новая эра Vim

 ,


0

2

Всем привет. Такие вот размышления и вопросы появились. Брэм в vim скоро добавит такую вещь как :h textprop. Кто не знает, то в виме одним из легаси недостатков остается подсветка на регулярках, которая весьма тормозит особенно на однострочных файлах. Так вот вот эта вещь позволит использовать внешние утилиты для подсветки не основанные на регулярках. Но недавно узнал, что neovim (сам являюсь его юзером, последнее время скорее всего только из-за полноценных всплывающих окон, в вим они реализованы как окна, на которые нельзя перейти к примеру с помощью C-w w) внедряет свою подобную вещь реализованную абсолютно по другому. То есть если до этого основной проблемой (по крайней мере для плагинописателей) была небольшая разница между реализацией асинхронности, то теперь еще и это до кучи будет.

Кто что думает, что ждет вим и его форк, и кто в этом преуспеет больше? Вот тут кратко о реализации этой вещи в neovim https://www.reddit.com/r/neovim/comments/deb4j5/hastextprop/

Ну а вообще конечно круто что скоро можно будет избавиться от старой подсветки в коде.

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

EXL ★★★★★
()
Ответ на: комментарий от EXL

А какие альтернативы? LangServer или есть ещё? И какие реадкторы, кроме VS Code (и вероятно Атома) работают с LangServer?

anonymous
()
Ответ на: комментарий от EXL

Как ты задрал этой подсветкой. Давай покажи правильную реализацию подсветки для всех языков из top50 tiobe хотя бы. Бегом побежал.

anonymous
()
Ответ на: комментарий от anonymous

Он правильно всё пишет. Если проблема есть, не надо ссать про неё напоминать. Даже если «умникам» типа тебя это кажется «глупым поведением».

anonymous
()
Ответ на: комментарий от anonymous

Все виденные мной проблемы с подсветкой в виме были от кривых регулярок в языковых плагинах. Бывало, что фикс одной регулярки ускорял разбор в сотни раз. Теперь внимание вопрос: кто будет писать парсеры для «правильной» подсветки всех возможных языков? Правильно, не только лишь все. Через LSP можно делать, только не будет ли оно тормознее регулярок? И опять же для полутора языков? Нахер.

anonymous
()
Ответ на: комментарий от anonymous

кто будет писать парсеры для «правильной» подсветки всех возможных языков?

Те же, кто и сейчас пишет подобное для тех языков, которые в том или ином ИДЕ/редакторе не поддерживается. То есть сообщество. А если язык популярный, а редактор/ИДЕ, в свою очередь, делают люди с коммерческой жилкой, а не очередные социофобы-сублиматорщики, то задача написания кодаж ложится на них. Ничего по сути не меняется для разработчиков и комбюнити кроме того, что писать придется под LangServer, а не под регулярки.

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

anonymous
()
Ответ на: комментарий от anonymous

Во-первых, да, из вредности и привычки.
Во-вторых, нативный код никто не отменял. Как я понимаю, onivim именно из этих.
В-третьих, скорость ввода является критичной в профессии стенографистки, но не администратора, разработчика, научного сотрудника или кем кто работает. Многие вообще предпочитают набирать в скрипяще-пердящих продуктах от JetBrains - и ничего, зарабатывают свои 120k$ в год.
Я признаю мощь Вима, как текстового редактора, но на работе приходится писать код как в нем, так и временами в VSCode, и я не могу отрицать тот факт, что даже банальные вещи вроде хорошего линтера из коробки, удобной навигации по файлам или интеграции с VCS ни капли не вредят и даже помогают.

cherry_boy
()
Ответ на: комментарий от EXL

Посмотрел ту таблицу внимательно. Точнее, их там две: одна для языков и другая для редакторов. Как-то там всё странно.

К примеру, для VS Code, JavaScript, Ruby и Python там везде стоят все галочки.

Но если открыть свежеустановленный VS Code, то опции Rename Symbol и Go to Definition будут работать только для JavaScript. Чтобы они появились для Python - надо ставить отдельное расширение. А для Ruby - вообще хз. Другие языка я просто не смотрел.

То есть те таблицы если что и демонстрируют, то отнюдь не изкоробочность. Тогда что?

anonymous
()
Ответ на: комментарий от anonymous

К примеру, для VS Code, JavaScript, Ruby и Python там везде стоят все галочки.

Но

О чем и говорили выше, полтора языка поддерживаются. И неизаестно еще насколько оно все гладко работает.

anonymous
()
Ответ на: комментарий от anonymous

Как только откроешь файл на Пайтоне, он тебе предложит одной кнопкой поставить необходимый аддон из официальной коллекции.

cherry_boy
()
Ответ на: комментарий от cherry_boy

Да, я знаю. Но мой вопрос стоит понимать немного шире.

Я имею в виду:

Вот заходим на сайт langserver.org, смотрим таблицы. Ставим одну из полностью поддерживаемых IDE и открываем в ней файл в одном из полностью поддерживаемых языков.

Но, получается, нет никакой гарантии что мы получим Rename Symbol, Go to Definition и другие ништяки.

То есть помимо того, что а) ИДЕ должна быть в списке поддерживаемых, б) Язык должен быть в списке поддерживаемых, есть ещё и пункт в) – реальная поддержка в ИДЕ (изкоробочная либо посредством расширений, как в случае Python в VS Code).

anonymous
()
Ответ на: комментарий от anonymous

То есть те таблицы — не отражают реальный уровень поддержки.

anonymous
()
Ответ на: комментарий от Vovka-Korovka

Попробуй лучше coc + ccls - у меня эта связка сразу показала ошибки в этом примере.

Пробовал - не работает у меня.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Уже наверное на протяжении нескольких лет наблюдаю какие-то проблемы у тебя с любыми автокомплитерами, кроме оставшегося в 90-х юкомплита. Чини руки, серьезно.

StillSteal
() автор топика
Последнее исправление: StillSteal (всего исправлений: 1)
Ответ на: комментарий от StillSteal

Уже наверное на протяжении нескольких лет наблюдаю какие-то проблемы у тебя с любыми автокомплитерами,

/me посмотрел вокруг - никого не обнаружил. Проверил закрыта ли дверь, есть ли камеры - ничего подозрительного.

Может вы заблудились в своих фантазиях?

кроме оставшегося в 90-х юкомплита. Чини руки, серьезно.

Вам бы историю подучить, а уж потом о руках рассуждать.

andreyu ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

Значит, чего-то недонастроил.

Делал так, как написано в мануале. Может я неправильно бубном тряс?

andreyu ★★★★★
()
Ответ на: комментарий от anonymous

Но если открыть свежеустановленный VS Code, то опции Rename Symbol и Go to Definition будут работать только для JavaScript. Чтобы они появились для Python - надо ставить отдельное расширение. А для Ruby - вообще хз. Другие языка я просто не смотрел.

То есть те таблицы если что и демонстрируют, то отнюдь не изкоробочность. Тогда что?

типичный майкрософтовский оверинжиниринг, вот что. Чтобы редактор мог запустить сервер для языка, он должен знать, что запустить, как, для каких типов файлов, и т.д. MS предлагает делать отдельные расширения vscode и задавать это всё в их настройках. Для сравнения, в CoC для vim это настраивается как-то так:

{
  "languageserver": {
    "clangd": {
      "command": "clangd",
      "args": ["--background-index"],
      "filetypes": ["c", "cpp", "objc", "objcpp"]
    },
    "bash": {
      "command": "bash-language-server",
      "args": ["start"],
      "filetypes": ["sh"],
      "ignoredRootPaths": ["~"]
    }
  }
}

anonymous
()
Ответ на: комментарий от andreyu

Похоже у тебя еще и память короткая, инсинуатор. Еще раз говорю, что у тебя постоянные проблемы то с деоплитом, то с неокомплитом, то с вот coc. Короче оставайся в 90-х.

StillSteal
() автор топика
Ответ на: комментарий от andreyu

А что именно не заработало - coc или ccls? coc умеет писать сообщения об ошибках достаточно подробно, в том числе, и ошибках при общении с language server.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от anonymous

Чтобы они появились для Python - надо ставить отдельное расширение.

Это расширение официальное от микрософт. Так же как и для c++. Как только ты откроешь файл python/c++ тебе в рекомендациях посоветуют поставить эти плагины. Вряд ли бы кто-то захотел изкоробки иметь поддержку 100500 языков, которые он не использует. Кому надо – без проблем поставит.

То есть те таблицы если что и демонстрируют, то отнюдь не изкоробочность.

Вот что в VSCode хорошо, так это то, что почти все плагины работают изкоробки. Просто поставил и оно работает как надо. В отличии от вимов/имаксов (и тот и другой так же использую, но как текстовые редакторы и для org-mode).

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от anonymous

Стоит ли заморачиваться, если до этого с Емаксом дел не имел?

anonymous
()
Ответ на: комментарий от anonymous

Да я его минимально использую, веду в нем дневничок-outliner:

* Log
** [2019-12-06 Dec/Fri]               :tag3:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, 
sed do eiusmod tempor incididunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat. 
Duis aute irure dolor in reprehenderit in voluptate velit 
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint 
occaecat cupidatat non proident, sunt in culpa qui officia 
deserunt mollit anim id est laborum.

** [2019-12-01 Dec/Sun]               :tag1:tag2:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, 
sed do eiusmod tempor incididunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat. 
Duis aute irure dolor in reprehenderit in voluptate velit 
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint 
occaecat cupidatat non proident, sunt in culpa qui officia 
deserunt mollit anim id est laborum.

Ну и каждая запись, естественно сворачивается. Много разного пробовал, но конкретно для этого пока ничего удобней не нашел.

Стоит ли заморачиваться, если до этого с Емаксом дел не имел?

Я использую имакс только для вот такого дневничка. Как простой редактор vim лучше, как недоIDE – vscode лучше.

Im_not_a_robot ★★★★★
()
Последнее исправление: Im_not_a_robot (всего исправлений: 1)
Ответ на: комментарий от Im_not_a_robot

Да, кстати, если не ошибаюсь, то расширение микрософта для питона в вскоде по дефолту использует не language server, а jedi. LSP надо отдельно включать.. через выключение jedi:

"python.jediEnabled": false,
Im_not_a_robot ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

По-моему ты не понимаешь, что такое language server.

StillSteal
() автор топика
Ответ на: комментарий от StillSteal

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

Ну вам виднее, что говорят голоса в вашей голове.

Короче оставайся в 90-х.

При чем тут 90е?

andreyu ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

А что именно не заработало - coc или ccls? coc умеет писать сообщения об ошибках достаточно подробно, в том числе, и ошибках при общении с language server.

У коллеги ccls ломался на парсинге файлов проекта. У меня ccls сам по себе работал. А проблема была в самих плагинах coc и vim-lsp. Я пробовал использовать оба.

andreyu ★★★★★
()

А навигация по длинным строкам как была ужасной в обоих редакторах, так и осталась. Хотя кто на *виме работает с файлами у которых строки длиннее 80 колонок?))

Exmor_RS ★★★
()
Ответ на: комментарий от cherry_boy

Извините, но у нас нельзя говорить правду, пожалуйста прекратите.

Exmor_RS ★★★
()
Ответ на: комментарий от StillSteal

Ну длинные строки длинным строкам рознь. Я не знаю, про что он говорил. Но иногда тебе в руки попадается, скажем, однострочник из JSON на 15 мегабайт. (Точный размер не помню, но у меня на нём висло всё, кроме Sublime Text.)

anonymous
()
Ответ на: комментарий от Exmor_RS

Я работал с такими в разных редакторах, могу сказать, что длинные строки везде одинаково отвратительны. 80 колонок же - хороший тон и признак интеллигентного человека.

cherry_boy
()
Ответ на: комментарий от anonymous

Ну этот топик как раз об этом, что однострочники( да и не только однострочники) тормозят - во всем подсветка на регулярках виновата, но вот как видишь работа в этом направлении ведется и если имеешь дело с такими файлами одна команда :syntax off решает все проблемы. Но юзер выше не об этом точно.

StillSteal
() автор топика
Последнее исправление: StillSteal (всего исправлений: 2)
Ответ на: комментарий от andreyu

А проблема была в самих плагинах coc

А что именно за проблема?

Vovka-Korovka ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.