Открыть сервис

Kakoune

Kakoune — это модальный текстовый редактор с открытым исходным кодом, ориентированный на эффективное редактирование текста через клавиатурные комбинации и множественное выделение. Разработан как альтернатива редакторам Vim и Neovim, Kakoune отличается инвертированной моделью взаимодействия: в нём сначала выполняется действие (выделение, перемещение), а затем применяется команда, что контрастирует с подходом Vim, где сначала задаётся команда, а затем — область её применения. Редактор написан на языке C++ и использует библиотеку ncurses для терминального интерфейса, а также поддерживает графический интерфейс через X11.

История

Kakoune был создан французским разработчиком Максом Брессоном (Maxime Coste, известным под псевдонимом «mawww»). Первый публичный релиз состоялся в 2013 году. Проект возник как эксперимент по переосмыслению принципов модального редактирования, заложенных в Vim. Основной идеей стало изменение порядка действий: вместо «команда → объект» (как в Vim) Kakoune использует «объект → команда». Это позволяет пользователю видеть, на какой текст будет применена команда, до её выполнения, что снижает количество ошибок и упрощает обучение.

Развитие проекта ведётся на платформе GitHub, где сообщество вносит вклад в код, документацию и плагины. К 2024 году Kakoune достиг стабильной версии 2024.05.18, поддерживающей большинство современных возможностей текстовых редакторов, включая подсветку синтаксиса, автодополнение, интеграцию с системами контроля версий и работу с множественными курсорами.

Архитектура и принципы работы

Модель взаимодействия

Основное отличие Kakoune от Vim — это инвертированный порядок команд. В Vim пользователь вводит команду (например, d для удаления), затем указывает объект (например, w для слова), и удаление происходит сразу. В Kakoune сначала выбирается объект (например, w выделяет слово), затем применяется команда (например, d удаляет выделенное). Это позволяет видеть результат выделения до выполнения действия, что особенно полезно при работе с множественными выделениями.

Множественные выделения

Kakoune поддерживает множественные выделения (multiple selections) как встроенную возможность. Пользователь может одновременно выделить несколько фрагментов текста и применить к ним одну команду. Это реализовано через механизм «основного выделения» (main selection) и дополнительных курсоров. Например, команда s позволяет выделить все вхождения заданного шаблона, после чего к ним можно применить удаление, замену или вставку.

Режимы работы

Kakoune, как и Vim, является модальным редактором, но с упрощённой системой режимов. Основные режимы:

  • Нормальный режим (Normal mode) — режим по умолчанию, в котором выполняются навигация и выделение.
  • Вставка (Insert mode) — режим для ввода текста, активируется командой i.
  • Пользовательский режим (User mode) — режим для выполнения пользовательских макросов и команд.
  • Командная строка (Command line) — режим для ввода команд редактора, активируется символом :.

Отсутствие отдельных режимов для визуального выделения (как в Vim) упрощает работу: выделение всегда активно и отображается визуально.

Клавиатурные привязки

Kakoune использует клавиши, основанные на мнемонике и расположении на клавиатуре. Например, h, j, k, l соответствуют перемещению влево, вниз, вверх и вправо (как в Vim), но также есть дополнительные привязки для навигации по словам, строкам и абзацам. Команды часто группируются по функциональности: d — удаление, c — изменение, y — копирование (yank), p — вставка.

Основные возможности

Подсветка синтаксиса

Kakoune поддерживает подсветку синтаксиса для множества языков программирования, включая C, C++, Python, JavaScript, Rust, Go, Haskell и другие. Подсветка реализована через регулярные выражения и конфигурационные файлы, что позволяет легко добавлять поддержку новых языков.

Автодополнение

Редактор включает встроенную систему автодополнения, которая анализирует текущий буфер и предлагает варианты завершения слов. Для расширения функциональности можно использовать внешние инструменты, такие как LSP (Language Server Protocol), что обеспечивает автодополнение с учётом контекста языка программирования.

Интеграция с системами контроля версий

Kakoune имеет встроенную поддержку Git. Команда :git открывает интерфейс для выполнения операций Git, таких как коммит, добавление файлов, просмотр изменений. Также доступна подсветка изменённых строк в буфере.

Макросы и скрипты

Пользователи могут записывать и воспроизводить макросы для автоматизации повторяющихся действий. Kakoune поддерживает скрипты на встроенном языке, который позволяет настраивать поведение редактора, создавать новые команды и модифицировать клавиатурные привязки.

Клиент-серверная архитектура

Kakoune работает в модели клиент-сервер: один серверный процесс управляет сессией, а несколько клиентов могут подключаться к нему. Это позволяет открывать один и тот же файл в нескольких терминалах или окнах, синхронизируя изменения. Клиенты могут быть как терминальными (через ncurses), так и графическими (через X11).

Сравнение с другими редакторами

Kakoune и Vim

Kakoune часто сравнивают с Vim из-за схожей модальной философии. Основные различия:

  • Порядок действий: в Kakoune сначала выделение, затем команда; в Vim — наоборот.
  • Множественные выделения: встроены в Kakoune, в Vim требуют плагинов (например, vim-multiple-cursors).
  • Клавиатурные привязки: в Kakoune они более мнемоничны и ориентированы на частоту использования; в Vim — исторически сложившиеся.
  • Скриптовый язык: Kakoune использует собственный язык, Vim — Vimscript (или Lua в Neovim).

Kakoune и Neovim

Neovim — форк Vim, который добавляет современные возможности, такие как встроенная поддержка LSP и асинхронные операции. Kakoune имеет схожую функциональность, но с другим подходом к взаимодействию. Neovim более популярен и имеет большее сообщество, однако Kakoune привлекает пользователей, ценящих интуитивность и наглядность.

Недостатки и критика

Несмотря на преимущества, Kakoune имеет ряд недостатков:

  • Меньшее сообщество: по сравнению с Vim и Neovim, у Kakoune меньше пользователей, плагинов и документации на русском языке.
  • Ограниченная поддержка Windows: редактор в первую очередь разработан для Unix-подобных систем (Linux, macOS), поддержка Windows через WSL или Cygwin не является полноценной.
  • Сложность освоения: хотя модель «выделение → команда» считается более интуитивной, переход с Vim или других редакторов может потребовать времени на переучивание.
  • Отсутствие встроенного графического интерфейса: хотя есть поддержка X11, полноценный GUI отсутствует, что может быть неудобно для пользователей, привыкших к графическим редакторам.

Применение

Kakoune используется преимущественно разработчиками и системными администраторами, работающими в терминале. Он подходит для редактирования кода, конфигурационных файлов, а также для быстрого редактирования текста в среде командной строки. Благодаря поддержке LSP, Kakoune может использоваться для профессиональной разработки на языках, таких как Rust, Python, JavaScript, C++ и других.

Интересные факты

  • Название «Kakoune» происходит от японского слова «kakun» (какун), что означает «письменный знак» или «символ», но также может быть интерпретировано как игра слов с «как» (англ. «как») и «one» (один), подчёркивая уникальность редактора.
  • Kakoune написан на C++11, что обеспечивает высокую производительность и низкое потребление памяти.
  • В редакторе отсутствует встроенная поддержка мыши, что соответствует философии клавиатурного управления.

Источники

  • Официальная документация Kakoune: https://kakoune.org
  • Репозиторий на GitHub: https://github.com/mawww/kakoune
  • Статья «Kakoune: A modal editor with a different approach» на сайте LinuxLinks
  • Обсуждения на Reddit (r/kakoune) и Hacker News

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →