by Artem Pyanykh (community) Neovim, VS Code, Emacs, Helix
LSP-сервер для Markdown с поддержкой wiki-ссылок. Превращает редактор в полноценный инструмент для ведения заметок и личных вики — автодополнение, переходы, рефакторинг ссылок. Возможности: - Автодополнение [[wiki-ссылок]] между заметками - Go to definition для ссылок на другие файлы - Find references: где упоминается текущая заметка - Rename: переименование файла обновляет все ссылки - Диагностика битых ссылок - Поддержка Obsidian-стиля [[wikilinks]] - Работает с любым набором markdown-файлов
# Скачать бинарь с GitHub Releases:
# https://github.com/artempyanykh/marksman/releases
# macOS (brew):
brew install marksman
# Neovim (nvim-lspconfig):
require('lspconfig').marksman.setup{}
# VS Code:
# Extensions → "Marksman" → Install
Пишите Markdown с поддержкой кода и интеллектуальными функциями прямо в вашем любимом редакторе.
)
Marksman — это программа, которая интегрируется в ваш редактор, помогая писать и поддерживать документы в формате Markdown. Используя протокол LSP, она предоставляет автодополнение, переход к определению, поиск ссылок, переименование, рефакторинг, диагностику и многое другое. Помимо обычного Markdown, он также поддерживает ссылки в стиле вики-ссылок, которые позволяют вести заметки в духе Zettelkasten[^roam-research], [^markdown-memo]. Подробнее о возможностях Marksman читайте ниже.
Marksman работает в MacOS, Linux и Windows и распространяется как автономный исполняемый файл для каждой ОС.
Сервер помогает с:
md
Это [встроенная ссылка](https://github.com/artempyanykh/marksman/blob/main/some-file.md#some-heading)).
Это внутренняя [ссылка-якорь](#heading).* Вики-ссылками:md
Ссылка на [[другая-заметку]].
Ссылка на [[другие-заметки#заголовок]].
Внутренняя ссылка на [[#заголовок]].
```
Все типы ссылок поддерживают автодополнение, всплывающие подсказки, переход к определению/ссылкам. Кроме того, Marksman предоставляет диагностику для вики-ссылок для обнаружения нерабочих ссылок и дублирующих/неоднозначных заголовков.
Vim:
Пример конфигурации (добавьте следующее в ваш ~/.vim/after/ftplugin/markdown.vim):
viml
if exists('g:loaded_lsp')
call LspAddServer([#{ name: 'marksman', filetype: ['markdown'], path: '/path/to/marksman', args: ['server'], syncInit: v:true }])
end
Emacs:
Пример конфигурации для пользователей use-package:
lisp
(use-package markdown-mode
:hook (markdown-mode . lsp)
:config
(require 'lsp-marksman))
* через Eglot, требует настройки (если только
eglot#1013 не будет объединён); добавьте следующее в ваш
init.el
lisp
(add-to-list 'eglot-server-programs '(markdown-mode . ("marksman")))
(add-hook 'markdown-mode-hook #'eglot-ensure)
* Helix поддерживает Marksman из коробки. Однако вам нужно вручную добавить исполняемый файл marksman в
ваш PATH.
* Kakoune может использоваться с kakoune-lsp без
дополнительной настройки.
* Sublime Text через LSP-marksman (автоматическая установка
сервера).
* BBEdit можно настроить для использования Marksman в качестве LSP-сервера для файлов Markdown.
* Zed поддерживает Marksman через свою встроенную поддержку LSP,
добавив его как доступный LSP для Markdown в settings.json Zed:
```jsonc // Настройки Zed { // ... "languages": { "Markdown": { "language_servers": ["marksman"] } } }
```
Смотрите инструкции по установке).
)
Смотрите страницу «Возможности»), чтобы узнать больше о языковых функциях, конфигурациях и одно- и многофайловом режимах.
.marksman.toml в корневой папке вашего проекта, либо инициализируйте репозиторий (например, git init). Смотрите эту страницу), чтобы узнать больше об одно- и многофайловом режимах.xattr -d com.apple.quarantine <путь-к-исполняемому-файлу-marksman>.[^roam-research]: Вы, возможно, слышали о Roam Research. Это коммерческая реализация метода Zettelkasten и ещё одна точка отсчёта для понимания того, чем занимается Marksman. Однако, в отличие от проприетарного Roam Research, Marksman является бесплатным, с открытым исходным кодом и интегрируется в ваш любимый редактор (хотя и не так функционально богат, как Roam Research).
[^markdown-memo]: Существует отличное расширение для VSCode под названием Markdown Memo. вам определённо стоит ознакомиться с ним, если вы в основном используете VSCode, так как у него есть некоторые функции, которых нет в Marksman и расширении Marksman для VSCode. Однако Markdown Memo специфичен для VSCode, тогда как Marksman — это универсальный язык-сервер, поэтому может использоваться с любым редактором, поддерживающим LSP: Emacs, Vim, Neovim и т.д.
[^lsp]: Поскольку Marksman является обычным языковым сервером, большая часть функциональности работает из коробки с любым LSP-клиентом.
[^single-file-mode]: Существует инициатива по добавлению однофайлового режима в LSP, но это не часть спецификации, по крайней мере, до и включая v3.17.