LINUX.ORG.RU

NeoVim - «клон vim XXI-го века»

 ,


2

4

Началась разработка Neovim — vim 21 века, как называет его сам автор.

В рамках проекта Neovim планируется осуществить агрессивный рефакторинг исходного кода Vim.

Цели проекта:

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

Из конкретных изменений были названы:

  • Переход на cmake.
  • Удаление режима эмуляции vi и «некоторые другие не очень важные опции, которые затрудняют поддержку кода».
  • Замена плартформо-специфичного кода на динамически подключаемую библиотеку libuv.
  • А также полный вынос GUI за пределы самого редактора с подключением его при помощи механизма, схожего с планируемым механизмом подключения плагинов.

Последнее позволяет интегрировать редактор в сторонние приложения (например, IDE) и писать различные плюшки вроде minimap у Sublime Text 2.

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

На развитие проекта автор  собирает 10 000$

>>> Ссылка на github

★★★★★

Проверено: Shaman007 ()

все VimL-плагины, что использую, завелись

попробую собрать с питоном и их тоже проверить

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

все VimL-плагины, что использую, завелись

Дык разве в данный момент это не просто тот же самый Вим с некоторыми изменениями? Судя по «Jan 31, 2014 Import vim from changeset v5628:c9cad40b4181»? // Код не смотрел.

aidan ★★★★ ()

А Брэм в курсе этого?

Боюсь он лопнет от смеха.

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

ну да, я не посмотрел на заголовки коммитов, только на количество :) там, вроде, все касательно ридми и мейка

actionless ★★★★★ ()

Упланируется осуществить агрессивный рефакторинг исходного кода Vim.

И переписать на elisp.

loz ★★★★★ ()

я бы еще добавил в новость некоторые из долговременных перспектив, типа переписывания плагин-системы на lua и трансляции vimL в него

звучит в целом заманчиво многое из обещанного, только сомневаюсь, что взлетит

actionless ★★★★★ ()

Vim, Emacs, Sublime Text, TextAdept, NeoVim

Нужно больше велосипедов!

Barsik ()

Пишут, что ненужно: http://www.reddit.com/r/programming/comments/1yjzez/neovim_a_project_to_refac...

[qoute] I once fixed a segfault in the redrawing procedure. It is very simple, one function with 2 arguments and 20+ local variables that spreads over 1k+ lines. It took me a whole Saturday to find the two lines buried in this atrocious complexity that were causing the crash (only when a specific set of vim features was activated). These two lines were changed one week ago by somebody who wanted to «improve» syntax coloring. This same guy then complained because my segfault fix broke his «improvement». Bram sanely argued that he preferred a glitch in syntax highlight than a full application segfault.

I think this project is a very crappy idea.

The README explains why: 300k+ lines of code that nobody has the guts/time to tame. Then the author proceeds to explain that he wants to start a huge refactoring when nobody even has a clue how the code actually works.

It sure looks good at the beginning because the codebase is here but it is insane because nobody (even Bram) fully understands the code.

A full rewrite would be much easier and is what I am doing now. [/qoute]

anonymous ()

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

anonymous ()

Да у него просто JS головного мозга

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

A full rewrite would be much easier and is what I am doing now

лол. похоже на троллинг.

mos ★★★★★ ()

А надо было всего лишь добавить очередь сообщений в ивентлуп и переписать интерпретацию события ввода с учетом современных реалий.

Но мне смешно будет посмотреть как оно попытается взлететь с изолированными плагинами, которые ничего не смогут сделать из-за ограниченности api, которое будет постоянно ломаться. И все это будет сильно просирать cpu, так как поток сообщений будет вполне плотным и cs никто не отменял.

Лучше бы запил изменения hidden буфера, вместо того чтоб херней маяться.

Да, предложенные json/msgpack в качестве транспорта вызывают только умиление и сразу говорят о будущем проекта. Кстати, автор сам признался, что это все ради минимапа из ST, достойная цель.

// baverman

anonymous ()

План работ на два месяца фултайма:

    New, modern multi-platform UI written using qtlua.
    New curses UI written using luaposix. It will look exactly like vim's terminal UI, but implemented with a high-level language that will greatly simplify maintenance. Not to mention it will let me remove a great deal of code dedicated to handling terminals in the core source.
    New testing UI written in Lua with migration of all tests to this interface. The current test suite is hard to read and takes too long to run. This will let us write vim tests using lua's bdd framework busted which will improve readability and run speed.
    New plugin architecture, with a python compatibility layer for using vim plugins written in python.
    Full port of the editor IO to libuv.
    Cross-platform implementation of job control for vimscript (easy on top of libuv).
    Distributions for Windows, Linux and Mac, and a Windows installer.

Щенок пороху вообще не нюхал и берегов не видит.

// baverman

anonymous ()

что теперь vi будет портить текст и пикать как то по особенному, я считаю что не нужно так как есть emacs

BillDver ★★★ ()

На развитие проекта автор собирает 10 000$

Это индус? Сужу по фотке.

