Vim 편집기의 현대화된 버전인 Neovim 0.6.0 출시

확장성과 유연성을 높이는 데 초점을 맞춘 Vim 편집기의 포크인 Neovim 0.6.0이 출시되었습니다. 이 프로젝트는 2.0년 넘게 Vim 코드 기반을 재작업해 왔으며 그 결과 코드 유지 관리를 단순화하고, 여러 유지 관리자 간에 작업을 분배하는 수단을 제공하고, 기본 부분에서 인터페이스를 분리하는 변경이 이루어졌습니다(인터페이스는 내부를 건드리지 않고 변경) 플러그인을 기반으로 새로운 확장 가능한 아키텍처를 구현합니다. 프로젝트의 원래 개발은 Apache XNUMX 라이센스에 따라 배포되며 기본 부분은 Vim 라이센스에 따라 배포됩니다. Linux(appimage), Windows 및 macOS용으로 준비된 어셈블리가 준비되어 있습니다.

Neovim을 만들게 된 Vim의 문제점 중 하나는 300만 줄이 넘는 C(C89) 코드로 구성된 비대하고 모놀리식 코드 기반이었습니다. 소수의 사람들만이 Vim 코드베이스의 모든 뉘앙스를 이해하고 있으며 모든 변경 사항은 한 명의 관리자에 의해 제어되므로 편집기를 유지 관리하고 개선하기가 어렵습니다. GUI를 지원하기 위해 Vim 코어에 내장된 코드 대신 Neovim은 다양한 툴킷을 사용하여 인터페이스를 생성할 수 있는 범용 레이어 사용을 제안합니다.

Neovim용 플러그인은 MessagePack 형식이 사용되는 상호 작용을 위해 별도의 프로세스로 실행됩니다. 플러그인과의 상호 작용은 편집기의 기본 구성 요소를 차단하지 않고 비동기식으로 수행됩니다. 플러그인에 액세스하려면 TCP 소켓을 사용할 수 있습니다. 플러그인은 외부 시스템에서 실행될 수 있습니다. 동시에 Neovim은 Vim과의 하위 호환성을 유지하고 Vimscript(Lua가 대안으로 제공됨)를 계속 지원하며 대부분의 표준 Vim 플러그인에 대한 연결을 지원합니다. Neovim의 고급 기능은 Neovim 전용 API를 사용하여 구축된 플러그인에서 사용할 수 있습니다.

현재 약 130여개의 특정 플러그인이 이미 준비되어 있으며, 다양한 프로그래밍 언어(C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby)와 프레임워크(Qt, ncurses, Node .js, Electron, GTK). 여러 사용자 인터페이스 옵션이 개발 중입니다. GUI 추가 기능은 플러그인과 매우 유사하지만 플러그인과 달리 Neovim 기능에 대한 호출을 시작하는 반면 플러그인은 Neovim 내에서 호출됩니다.

새 버전의 일부 변경 사항은 다음과 같습니다.

  • В vim-скрипты добавлена поддержка локальных переменных, область видимости для которых ограничена только текущим скриптом.
  • Значительно улучшена поддержка языка Lua для разработки плагинов и управления конфигурацией. В vim-скриптах добавлена возможность вызова Lua-функций как методов через указание префикса v:lua (например, «arg1->v:lua.somemod.func(arg2)»).
  • Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы. Применение LSP позволяет использовать более 150 готовых обработчиков для различных языков программирования, подготовленных для редактора кода Visual Studio Code.
  • Улучшены средства диагностики проблем в коде. Добавлена возможность вывода текста диагностических сообщений и плавающих окон с кодом, связанным с подобными сообщениями. Обеспечена обработка диагностических сообщений, передаваемых LSP-сервером.
  • Добавлена поддержка виртуальных строк, которые могут использоваться, например, для вывода блоков со служебной информацией.
  • Внесены различные оптимизации производительности, например, задействована хэш таблица для подсвечиваемых имён групп.
  • Прекращена поддержка Windows 7 и 32-разрядных сборок для Windows.

출처 : opennet.ru

코멘트를 추가