Документация micro

Закари Йедидия

zyedidia@stanford.edu
https://github.com/zyedidia

перевод В.Айсин

Текст в micro

Micro — это текстовый редактор на базе терминала, который стремится быть простым в использовании, интуитивно понятным, а также использовать все возможности современных терминалов.

Чтобы открыть панель команд, нажмите Ctrl-e. Внизу экрана редактора появится подсказка > для ввода команд. С этого момента, когда в документации говорится, что нужно запустить такую команду, как > help, это будет означать — нажмите Ctrl-e и введите help (и нажмите Enter для выполнения команды).

Чтобы просмотреть список привязок клавиш по умолчанию, выполните команду > help defaultkeys. Для получения дополнительной информации о привязках клавиш см. > help keybindings.

Быстрый старт

Нажмите Ctrl-s, чтобы сохранить изменения и Ctrl-q, чтобы выйти. Нажмите Ctrl-e, чтобы начать вводить команды. Вы также можете увидеть доступные команды, нажав Tab или просмотрев раздел справки > help commands.

Перемещайте курсор с помощью мыши или клавиш со стрелками. Запустите > help defaultkeys, чтобы получить быстрый и легкий обзор горячих клавиш по умолчанию и их функций. Для получения дополнительной информации о повторном связывании клавиш см. > help keybindings.

Если вы хотите изменить цветовую схему — сделайте это с помощью > set colorscheme .... Вы можете нажать Tab, чтобы увидеть доступные цветовые схемы, или просмотреть дополнительную информацию о цветовых схемах и выделении синтаксиса с помощью > help colors.

Нажимайте Ctrl-w для перехода между разделениями и введите > vsplit filename или > hsplit filename, чтобы открыть новое разделение.

Доступ к дополнительной справке

Micro имеет встроенную справочную систему, доступ к которой можно получить с помощью команды help.

Чтобы использовать ее, нажмите Ctrl-e для перехода в командный режим и введите help, а затем название раздела. Эта страница будет открыта если ввести help и нажать Enter.

Доступные разделы справки:

К примеру, чтобы открыть страницу справки по плагинам, вы должны запустить > help plugins.

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

Руководство (tutorial)

Это краткое введение в систему конфигурации micro, которое даст некоторые простые примеры, показывающие, как настраивать параметры, повторно связывать клавиши и использовать init.lua, чтобы настроить micro по своему вкусу.

Надеюсь, вы найдете его полезным.

Список с объяснением привязок клавиш по умолчанию см. в разделе > help defaultkeys.

Настройки

Ваши настройки хранятся в файле ~/.config/micro/settings.json, который создается при первом запуске micro. Это файл json, содержащий все настройки и их значения. Чтобы изменить какой-нибудь параметр, вы можете либо изменить значение в файле settings.json, либо ввести его непосредственно при использовании micro.

Нажмите Ctrl-e, чтобы перейти в командный режим, и введите > set <option> <value> (далее в тексте угловая скобка > в начале команды будет указывать на командный режим, т.е. нажатие Ctrl-e). При использовании команды set изменения вступят в силу немедленно и также будут сохранены в файле settings.json, так что настройка сохранится и после закрытия micro.

Также можно установить параметры локально, т.е. параметр будет применен только к буферу, в котором вы его установили. Для этого нужно использовать команду setlocal. Например, если у вас есть два открытых разделения и вы набираете > setlocal tabsize 2, размер табуляции 2 будет применяться только в текущем буфере. Также micro не сохранит это локальное изменение в файле settings.json. Тем не менее вы можете устанавливать и сохранять параметры для отдельных категорий файлов в settings.json. Например, если вы хотите, чтобы для параметра tabsize было значение 2 только в файлах Ruby и 4 во всех других, вы можете поместить следующую запись в файл settings.json:

{
    "*.rb": {
        "tabsize": 2
    },
    "tabsize": 4
}

micro установит для параметра tabsize значение 2 только в файлах *.rb.

Если вы хотите узнать больше о настройках, см. options (> help options).

Привязки клавиш

Привязки клавиш работают так же, как и параметры. Они настраиваются в файле ~/.config/micro/bindings.json.

Например, если вы хотите назначить сокращение Ctrl-r для redo, вам нужно добавить в bindings.json:

{
    "Ctrl-r": "Redo"
}

Очень просто.

Вы также можете привязывать клавиши в micro с помощью команды > bind <key> <action>, но привязки, которые вы делаете с помощью этой команды, не будут сохранены в файле bindings.json.

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

Конфигурация с Lua

Если вам нужно больше мощности, чем предоставляют файлы конфигурации json, вы можете использовать файл init.lua. Создайте его в каталоге ~/.config/micro. Это файл lua, который выполняется при каждом запуске micro и по сути представляет собой однофайловый плагин. Название плагина initlua.

В этом примере показано, как использовать файл init.lua для создания привязки Ctrl-r, которая выполнит команду bash go run для текущего файла Go.

Вы можете сделать это, поместив в init.lua следующий код:

local config = import("micro/config")
local shell = import("micro/shell")

function init()
    -- true means overwrite any existing binding to Ctrl-r
    -- this will modify the bindings.json file
    config.TryBindKey("Ctrl-r", "lua:initlua.gorun", true)
end

function gorun(bp)
    local buf = bp.Buf
    if buf:FileType() == "go" then
        -- the true means run in the foreground
        -- the false means send output to stdout (instead of returning it)
        shell.RunInteractiveShell("go run " .. buf.Path, true, false)
    end
end

В качестве альтернативы вы можете избавиться от строки TryBindKey и поместить эту строку в файл bindings.json:

{
    "Ctrl-r": "lua:initlua.gorun"
}

Для получения дополнительной информации о плагинах и системе lua в micro, см. раздел справки plugins (> help plugins).

Привязки клавиш (keybindings)

Micro имеет множество горячих клавиш, которые делают его простым, мощным и удобным в использовании. Все горячие клавиши полностью настраиваются по вашему вкусу.

Пользовательские привязки клавиш хранятся внутри micro, если они изменены с помощью команды > bind, или же они могут быть добавлены в файл ~/.config/micro/bindings.json, как описано далее. Для более удобного списка с объяснением того, какие горячие клавиши используются по умолчанию и что они делают, см. > help defaultkeys. Полный список клавиш по умолчанию в формате json приведен ниже.