ziemin ★★ ()

У него явно слишком много свободного времени. Удачи ему.

pento ★★★★★ ()
Последнее исправление: pento (всего исправлений: 1)

Они реинкарнируют то беспомощное псевдографическое gvimно, о котором уже в нулевых говорили либо хорошо, либо никак? Дьявольский ритуал.

d_a ★★★★★ ()

ящетаю, такой проект должен рождаться в обширных публичных дискуссиях ИЛИ вырастать из из прототипа, написанного по выходным за год-два. Здесь есть ВНЕЗАПНО анонсированное сомнительнле решение без обсуждения и прототипа. И сразу денег хотят.

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

И сразу денег хотят.

Причем уже почти собрали.

anonymous ()

Ждём консольного клона sublime text. Нужно больше безумных идей.

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

и так такой пилится (https://github.com/limetext/lime), но когда я в последний раз пробовал собирать, qt-шный фронтенд не должен был работать даже в теории, а curses работал максимально неадекватно

может, сейчас там по-лучше

actionless ★★★★★ ()

Сразу подумал, что пилит японец Shougo, автор замечательных плагинов neobundle, neocomplete, neosnippet, и многих других.

Кстати, он тоже высказывался, о том, что lua должен стать основным интерфейсом для расширений:

  • Python interface is not available in every Vim environment. For example, Android, iOS, non configured Vim,...
  • Incompatibility with Python2 and Python3. I must rewrite for it.
  • Loading Python interface is slow(10~20ms). But loading Lua interface is too fast(270ns).
  • Python2 and Python3 is not loaded at same time in Unix environment.
  • Python is too big.
  • Python interface is slow than Lua interface(almost twice).
  • Lua interface is stable(no crashed in latest Vim).
  • Using C module(like vimproc, YouCompleteMe) is hard to compile in Windows environment.
  • Using both Python and C like YouCompleteMe is too unstable. Your Vim may be crash or happen a mysterious error.
  • To build if_lua is easy.
  • I think if_lua is the second level language in Vim(The first is Vim script).

За vim+lua будущее.

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

За vim+lua будущее.

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

ZyX, спасибо за прекрасный интерфейс, писать плаги для вима почти удовольствие.

// baverman

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

Перечитал Начата работа над Vim 7.4 и Реализована одна из самых востребованных фич в VIM: совместная работа над документом. Collaborative Editing for Vim, спасибо.

Я сам-то плагины не пишу, но как пользователь ощутил прирост скорости автокомплита при переходе с neocomplcache (VimL) на neocomplete (if_lua). Питоноплагины (ultisnips, еще что-то) показались мне тормозами. Про YouCompleteMe (python + native library) вообще молчу.

Сейчас вообще собираю вим с (+lua -python -ruby).

mtk ()

Внедрить современный GUI как опцию;

непонятно только зачем в vim нужно gui.

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

питоноплагины (ultisnips, еще что-то) показались мне тормозами.

Они завязаны на старый интерфейс. Мои плаги летают. Хотя может у меня тупо руки прямее, больно бородат.

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

непонятно только зачем в vim нужно gui.

Наверно потому что это рабочий инструмент, в который надо втыкать по 40 часов в неделю, но не каждый осиливает настроить эмулятор терминала?

// baverman

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

Наверно потому что это рабочий инструмент, в который надо втыкать по 40 часов в неделю, но не каждый осиливает настроить эмулятор терминала?

не существует человека, у которого vim рабочий инструмент, и который не может настроить эмулятор терминала.

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

и который не может настроить эмулятор терминала.

Шепотом: маководы. Эта гейская инициатива из их стана идет.

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

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

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

в терминале это не настроить

В некоторых можно. xterm, gnome-terminal.

Лично меня сильно раздражает общая тормознутость gvim и мерцание при заливке фона. Вангую еще большую неповоротливость морд neovim.

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

Было бы интересно посмотреть хотя бы бету. А то сейчас...

travka ()

vim 21 века, как называет его сам автор.

у автора ЧСВ завышенное

kas501 ★★★ ()

вроде minimap у Sublime Text 2

Проще им и пользоваться.

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

За vim+lua будущее.

Луа хорош, но что они собираются делать, когда авторы Луа опять поломают совместимость? Переписывать своё или форкать Луа?

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

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

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

Разные версии луа плохо уживаются в одной системе.

question4 ★★★★★ ()

Уже собрали 106% запрошенной суммы. Значит народу нужно.

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

Значит народу нужно.

Народ повелся на minimap, инфа 106%

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

у многих, в том числе у меня, вполне нормально уживаются lua 5.2 и lua51 5.1

actionless ★★★★★ ()

Так толсто, что даже тонко. Кому оно нужно?

amazpyel ★★★ ()

Началась разработка

В рамках проекта... планируется осуществить

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

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

Не вижу пользы в таких «новостях».

Привлечь внимание к акции по сбору денег?

anonymous ()

Началась разработка Neovim — vim 21 века, как называет его сам автор.

Как тонко автор намекнул, что Vim устарел.

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