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 →