Если ~/.config/micro/bindings.json не существует, вы можете просто создать его саостоятельно. Micro будет знать, что с ним делать.

Вы можете использовать Ctrl + стрелки для перемещения слово за словом (Alt + стрелки для Mac). Alt + влево и вправо перемещают курсор в начало и конец строки (Ctrl + влево/вправо для Mac), а Ctrl + вверх и вниз перемещают курсор в начало и конец буфера.

Вы можете удерживать shift со всеми этими действиями перемещения, чтобы выбрать во время перемещения.

Перепривязка клавиш

Привязки могут быть изменены с помощью файла ~/.config/micro/bindings.json. Каждая клавиша привязана к действию.

Например, чтобы связать Ctrl-y для отмены и Ctrl-z для повтора, вы можете поместить следующее в файл bindings.json.

{
    "Ctrl-y": "Undo",
    "Ctrl-z": "Redo"
}

Примечание: Синтаксис <Modifier><key> эквивалентен <Modifier>-<key>. Кроме того, привязки Ctrl-Shift не поддерживаются терминалами и аналогичны простым привязкам Ctrl. Это означает, что CtrlG, Ctrl-G и Ctrl-g означают одно и то же. Однако для Alt это не так: AltG и Alt-G означают Alt-Shift-g, тогда как Alt-g не требует модификатора Shift.

Помимо редактирования вашего ~/.config/micro/bindings.json, вы можете запустить > bind <keycombo> <action> Список связываемых действий см. ниже.

Вы также можете связать команды при повторном связывании. Например, если вы хотите, чтобы Alt-s сохранял файл и выходил из micro, вы можете забиндить его так:

{
    "Alt-s": "Save,Quit"
}

Каждое действие вернет флаг успеха. Действия могут быть объединены в цепочку, так что цепочка будет продолжаться только в случае успеха или неудачи, или того и другого. Разделитель , при любом результате будет переходить к следующему действию. Разделитель | прервет цепочку, если предшествующее ему действие завершится успешно, а & прервет цепочку, если предшествующее действие завершится неудачно. Например, в привязках по умолчанию вкладка привязана как

"Tab": "Autocomplete|IndentSelection|InsertTab"

Это означает, что если действие Autocomplete выполнено успешно, цепочка прервется. В противном случае редактор попытается выполнить IndentSelection, а если и это не удастся, выполнит InsertTab.

Привязка команд

Вы также можете привязать клавишу для выполнения команды в командном режиме (см. > help commands). Просто добавьте привязку с помощью command:. Например:

{
    "Alt-p": "command:pwd"
}

Примечание для macOS: по умолчанию терминалы macOS не пересылают альтернативные события и вместо этого вставляют символы Юникода. Чтобы исправить это, сделайте следующее:

Теперь, когда вы нажимаете Alt-p, будет выполнена команда pwd, которая покажет ваш рабочий каталог на информационной панели.

Вы также можете забиндить "редактируемую" команду с помощью command-edit:. Это означает, что micro не выполнит команду сразу после нажатия привязки, а просто поместит строку в информационную панель в командном режиме. Например, вы можете переназначить Ctrl-g на > help:

{
    "Ctrl-g": "command-edit:help "
}

Теперь, когда вы нажимаете Ctrl-g, на панели команд появляется help, и ваш курсор будет помещен после него (обратите внимание на пробел в json, который управляет размещением курсора).

Привязка необработанных управляющих последовательностей

Прочтите этот раздел, только если вас интересует привязка клавиш, которых нет в списке поддерживаемых клавиш для привязки.

Одним из недостатков использования терминального редактора является то, что редактор должен получать всю свою информацию о ключевых событиях через терминал. Терминал отправляет эти события в виде управляющих последовательностей, часто (но не всегда) начиная с 0x1b.

Например, если micro читает \x1b[1;5D, на большинстве терминалов это будет означать, что пользователь нажал CtrlLeft.

Однако для многих сочетаний клавиш терминал не отправляет escape-код или отправляет escape-код, который уже используется. Например, для CtrlBackspace мой терминал отправляет последовательность \u007f (обратите внимание, что она не начинается с 0x1b), которую он также отправляет для Backspace. Это означает, что micro не сможет привязать CtrlBackspace.

Однако некоторые терминалы позволяют биндить клавиши для отправки определенных вами управляющих последовательностей. Затем из micro вы можете напрямую связать эти escape-последовательности с действиями. Например, чтобы связать CtrlBackspace, вы можете указать своему терминалу отправить \x1bctrlback, а затем привязать его в bindings.json:

{
    "\u001bctrlback": "DeleteWordLeft"
}

Вот несколько инструкций по отправке необработанных escape-последовательностей в разные терминалы.

iTerm2

В iTerm2 перейдите в Preferences->Profiles->Keys, затем щелкните +, введите свою привязку клавиш и для Action выберите Send Escape Sequence. В приведенном выше примере вы должны ввести ctrlback в поле (\x1b), оно автоматически отправляется iTerm2.

Linux с использованием loadkeys

Вы можете сделать это в Linux с помощью программы loadkeys.

Скоро будет!

Отмена привязки клавиш

Также можно отключить любую из привязок клавиш по умолчанию, используя действие None в пользовательском файле bindings.json.

Привязываемые действия и привязываемые клавиши

Список привязок клавиш по умолчанию содержит большинство возможных действий и клавиш, которые вы можете использовать, но не все из них. Вот их полный список.

Полный список возможных действий:

CursorUp
CursorDown
CursorPageUp
CursorPageDown
CursorLeft
CursorRight
CursorStart
CursorEnd
SelectToStart
SelectToEnd
SelectUp
SelectDown
SelectLeft
SelectRight
SelectToStartOfText
SelectToStartOfTextToggle
WordRight
WordLeft
SelectWordRight
SelectWordLeft
MoveLinesUp
MoveLinesDown
DeleteWordRight
DeleteWordLeft
SelectLine
SelectToStartOfLine
SelectToEndOfLine
InsertNewline
InsertSpace
Backspace
Delete
Center
InsertTab
Save
SaveAll
SaveAs
Find
FindLiteral
FindNext
FindPrevious
Undo
Redo
Copy
CopyLine
Cut
CutLine
DuplicateLine
DeleteLine
IndentSelection
OutdentSelection
OutdentLine
IndentLine
Paste
SelectAll
OpenFile
Start
End
PageUp
PageDown
SelectPageUp
SelectPageDown
HalfPageUp
HalfPageDown
StartOfLine
EndOfLine
StartOfText
StartOfTextToggle
ParagraphPrevious
ParagraphNext
ToggleHelp
ToggleDiffGutter
ToggleRuler
JumpLine
ClearStatus
ShellMode
CommandMode
Quit
QuitAll
AddTab
PreviousTab
NextTab
NextSplit
Unsplit
VSplit
HSplit
PreviousSplit
ToggleMacro
PlayMacro
Suspend (Unix only)
ScrollUp
ScrollDown
SpawnMultiCursor
SpawnMultiCursorUp
SpawnMultiCursorDown
SpawnMultiCursorSelect
RemoveMultiCursor
RemoveAllMultiCursors
SkipMultiCursor
None
JumpToMatchingBrace
Autocomplete

Действия StartOfTextToggle и SelectToStartOfTextToggle переключаются между переходом к началу текста (первое) и переходом к началу строки.

Вы также можете привязать некоторые действия мыши (они должны быть привязаны к кнопкам мыши)

MousePress
MouseMultiCursor

Вот список всех возможных клавиш, которые вы можете привязать:

Up
Down
Right
Left
UpLeft
UpRight
DownLeft
DownRight
Center
PageUp
PageDown
Home
End
Insert
Delete
Help
Exit
Clear
Cancel
Print
Pause
Backtab
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
F13
F14
F15
F16
F17
F18
F19
F20
F21
F22
F23
F24
F25
F26
F27
F28
F29
F30
F31
F32
F33
F34
F35
F36
F37
F38
F39
F40
F41
F42
F43
F44
F45
F46
F47
F48
F49
F50
F51
F52
F53
F54
F55
F56
F57
F58
F59
F60
F61
F62
F63
F64
CtrlSpace
Ctrl-a
Ctrl-b
Ctrl-c
Ctrl-d
Ctrl-e
Ctrl-f
Ctrl-g
Ctrl-h
Ctrl-i
Ctrl-j
Ctrl-k
Ctrl-l
Ctrl-m
Ctrl-n
Ctrl-o
Ctrl-p
Ctrl-q
Ctrl-r
Ctrl-s
Ctrl-t
Ctrl-u
Ctrl-v
Ctrl-w
Ctrl-x
Ctrl-y
Ctrl-z
CtrlLeftSq
CtrlBackslash
CtrlRightSq
CtrlCarat
CtrlUnderscore
Backspace
OldBackspace
Tab
Esc
Escape
Enter

Вы также можете привязать некоторые кнопки мыши (они могут быть привязаны к обычным действиям или к действиям мыши)

MouseLeft
MouseMiddle
MouseRight
MouseWheelUp
MouseWheelDown
MouseWheelLeft
MouseWheelRight

Последовательности клавиш

Последовательности клавиш можно связать, указав допустимые клавиши одну за другой в скобках, например <Ctrl-x><Ctrl-c>.

Привязки клавиш по умолчанию

Некоторые сочетания клавиш в MacOS отличаются от других операционных систем. Это связано с тем, что разные ОС имеют разные соглашения о настройках редактирования текста по умолчанию.

{
    "Up":             "CursorUp",
    "Down":           "CursorDown",
    "Right":          "CursorRight",
    "Left":           "CursorLeft",
    "ShiftUp":        "SelectUp",
    "ShiftDown":      "SelectDown",
    "ShiftLeft":      "SelectLeft",
    "ShiftRight":     "SelectRight",
    "AltLeft":        "WordLeft", (Mac)
    "AltRight":       "WordRight", (Mac)
    "AltUp":          "MoveLinesUp",
    "AltDown":        "MoveLinesDown",
    "CtrlShiftRight": "SelectWordRight",
    "CtrlShiftLeft":  "SelectWordLeft",
    "AltLeft":        "StartOfTextToggle",
    "AltRight":       "EndOfLine",
    "AltShiftRight":  "SelectWordRight", (Mac)
    "AltShiftLeft":   "SelectWordLeft", (Mac)
    "CtrlLeft":       "StartOfText", (Mac)
    "CtrlRight":      "EndOfLine", (Mac)
    "AltShiftLeft":   "SelectToStartOfTextToggle",
    "CtrlShiftLeft":  "SelectToStartOfTextToggle", (Mac)
    "ShiftHome":      "SelectToStartOfTextToggle",
    "AltShiftRight":  "SelectToEndOfLine",
    "CtrlShiftRight": "SelectToEndOfLine", (Mac)
    "ShiftEnd":       "SelectToEndOfLine",
    "CtrlUp":         "CursorStart",
    "CtrlDown":       "CursorEnd",
    "CtrlShiftUp":    "SelectToStart",
    "CtrlShiftDown":  "SelectToEnd",
    "Alt-{":          "ParagraphPrevious",
    "Alt-}":          "ParagraphNext",
    "Enter":          "InsertNewline",
    "Ctrl-h":          "Backspace",
    "Backspace":      "Backspace",
    "Alt-CtrlH":      "DeleteWordLeft",
    "Alt-Backspace":  "DeleteWordLeft",
    "Tab":            "Autocomplete|IndentSelection|InsertTab",
    "Backtab":        "OutdentSelection|OutdentLine",
    "Ctrl-o":          "OpenFile",
    "Ctrl-s":          "Save",
    "Ctrl-f":          "Find",
    "Ctrl-n":          "FindNext",
    "Ctrl-p":          "FindPrevious",
    "Ctrl-z":          "Undo",
    "Ctrl-y":          "Redo",
    "Ctrl-c":          "CopyLine|Copy",
    "Ctrl-x":          "Cut",
    "Ctrl-k":          "CutLine",
    "Ctrl-d":          "DuplicateLine",
    "Ctrl-v":          "Paste",
    "Ctrl-a":          "SelectAll",
    "Ctrl-t":          "AddTab",
    "Alt-,":           "PreviousTab",
    "Alt-.":           "NextTab",
    "Home":           "StartOfText",
    "End":            "EndOfLine",
    "CtrlHome":       "CursorStart",
    "CtrlEnd":        "CursorEnd",
    "PageUp":         "CursorPageUp",
    "PageDown":       "CursorPageDown",
    "CtrlPageUp":     "PreviousTab",
    "CtrlPageDown":   "NextTab",
    "Ctrl-g":          "ToggleHelp",
    "Alt-g":          "ToggleKeyMenu",
    "Ctrl-r":          "ToggleRuler",
    "Ctrl-l":          "command-edit:goto ",
    "Delete":         "Delete",
    "Ctrl-b":          "ShellMode",
    "Ctrl-q":          "Quit",
    "Ctrl-e":          "CommandMode",
    "Ctrl-w":          "NextSplit",
    "Ctrl-u":          "ToggleMacro",
    "Ctrl-j":          "PlayMacro",
    "Insert":         "ToggleOverwriteMode",

    // Привязки клавиш в стиле Emacs
    "Alt-f": "WordRight",
    "Alt-b": "WordLeft",
    "Alt-a": "StartOfLine",
    "Alt-e": "EndOfLine",

    // Интеграция с файловыми менеджерами
    "F2":  "Save",
    "F3":  "Find",
    "F4":  "Quit",
    "F7":  "Find",
    "F10": "Quit",
    "Esc": "Escape",

    // Привязки мыши
    "MouseWheelUp":   "ScrollUp",
    "MouseWheelDown": "ScrollDown",
    "MouseLeft":      "MousePress",
    "MouseMiddle":    "PastePrimary",
    "Ctrl-MouseLeft": "MouseMultiCursor",

    "Alt-n":        "SpawnMultiCursor",
    "AltShiftUp":   "SpawnMultiCursorUp",
    "AltShiftDown": "SpawnMultiCursorDown",
    "Alt-m":        "SpawnMultiCursorSelect",
    "Alt-p":        "RemoveMultiCursor",
    "Alt-c":        "RemoveAllMultiCursors",
    "Alt-x":        "SkipMultiCursor",
}

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

Привязки клавиш также могут быть указаны для разных типов панелей. Например, чтобы сделать привязку, которая влияет только на панель команд, используйте подгруппу command:

{
    "command": {
        "Ctrl-w": "WordLeft"
    }
}

Возможные типы панелей: buffer (обычный буфер), command (панель команд) и terminal (панель терминала). Значения по умолчанию для панелей команд и терминала приведены ниже:

{
    "terminal": {
        "<Ctrl-q><Ctrl-q>": "Exit",
        "<Ctrl-e><Ctrl-e>": "CommandMode",
        "<Ctrl-w><Ctrl-w>": "NextSplit"
    },

    "command": {
        "Up":             "HistoryUp",
        "Down":           "HistoryDown",
        "Right":          "CursorRight",
        "Left":           "CursorLeft",
        "ShiftUp":        "SelectUp",
        "ShiftDown":      "SelectDown",
        "ShiftLeft":      "SelectLeft",
        "ShiftRight":     "SelectRight",
        "AltLeft":        "StartOfTextToggle",
        "AltRight":       "EndOfLine",
        "AltUp":          "CursorStart",
        "AltDown":        "CursorEnd",
        "AltShiftRight":  "SelectWordRight",
        "AltShiftLeft":   "SelectWordLeft",
        "CtrlLeft":       "WordLeft",
        "CtrlRight":      "WordRight",
        "CtrlShiftLeft":  "SelectToStartOfTextToggle",
        "ShiftHome":      "SelectToStartOfTextToggle",
        "CtrlShiftRight": "SelectToEndOfLine",
        "ShiftEnd":       "SelectToEndOfLine",
        "CtrlUp":         "CursorStart",
        "CtrlDown":       "CursorEnd",
        "CtrlShiftUp":    "SelectToStart",
        "CtrlShiftDown":  "SelectToEnd",
        "Enter":          "ExecuteCommand",
        "CtrlH":          "Backspace",
        "Backspace":      "Backspace",
        "OldBackspace":   "Backspace",
        "Alt-CtrlH":      "DeleteWordLeft",
        "Alt-Backspace":  "DeleteWordLeft",
        "Tab":            "CommandComplete",
        "Backtab":        "CycleAutocompleteBack",
        "Ctrl-z":         "Undo",
        "Ctrl-y":         "Redo",
        "Ctrl-c":         "CopyLine|Copy",
        "Ctrl-x":         "Cut",
        "Ctrl-k":         "CutLine",
        "Ctrl-v":         "Paste",
        "Home":           "StartOfTextToggle",
        "End":            "EndOfLine",
        "CtrlHome":       "CursorStart",
        "CtrlEnd":        "CursorEnd",
        "Delete":         "Delete",
        "Ctrl-q":         "AbortCommand",
        "Ctrl-e":         "EndOfLine",
        "Ctrl-a":         "StartOfLine",
        "Ctrl-w":         "DeleteWordLeft",
        "Insert":         "ToggleOverwriteMode",
        "Ctrl-b":         "WordLeft",
        "Ctrl-f":         "WordRight",
        "Ctrl-d":         "DeleteWordLeft",
        "Ctrl-m":         "ExecuteCommand",
        "Ctrl-n":         "HistoryDown",
        "Ctrl-p":         "HistoryUp",
        "Ctrl-u":         "SelectToStart",

        // Привязки клавиш в стиле Emacs
        "Alt-f": "WordRight",
        "Alt-b": "WordLeft",
        "Alt-a": "StartOfText",
        "Alt-e": "EndOfLine",

        // Интеграция с файловыми менеджерами
        "F10": "AbortCommand",
        "Esc": "AbortCommand",

        // Привязки мыши
        "MouseWheelUp":   "HistoryUp",
        "MouseWheelDown": "HistoryDown",
        "MouseLeft":      "MousePress",
        "MouseMiddle":    "PastePrimary"
    }
}

Заключительные примечания

Примечание. На некоторых старых эмуляторах терминала и на машинах с Windows для backspace следует использовать Ctrl-h.

Кроме того, клавиши alt можно привязать с помощью Alt-key. Например, Alt-a или Alt-Up. Micro поддерживает необязательный дефис - между модификаторами, такими как Alt и Ctrl, поэтому Alt-a можно переписать как Alta (регистр имеет значение для привязок alt). Вот почему в сочетаниях клавиш по умолчанию вы можете увидеть AltShiftLeft вместо Alt-ShiftLeft (они эквивалентны).

Обратите внимание, что эмуляторы терминала — это странные приложения, и micro принимает только ключевые события, которые терминал решает отправить. Некоторые эмуляторы терминала могут не отправлять определенные события, даже если в этом документе говорится, что micro может получать событие. Чтобы увидеть, что именно micro получает от терминала при нажатии клавиши, выполните команду > raw.

Клавиши по умолчанию (defaultkeys)

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

Пожалуйста, помните, что все клавиши здесь можно повторно привязать! Если вам это не нравится, вы можете это изменить!

Продвинутый пользователь

Клавиша Описание функции
Ctrl-e Открыть командную строку для выполнения команд (список допустимых команд см. в > help commands).
Tab В командной строке, если это возможно, будет выполнено автозаполнение.
Ctrl-b Запустить команду оболочки (на время выполнения вашей команды micro будет закрыт).

Навигация

Клавиша Описание функции
Стрелки Переместить курсор
Shift-стрелки Переместить и выделить текст
Alt(Ctrl на Mac)-LeftArrow Перейти в начало текущей строки
Alt(Ctrl на Mac)-RightArrow Перейти в конец текущей строки
Home Перейти в начало текста в текущей строке
End Перейти в конец текущей строки
Ctrl(Alt на Mac)-LeftArrow Переместить курсор на одно слово влево
Ctrl(Alt на Mac)-RightArrow Переместить курсор на одно слово вправо
Alt-{ Переместить курсор на предыдущую пустую строку или в начало документа
Alt-} Переместить курсор на следующую пустую строку или в конец документа
PageUp Переместить курсор на одну страницу вверх
PageDown Переместить курсор на одну страницу вниз
Ctrl-Home или Ctrl-UpArrow Переместить курсор в начало документа
Ctrl-End или Ctrl-DownArrow Переместить курсор в конец документа
Ctrl-l Перейти к строке в файле (запрашивается номер)
Ctrl-w Цикл между разделениями на текущей вкладке (используйте > vsplit или > hsplit для создания разделения)

Вкладки

Клавиша Описание функции
Ctrl-t Открыть новую вкладку
Alt-, Предыдущая вкладка
Alt-. Следующая вкладка

Поиск

Клавиша Описание функции
Ctrl-f Найти (открывает приглашение командной строки)
Ctrl-n Найти следующее совпадение
Ctrl-p Найти предыдущее совпадение

Файловые операции

Клавиша Описание функции
Ctrl-q Закрыть текущий файл (выход из micro, если это последний открытый файл)
Ctrl-o Открыть файл (запрашивает имя файла)
Ctrl-s Сохранить текущий файл

Текстовые операции

Клавиша Описание функции
Ctrl(Alt на Mac)-Shift-RightArrow Выбрать слово справа
Ctrl(Alt на Mac)-Shift-LeftArrow Выбрать слово слева
Alt(Ctrl на Mac)-Shift-LeftArrow Выбрать до начала текущей строки
Alt(Ctrl на Mac)-Shift-RightArrow Выбрать до конца текущей строки
Shift-Home Выбрать до начала текущей строки
Shift-End Выбрать до конца текущей строки
Ctrl-Shift-UpArrow Выбрать до начала файла
Ctrl-Shift-DownArrow Выбрать до конца файла
Ctrl-x Вырезать выделенный текст
Ctrl-c Копировать выделенный текст
Ctrl-v Вставить
Ctrl-k Вырезать текущую строку
Ctrl-d Дублировать текущую строку
Ctrl-z Отменить
Ctrl-y Повторить
Alt-UpArrow Переместить текущую строку или выбранные строки вверх
Alt-DownArrow Переместить текущую строку или выбранные строки вниз
Alt-Backspace или Alt-Ctrl-h Удалить слово слева
Ctrl-a Выбрать все

Макросы

Клавиша Описание функции
Ctrl-u Переключить запись макроса (нажмите Ctrl-u, чтобы начать запись, и нажмите еще раз, чтобы остановить)
Ctrl-j Запустить последний записанный макрос

Несколько курсоров

Клавиша Описание функции
Alt-n Создать новый множественный курсор из выделения (выберет текущее слово, если текущего выделения нет)
Alt-Shift-Up Создать новый курсор в строке над текущим
Alt-Shift-Down Создать новый курсор в строке под текущим
Alt-p Удалить последний множественный курсор
Alt-c Удалить все множественные курсоры (отменить)
Alt-x Пропустить выбор нескольких курсоров
Alt-m Создать новый курсор в начале каждой строки текущего выделения
Ctrl-MouseLeft Поместить множественный курсор в любое место

Разное

Клавиша Описание функции
Ctrl-g Открыть файл справки
Ctrl-h Backspace (старые терминалы не поддерживают клавишу Backspace и вместо этого используют Ctrl+H)
Ctrl-r Показать/скрыть номера строк

Действия в стиле Emacs

Клавиша Описание функции
Alt-f Следующее слово
Alt-b Предыдущее слово
Alt-a Перейти в начало строки
Alt-e Перейти в конец строки

Функциональные клавиши

Предупреждение! Функциональные клавиши могут работать не на всех терминалах!

Клавиша Описание функции
F1 Открыть справку
F2 Сохранить
F3 Найти
F4 Выйти
F7 Найти
F10 Выйти

Команды (commands)

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

При запуске команды вы можете использовать дополнительный синтаксис, который будет расширен micro перед запуском команды. Чтобы использовать аргумент с пробелом, заключите его в кавычки. Парсер командной строки использует те же правила для разбора аргументов, что и /bin/sh (одинарные кавычки, двойные кавычки, экранирование). Панель команд не выполняет поиск переменных среды.

Команды

Micro предоставляет следующие команды, которые могут быть выполнены в панели команд нажатием Ctrl-e и вводом команды. Аргументы здесь заключены в одинарные кавычки, но при вводе команды в micro это не обязательно.


Плагины по умолчанию предоставляют следующие команды:

Опции (options)

Micro хранит всю пользовательскую конфигурацию в своем каталоге конфигурации.

Micro использует $MICRO_CONFIG_HOME в качестве каталога конфигурации. Если эта переменная среды не установлена, вместо нее используется $XDG_CONFIG_HOME/micro. Если эта переменная среды не установлена, используется ~/.config/micro в качестве каталога конфигурации. В документации мы используем ~/.config/micro для ссылки на каталог конфигурации (даже если он на самом деле расположен в другом месте, если вы установили любую из указанных выше переменных среды).

Вот доступные опции:


Параметры плагинов: все плагины имеют специальную опцию для их включения или отключения. Имя параметра такое же, как и сам плагин, а значение является логическим.

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

Любая опция, которую вы установили в редакторе, будет сохранена в файле ~/.config/micro/settings.json, так что, по сути, ваш файл конфигурации будет создан для вас. Если вы хотите перенести свою конфигурацию на другой компьютер, просто скопируйте файл settings.json на другой компьютер.

Файл settings.json

Файл settings.json должен находиться в вашем каталоге конфигурации (по умолчанию в ~/.config/micro) и содержать только те параметры, которые были изменены по сравнению с их настройками по умолчанию. Вот полный список параметров в формате json, чтобы вы могли увидеть, как должно выглядеть форматирование.

{
    "autoclose": true,
    "autoindent": true,
    "autosave": 0,
    "autosu": false,
    "backup": true,
    "backupdir": "",
    "basename": false,
    "clipboard": "external",
    "colorcolumn": 0,
    "colorscheme": "default",
    "comment": true,
    "cursorline": true,
    "diff": true,
    "diffgutter": false,
    "divchars": "|-",
    "divreverse": true,
    "encoding": "utf-8",
    "eofnewline": true,
    "fastdirty": false,
    "fileformat": "unix",
    "filetype": "unknown",
    "incsearch": true,
    "ftoptions": true,
    "ignorecase": false,
    "indentchar": " ",
    "infobar": true,
    "initlua": true,
    "keepautoindent": false,
    "keymenu": false,
    "linter": true,
    "literate": true,
    "matchbrace": true,
    "mkparents": false,
    "mouse": true,
    "parsecursor": false,
    "paste": false,
    "permbackup": false,
    "pluginchannels": [
        "https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json"
    ],
    "pluginrepos": [],
    "readonly": false,
    "relativeruler": false,
    "rmtrailingws": false,
    "ruler": true,
    "savecursor": false,
    "savehistory": true,
    "saveundo": false,
    "scrollbar": false,
    "scrollmargin": 3,
    "scrollspeed": 2,
    "smartpaste": true,
    "softwrap": false,
    "splitbottom": true,
    "splitright": true,
    "status": true,
    "statusformatl": "$(filename) $(modified)($(line),$(col)) $(status.paste)| ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)",
    "statusformatr": "$(bind:ToggleKeyMenu): bindings, $(bind:ToggleHelp): help",
    "statusline": true,
    "sucmd": "sudo",
    "syntax": true,
    "tabmovement": false,
    "tabsize": 4,
    "tabstospaces": false,
    "useprimary": true,
    "xterm": false
}

Глобальные и локальные настройки

Вы можете установить эти параметры как глобально, так и локально. Локально означает, что настройка не будет сохранена в ~/.config/micro/settings.json и будет установлена только в текущем буфере. Установка параметра глобально — это значение по умолчанию, и оно будет установлено во всех буферах. Используйте команду setlocal, чтобы установить параметр локально, а не глобально.

Параметр colorscheme является только глобальным, а параметр filetype — только локальным. Чтобы установить параметр локально, используйте setlocal вместо set.

В файле settings.json вы также можете локально разместить установленные параметры, указав глобальный объект или тип файла. Вот пример, в котором есть tabstospaces для всех файлов, кроме файлов Go, и tabsize 4 для всех файлов, кроме файлов Ruby:

{
    "ft:go": {
        "tabstospaces": false
    },
    "ft:ruby": {
        "tabsize": 2
    },
    "tabstospaces": true,
    "tabsize": 4
}

Или аналогично вы можете сопоставить глобально:

{
    "*.go": {
        "tabstospaces": false
    },
    "*.rb": {
        "tabsize": 2
    },
    "tabstospaces": true,
    "tabsize": 4
}

Плагины (plugins)

Micro поддерживает создание плагинов с помощью простой системы Lua. Плагины — это папки, содержащие файлы Lua и, возможно, другие исходные файлы, размещенные в ~/.config/micro/plug. Каталог плагина (внутри plug) должен содержать по крайней мере один файл Lua и файл repo.json. Файл repo.json содержит дополнительную информацию, такую как название плагина, веб-сайт плагина, зависимости и т.д. Вот пример файла repo.json из плагина go, который имеет следующую файловую структуру:

~/.config/micro/plug/go-plugin/
    go.lua
    repo.json
    help/
        go-plugin.md

Файл go.lua содержит основной код плагина, хотя код может быть распределен по нескольким файлам Lua. Файл repo.json содержит информацию о плагине, такую как веб-сайт, описание, версия и любые требования. Плагины также могут иметь дополнительные файлы, которые могут быть добавлены к файлам среды выполнения micro, которых существует 5 типов:

В большинстве случаев плагин захочет добавить файлы справки, но в некоторых случаях плагин может также захотеть добавить цветовые схемы или синтаксические файлы. Маловероятно, что плагину потребуется добавлять файлы плагинов во время выполнения или файлы заголовков синтаксиса. Структура каталогов не применяется, но хранение файлов среды выполнения в их собственных каталогах является хорошей практикой.

Обратные вызовы Lua

Плагины используют Lua, но также имеют доступ ко многим функциям как из micro, так и из стандартной библиотеки Go. Также определены многие обратные вызовы, которые вызываются при наступлении определенных событий. Вот список обратных вызовов, которые определяет micro:

Например, функция, которая запускается каждый раз, когда пользователь сохраняет буфер, будет:

function onSave(bp)
    ...
    return false
end

Переменная bp — это ссылка на панель буферов, внутри которой выполняется действие. Это почти всегда текущий bufpane.

Все доступные действия перечислены в разделе справки о сочетаниях клавиш (keybindings).

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

Доступ к функциям micro

Некоторая внутренняя информация micro представлена в виде пакетов, которые могут быть импортированы плагинами Lua. Пакет можно импортировать в Lua и получить доступ к значению в нем, используя следующий синтаксис:

local micro = import("micro")
micro.Log("Hello")

Пакеты и функции перечислены ниже (в сигнатурах типа Go):

Это может показаться небольшим списком доступных функций, но некоторые из объектов, возвращаемых функциями, имеют много методов. Плагин Lua может получить доступ к любым общедоступным методам объекта, возвращаемым любой из вышеперечисленных функций. К сожалению, на этой странице невозможно перечислить все доступные функции. Пожалуйста, перейдите во внутреннюю документацию по адресу https://godoc.org/github.com/zyedidia/micro, чтобы увидеть полный список доступных методов. Обратите внимание, что из подключаемого модуля можно вызывать только методы тех типов, которые доступны подключаемым модулям через указанные выше функции. Более подробную информацию можно найти в исходном коде на Github.

Например, с объектом BufPane с именем bp вы можете вызвать функцию Save в Lua с помощью bp:Save().

Обратите внимание, что Lua использует синтаксис : для вызова функции, а не синтаксис Go ..

micro.InfoBar().Message()
превращается в
micro.InfoBar():Message()

Доступ к стандартной библиотеке Go

Ваш lua-код может получить доступ ко многим функциям стандартной библиотеки Go.

Просто импортируйте нужный пакет, и тогда вы сможете его использовать. Например:

local ioutil = import("io/ioutil")
local fmt = import("fmt")
local micro = import("micro")

local data, err = ioutil.ReadFile("SomeFile.txt")

if err ~= nil then
    micro.InfoBar():Error("Error reading file: SomeFile.txt")
else
    -- Data is returned as an array of bytes
    -- Using Sprintf will convert it to a string
    local str = fmt.Sprintf("%s", data)

    -- Do something with the file you just read!
    -- ...
end

Вот пакеты из стандартной библиотеки Go, к которым вы можете получить доступ. Поддерживаются почти все функции из этих пакетов. Для получения точного списка поддерживаемых функций вы можете просмотреть lua.go (который должен быть легко понятен).

fmt
io
io/ioutil
net
math
math/rand
os
runtime
path
filepath
strings
regexp
errors
time
archive/zip
net/http

Для документации по каждой из этих функций см. документацию по стандартной библиотеке Go по адресу https://golang.org/pkg/ (для пакетов, доступных для плагинов micro). Стандартная библиотека Lua также доступна для плагинов, хотя она довольно мала.

В пакете go-humanize также доступны следующие функции:

Пакет humanize предоставляет:

Добавление файлов справки, файлов синтаксиса или цветовых схем в ваш плагин

Вы можете использовать функцию AddRuntimeFile(name string, type config.RTFiletype, path string) для добавления различных типов файлов в ваш плагин. Например, если вы хотите добавить в свой плагин раздел справки под названием test, вы должны создать файл test.md и вызвать функцию:

config = import("micro/config")
config.AddRuntimeFile("test", config.RTHelp, "test.md")

Используйте AddRuntimeFilesFromDirectory(name, type, dir, pattern), чтобы добавить несколько файлов в среду выполнения. Чтобы прочитать содержимое файла времени выполнения, используйте ReadRuntimeFile(fileType, name string) или ListRuntimeFiles(fileType string) для всех файлов среды выполнения. Кроме того, существует AddRuntimeFileFromMemory, которая добавляет исполняемый файл на основе строки, которая могла быть создана во время выполнения.

Плагины по умолчанию

Существует 6 плагинов по умолчанию, которые предустановлены вместе с micro. Это

Смотрите > help linter, > help comment и > help status для дополнительной получения документации, относящейся к этим плагинам.

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

Менеджер плагинов

Micro также имеет встроенный диспетчер плагинов, который можно вызывать с помощью команды > plugin ... или в оболочке с помощью micro -plugin ....

Список допустимых команд, которые вы можете использовать, см. в разделе справки commands.

Менеджер извлекает плагины из каналов (которые представляют собой просто список метаданных плагинов), о которых он знает. По умолчанию micro знает только об официальном канале, который находится по адресу github.com/micro-editor/plugin-channel, но вы можете добавлять свои собственные сторонние каналы с помощью опции pluginchannels, и вы можете напрямую связывать сторонние плагины чтобы разрешить установку через менеджер плагинов с опцией pluginrepos.

Если вы хотите опубликовать созданный вами плагин в качестве официального, вам следует загрузить его онлайн (желательно на Github) и добавить файл repo.json. Этот файл будет содержать метаданные для вашего плагина. Вот пример:

[{
  "Name": "pluginname",
  "Description": "Here is a nice concise description of my plugin",
  "Website": "https://github.com/user/plugin",
  "Tags": ["python", "linting"],
  "Versions": [
    {
      "Version": "1.0.0",
      "Url": "https://github.com/user/plugin/archive/v1.0.0.zip",
      "Require": {
        "micro": ">=1.0.3"
      }
    }
  ]
}]

Затем откройте запрос на перенос на github.com/micro-editor/plugin-channel, добавив ссылку на необработанный файл repo.json, который находится в репозитории вашего плагина.

Чтобы обновление плагина работало, первая строка lua-кода вашего плагина должна содержать версию плагина. (Например: VERSION =" 1.0.0 ") Убедитесь, что вы используете semver для управления версиями.

Цвета (colors)

Эта страница справки призвана охватить два аспекта механизма подсветки синтаксиса micro:

Цветовые схемы

Чтобы изменить цветовую схему, нажмите Ctrl-e в micro, чтобы вызвать командную строку, и введите:

set colorscheme twilight

(или любую цветовую схему по вашему выбору).

Micro по умолчанию поставляется с несколькими цветовыми схемами. Цветовые схемы, которые вы можете отображать, будут зависеть от того, какой тип цветовой поддержки имеет ваш терминал.

Если не указывать цветовую ссылку [fg color],[bg color] по умолчанию, цвет фона и прозрачность будут соответствовать уже установленным в терминале.

Современные терминалы, как правило, имеют палитру из 16 настраиваемых пользователем цветов (эти цвета часто можно установить в настройках терминала), а дополнительная поддержка цвета поставляется в трех вариантах.

Вот список цветовых схем:

256 color

Они должны работать и хорошо выглядеть в большинстве терминалов. Я рекомендую использовать именно их.

16 color

Они могут сильно различаться в зависимости от 16 цветов, выбранных для вашего терминала.

True-color

True-color требует, чтобы ваш терминал его поддерживал. Это означает, что переменная окружения COLORTERM должна иметь значение truecolor, 24bit или 24-bit. Кроме того, чтобы включить true-color в micro, переменная окружения MICRO_TRUECOLOR должна быть установлена в 1. Обратите внимание, что вы должны создать и установить эту переменную самостоятельно.

Создание цветовой схемы

Цветовые схемы micro также чрезвычайно просты в создании. Стандартные можно найти здесь.

Пользовательские цветовые схемы должны быть помещены в каталог ~/.config/micro/colorschemes.

Ряд пользовательских директив помещается в файл .micro. Цветовые схемы обычно содержат всего 18-30 строк.

Чтобы создать цветовую схему, вам необходимо связать группы выделения с реальными цветами. Это делается с помощью команды color-link.

Например, чтобы выделить все комментарии зеленым цветом, вы должны использовать команду:

color-link comment "green"

Цвета фона также можно указать через запятую:

color-link comment "green,blue"

Это придаст комментариям синий фон.

Если вам не нужен передний план, вы можете просто использовать запятую и ничего перед ней:

color-link comment ",blue"

Вы также можете выделить жирным шрифтом, курсивом или подчеркиванием перед цветом:

color-link comment "bold red"

Есть три различных способа указать цвет.

Цветные терминалы обычно имеют 16 цветов, которые задает пользователь. Это означает, что вы не можете рассчитывать на то, что эти цвета всегда будут одинаковыми. Вы можете использовать эти цвета с именами black, red, green, yellow, blue, magenta, cyan, white и более яркие варианты каждого из них (brightblack, brightred...).

Затем вы можете использовать терминалы 256 colors, используя их номера 1-256 (номера 1-16 будут относиться к именованным цветам).

Если терминал пользователя поддерживает true-color, вы также можете точно указать цвета, используя их шестнадцатеричные коды. Если терминал не является true-color, но micro получает указание использовать цветовую схему true-color, он попытается сопоставить цвета с доступными 256 цветами.

Обычно цветовые схемы, которые требуют, чтобы терминалы с true-color выглядели хорошо, помечаются суффиксом -tc, а цветовые схемы, которые обеспечивают белый фон, помечаются суффиксом -paper.


Вот список групп цветовых схем, которые вы можете использовать:

Для использования цветовые схемы должны быть помещены в каталог ~/.config/micro/colorschemes.


Помимо основных групп цветовых схем, есть подгруппы, которые вы можете указать, добавив в группу .subgroup. Если вы создаете свои собственные файлы синтаксиса, вы можете использовать свои собственные подгруппы.

Если micro не может сопоставить подгруппу, по умолчанию будет использоваться корневая группа, поэтому безопасно и рекомендуется использовать подгруппы в ваших файлах пользовательского синтаксиса.

Например, если в вашей цветовой схеме находится constant.string, micro будет использовать его для выделения строк. Если она не найдена, вместо нее будет использоваться константа. Micro пытается сопоставить самый большой набор групп, который он может найти в определениях цветовой схемы, поэтому, если, например, будет найдена constant.bool.true, то micro будет использовать ее. Если constant.bool.true не найдена, но найдена constant.bool, micro будет использовать constant.bool. В противном случае используется constant.

Вот список подгрупп, используемых во встроенных файлах синтаксиса micro.

В будущем плагины также могут использовать цветовые группы для стилизации.

Файлы синтаксиса

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

Встроенная подсветка синтаксиса micro очень старается быть разумной и обеспечивать достаточный охват значимых элементов языка. В micro теперь встроены файлы синтаксиса для более чем 100 языков! Однако могут быть ситуации, когда вы обнаружите, что выделение micro недостаточно или вам не нравится. Хорошей новостью является то, что вы можете создавать свои собственные файлы синтаксиса и помещать их в ~/.config/micro/syntax, и micro будет использовать их вместо дефолтных.

Определение типа файла

Вы должны назначить файл синтаксиса, объявив тип файла:

filetype: go

Определение

Затем вы должны предоставить информацию о том, как определить тип файла:

detect:
    filename: "\\.go$"

micro сопоставляет это регулярное выражение с заданным именем файла, чтобы определить тип файла. Вы также можете предоставить необязательное регулярное выражение header, которое будет проверять первую строку файла. Например:

detect:
    filename: "\\.ya?ml$"
    header: "%YAML"

Правила синтаксиса

Затем вы должны предоставить правила подсветки синтаксиса. Есть два типа правил: шаблоны и регионы. Шаблон сопоставляется в одной строке и, как правило, в одном слове. Регион выделяется между двумя шаблонами на нескольких строках и может иметь свои собственные правила внутри региона.

Вот несколько примеров шаблонов в Go:

rules:
    - special: "\\b(break|case|continue|default|go|goto|range|return)\\b"
    - statement: "\\b(else|for|if|switch)\\b"
    - preproc: "\\b(package|import|const|var|type|struct|func|go|defer|iota)\\b"

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

А вот несколько примеров регионов для Go:

- constant.string:
    start: "\""
    end: "\""
    rules:
        - constant.specialChar: "%."
        - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]"
        - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})"

- comment:
    start: "//"
    end: "$"
    rules:
        - todo: "(TODO|XXX|FIXME):?"

- comment:
    start: "/\\*"
    end: "\\*/"
    rules:
        - todo: "(TODO|XXX|FIXME):?"

Обратите внимание, как регионы могут содержать внутри себя правила. Затем любые совпадающие внутренние правила пропускаются при поиске конца области. Например, при выделении "foo \" bar", поскольку \" соответствует внутреннему правилу в регионе, оно пропускается. Аналогично для "foo \\" bar, поскольку \\ соответствует внутреннему правилу, оно пропускается, а затем " обнаруживается, и строка заканчивается в правильном месте.

Вы также можете явно пометить пропускаемые регулярные выражения, если не хотите, чтобы они выделялись. Например:

- constant.string:
    start: "\""
    end: "\""
    skip: "\\."
    rules: []
Includes

Вы также можете включать правила из других файлов синтаксиса в качестве встроенных языков. Например, для html возможно следующее:

- default:
    start: "<script.*?>"
    end: "</script.*?>"
    rules:
        - include: "javascript"

- default:
    start: "<style.*?>"
    end: "</style.*?>"
    rules:
        - include: "css"

Заголовки файлов синтаксиса

Заголовки файлов синтаксиса — это оптимизация, и, вероятно, вам не нужно о них беспокоиться.

Заголовки файлов синтаксиса — это файлы, которые содержат только тип файла и регулярные выражения обнаружения для данного файла синтаксиса. Они имеют суффикс .hdr и по умолчанию используются только для предварительно установленных файлов синтаксиса. Заголовочные файлы позволяют micro намного быстрее анализировать файлы синтаксиса при проверке типа определенного файла. Файлы настраиваемого синтаксиса могут содержать файлы заголовков в ~/.config/micro/syntax тоже, но в этом нет необходимости (делайте это только если у вас много (100+) файлов настраиваемого синтаксиса и вы хотите повысить производительность).