Документация 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.
Доступные разделы справки:
- Руководство (tutorial): краткое руководство, в котором дается обзор всех других разделов справки.
- Привязки клавиш (keybindings): полный список привязок клавиш по умолчанию, а также способы их повторного связывания
- Клавиши по умолчанию (defaultkeys): более понятный список горячих клавиш и того, что они делают.
- Команды (commands): список всех команд и того, что они делают
- Опции (options): список всех параметров, которые вы можете настроить
- Плагины (plugins): объясняет систему работы плагинов micro и как создавать свои собственные плагины
- Цвета (colors): объясняет механизм подсветки цветовой схемы и синтаксиса micro, а также рассказывает, как создавать свои собственные цветовые схемы или добавлять новые языки в движок.
К примеру, чтобы открыть страницу справки по плагинам, вы должны запустить > 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 не пересылают альтернативные события и вместо этого вставляют символы Юникода. Чтобы исправить это, сделайте следующее:
-
iTerm2: выберите
Esc +
дляLeft Option Key
вPreferences->Profiles->Keys
. -
Terminal.app: включите опцию
Use Option key as Meta key
вPreferences->Profiles->Keyboard
.
Теперь, когда вы нажимаете 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 это не обязательно.
-
bind 'key' 'action'
: создает привязку клавиши к действию. См. документацию поkeybindings
для получения дополнительной информации о привязке клавиш. Эта команда изменитbindings.json
и перезапишет любые привязки кkey
, которые уже существуют. -
help 'topic'?
: открывает соответствующий раздел справки. Если тема не указана, откроется экран справки по умолчанию. -
save 'filename'?
: сохраняет текущий буфер. Если файл указан, он будет «сохранен как» filename. -
quit
: закрывает micro. -
replace 'search' 'value' 'flags'?
: заменяетsearch
наvalue
. Флаги не обязательны. Возможные флаги:-a
: заменить все вхождения сразу-l
: выполнить буквальный поиск вместо поиска по регулярному выражению
Обратите внимание, что
search
должен быть допустимым регулярным выражением (если не передан-l
). Если в каком либо аргументе нет пробелов, то кавычки в нем вы можете опустить. -
replaceall 'search' 'value'
: заменяет все вхожденияsearch
наvalue
без подтверждения пользователя.См. команду
replace
для получения дополнительной информации. -
set 'option' 'value'
: устанавливает для параметра значение. См. раздел справкиoptions
для получения списка параметров, которые вы можете установить. Команда изменяет в вашем файлеsettings.json
это значение на новое. -
setlocal 'option' 'value'
: устанавливает значение параметра локально (только в текущем буфере). Команда не изменяетsettings.json
. -
show 'option'
: показывает текущее значение данной опции. -
run 'sh-command'
: запускает указанную команду оболочки в фоновом режиме. По окончании выполнения вывод команды будет отображаться в одной строке. -
vsplit 'filename'
: открывает вертикальное разделение с файломfilename
. Если имя файла не указано, открывается вертикальное разделение с пустым буфером. -
hsplit 'filename'
: то же, что иvsplit
, но открывает горизонтальное разделение вместо вертикального. -
tab 'filename'
: открывает указанный файл в новой вкладке. -
tabmove '[-+]?n'
: перемещает активную вкладку в другой слот.n
— целое число. Если передn
стоит префикс-
или+
, то он представляет относительную позицию (например,tabmove +2
перемещает вкладку вправо на2
). Если уn
нет префикса, он представляет собой абсолютную позицию (например,tabmove 2
перемещает вкладку в слот2
). -
tabswitch 'tab'
: команда переключения на указанную вкладку.tab
может быть либо номером вкладки, либо именем вкладки. -
textfilter 'sh-command'
: фильтрует текущий выбор с помощью команды оболочки в качестве стандартного ввода и заменяет выбор стандартным выводом команды оболочки. Например, чтобы отсортировать список чисел, сначала выберите их, а затем выполните> textfilter sort -n
. -
log
: открывает журнал всех сообщений и отладочных операторов. -
plugin list
: перечисляет все установленные плагины. -
plugin install 'pl'
: устанавливает плагин. -
plugin remove 'pl'
: удаляет плагин. -
plugin update 'pl'
: обновляет плагин (если не указаны аргументы, обновляет все плагины). -
plugin search 'pl'
: поиск доступных плагинов по ключевому слову. -
plugin available
: показывает доступные плагины, которые можно установить. -
reload
: перезагружает все файлы времени выполнения. -
cd 'path'
: изменяет рабочий каталог на указанныйpath
. -
pwd
: выводит текущий рабочий каталог. -
open 'filename'
: открывает файл в текущем буфере. -
reset 'option'
: сбрасывает данную опцию до значения по умолчанию -
retab
: заменяет все ведущие табуляции пробелами или ведущие пробелы табуляциями в зависимости от значенияtabstospaces
. -
raw
: micro открывает новую вкладку и показывает escape-последовательность для каждого события, которое он получает от терминала. Команда показывает, что именно micro реально видит из терминала, и помогает понять, какие привязки невозможны и почему. Это наиболее полезно для отладки привязок клавиш. -
showkey
: показывает действие(я), привязанное(ые) к данной клавише. Например, запуск> showkey Ctrl-c
отобразитCopy
. -
term exec?
: открывает эмулятор терминала, на котором запущен данный исполняемый файл. Если исполняемый файл не указан, в эмуляторе терминала откроется оболочка по умолчанию.
Плагины по умолчанию предоставляют следующие команды:
-
lint
: проверить текущий файл на предмет ошибок. -
comment
: автоматически комментирует или раскомментирует текущий выбор или строку.
Опции (options)
Micro хранит всю пользовательскую конфигурацию в своем каталоге конфигурации.
Micro использует $MICRO_CONFIG_HOME
в качестве каталога конфигурации. Если эта переменная среды не установлена, вместо нее используется $XDG_CONFIG_HOME/micro
. Если эта переменная среды не установлена, используется ~/.config/micro
в качестве каталога конфигурации. В документации мы используем ~/.config/micro
для ссылки на каталог конфигурации (даже если он на самом деле расположен в другом месте, если вы установили любую из указанных выше переменных среды).
Вот доступные опции:
-
autoindent
: при создании новой строки используйте тот же отступ, что и в предыдущей строке.значение по умолчанию:
true
-
autosave
: автоматически сохранять буфер каждые n секунд, где n — значение опции автосохранения. Также при выходе из измененного буфера micro автоматически сохранится и выйдет. Имейте в виду, что этот параметр сохраняет буфер без запроса пользователя, поэтому данные могут быть перезаписаны. Если для этого параметра установлено значение «0», автосохранение не выполняется.значение по умолчанию:
0
-
autosu
: при сохранении файла, на изменение которого у пользователя нет разрешения, micro спросит, хочет ли пользователь использовать привилегии суперпользователя для сохранения файла. Если эта опция включена, micro автоматически попытается использовать привилегии суперпользователя для сохранения, не спрашивая пользователя.значение по умолчанию:
false
-
backup
: micro автоматически сохранит резервные копии всех открытых буферов. Резервные копии хранятся в~/.config/micro/backups
и удаляются, когда буфер полностью закрывается. В случае сбоя системы или микропроцесса содержимое буфера можно восстановить автоматически, открыв файл, который редактировался до сбоя, или вручную, выполнив поиск резервной копии в каталоге резервных копий. Резервные копии для вновь измененных буферов создаются в фоновом режиме каждые 8 секунд или когда micro обнаруживает сбой.значение по умолчанию:
true
-
backupdir
: каталог, куда micro должен помещать резервные копии. Для значения по умолчанию""
(пустая строка) каталог резервного копирования будетConfigDir/backups
, по умолчанию это~/.config/micro/backups
. Каталог, указанный для резервных копий, будет создан, если он не существует.значение по умолчанию:
""
(пустая строка) -
basename
: в информационной панели и панели вкладок показывать только базовое имя редактируемого файла, а не полный путь.значение по умолчанию:
false
-
clipboard
: указывает, как micro должен получать доступ к системному буферу обмена. Возможные значения:-
external
: обращаться к буферу обмена через внешний инструмент, такой как xclip/xsel или wl-clipboard в Linux, pbcopy/pbpaste в MacOS и системные вызовы в Windows. В Linux, если у вас не установлен один из инструментов или они не работают, micro выдает ошибку и использует внутренний буфер обмена. -
terminal
: обращаться к буферу обмена через эмулятор вашего терминала. Обратите внимание, что эмуляторы терминала имеют ограниченную поддержку этой функции (называемой OSC 52). Известно, что работающие терминалы — это Kitty (разрешить чтение с параметромclipboard_control
), iTerm2 (только копирование), st, rxvt-unicode и xterm, если он включен (подробности см. в> help copypaste
). Обратите внимание, что Gnome-terminal не поддерживает эту функцию. С этой настройкой копипаст будет работать по ssh. Подробности см. в> help copypaste
. -
internal
: micro будет использовать внутренний буфер обмена.
значение по умолчанию:
external
-
-
colorcolumn
: если значение не установлено в 0, то будет отображаться столбец в указанном столбце. Это полезно, например, если вы хотите, чтобы столбец 80 был выделен особым образом.значение по умолчанию:
0
-
colorscheme
: загружает цветовую схему, хранящуюся в$(configDir)/colorschemes/option.micro
, этот параметр являетсяglobal only
.значение по умолчанию:
default
Обратите внимание, что цветовые схемы по умолчанию (default, solarized и solarized-tc) не находятся в configDir, потому что они встроены в бинарный файл micro.
Цветовую схему можно выбрать из всех файлов в каталоге
~/.config/micro/colorschemes/
. По умолчанию micro поставляется с тремя цветовыми схемами:Вы можете узнать больше о цветовых схемах micro в разделе
colors
справки (help colors
). -
cursorline
: выделить строку, на которой находится курсор, другим цветом (цвет определяется используемой цветовой схемой).значение по умолчанию:
true
-
diffgutter
: отображать индикаторы различий перед строками.значение по умолчанию:
false
-
divchars
: указывает символы-разделители, используемые для разделительной линии между вертикальным/горизонтальным разделением. Первый символ предназначен для вертикальных разделителей, а второй — для горизонтальных разделителей. По умолчанию для горизонтального разделения строка состояния служит разделителем, но если строка состояния отключена, будет использоваться символ горизонтального разделителя.значение по умолчанию:
|-
-
divreverse
: цветовые схемы предоставляют цвет (передний план и фон) для символов, отображаемых в разделителях. Если этот параметр включен, цвета, указанные в цветовой схеме, меняются местами (цвета переднего плана и фона меняются местами).значение по умолчанию:
true
-
encoding
: кодировка для открытия и сохранения файлов. Поддерживаемые кодировки перечислены на https://www.w3.org/TR/encoding/.значение по умолчанию:
utf-8
-
eofnewline
: micro автоматически добавит новую строку в конец файла, если она не существует.значение по умолчанию:
true
-
fastdirty
: определяет, какой алгоритм использует micro, чтобы определить, модифицирован буфер или нет. Когда включенfastdirty
, micro просто использует логическое значениеmodified
, которое устанавливается вtrue
, как только пользователь вносит изменения. Это быстро, но может быть неточно. Еслиfastdirty
выключен, то micro будет хешировать текущий буфер по хешу исходного файла (созданного при загрузке буфера). Это более точно, но, очевидно, требует больших ресурсов. Эта опция будет автоматически отключена, если размер файла превышает 50 КБ.значение по умолчанию:
false
-
fileformat
: определяет, какие окончания строки будут использоваться для файла. Окончание строки Unix — это просто\n
(перевод строки), тогда как окончание строки dos —\r\n
(возврат каретки + перевод строки). Два возможных значения этой опции —unix
иdos
. Формат файла будет автоматически определен (при открытии существующего файла) и отображаться в строке состояния, но эта опция полезна, если вы хотите изменить окончание строки или если вы запускаете новый файл. Изменение этого параметра во время редактирования файла приведет к изменению его окончаний строк. Открытие файла с этим набором параметров будет иметь эффект только в том случае, если файл пустой или только что созданный, потому что в противном случае формат файла будет автоматически определяться по окончаниям существующих строк.значение по умолчанию:
unix
-
filetype
: устанавливает тип файла для текущего буфера. Установите для этого параметра значениеoff
, чтобы полностью отключить определение типа файла.значение по умолчанию:
unknown
. Это будет автоматически отменено в зависимости от файла, который вы открываете. -
hlsearch
: выделить все экземпляры искомого текста после успешного поиска. Эту подсветку можно отключить с помощью действияUnhighlightSearch
(по умолчанию запускается клавишей Esc) или включить/выключить с помощью действияToggleHighlightSearch
. Обратите внимание, что эти действия не изменяют настройкиhlsearch
. Пока дляhlsearch
установлено значение true, после следующего поиска подсветка снова включается.значение по умолчанию:
false
-
incsearch
: включить инкрементный поиск в строке Find (соответствие по мере ввода).значение по умолчанию:
true
-
ignorecase
: выполнять поиск без учета регистра.значение по умолчанию:
true
-
indentchar
: устанавливает символ отступа. Этот символ не будет вставлен в файлы; это всего лишь визуальный индикатор наличия пробелов. Если в качестве значения задан печатный символ, он функционирует как подмножество параметра "показывать невидимые объекты", доступный во многих других текстовых редакторах. Цвет этого символа определяется полемindent-char
в текущей теме, а не цветом текста по умолчанию.значение по умолчанию:
(пробел)
-
infobar
: включает строку внизу редактора, в которой печатаются сообщения. Эта опция являетсяglobal only
.значение по умолчанию:
true
-
keepautoindent
: при использовании автоотступа добавляются пробелы. Этот параметр определяет, следует ли при переходе к следующей строке без каких-либо вставок удалить добавленный пробел, чтобы удалить конечный пробел. По умолчанию пробелы с автоотступом удаляются, если строка оставалась пустой.значение по умолчанию:
false
-
keymenu
: отобразить меню клавиш в стиле нано в нижней части экрана. Обратите внимание, чтоToggleKeyMenu
по умолчанию привязан кAlt-g
, и это отображается в строке состояния. Чтобы отключить это, просто укажитеUnbindKey
дляAlt-g
.значение по умолчанию:
false
-
matchbrace
: подчеркивать соответствующие фигурные скобки для '()', '{}', '[]', когда курсор находится на символе скобки.значение по умолчанию:
true
-
mkparents
: если файл открыт по пути, который не существует, файл не может быть сохранен, потому что родительские каталоги не существуют. Эта опция позволяет micro автоматически создавать родительские каталоги в такой ситуации.значение по умолчанию:
false
-
mouse
: поддержка мыши. Когда поддержка мыши отключена, обычно терминал будет иметь доступ к событиям мыши, что может быть полезно, если вы хотите скопировать из терминала, а не из micro (например, если через ssh, потому что терминал имеет доступ к локальному буферу обмена, а micro нет).значение по умолчанию:
true
-
paste
: обрабатывать символы, отправленные с терминала в одном фрагменте, как событие вставки, а не серию нажатий клавиш вручную. Если вы вставляете с использованием привязки клавиш терминала (а не Ctrl-v, которая является привязкой клавиш вставки по умолчанию в micro), то рекомендуется включить эту опцию во время вставки и отключить, когда вставка закончится. См.> help copypaste
для подробностей о копировании и вставке в среде терминала.значение по умолчанию:
false
-
parsecursor
: если включено, это заставит micro анализировать имена файлов, такие как file.txt:10:5, как запрос на открытиеfile.txt
с курсором в строке 10 и столбце 5. Номер столбца также можно опустить. , чтобы открыть файл в заданной строке и столбце 0. Обратите внимание, что с включенной этой опцией невозможно открыть такой файл, какfile.txt:10:5
, где:10:5
является частью имени файла. Также можно открыть файл с определенным местоположением курсора, используя синтаксис флага+LINE,COL
. См.micro -help
для подробностей про опции командной строки.значение по умолчанию:
false
-
permbackup
: эта опция заставляет резервные копии (см. опциюbackup
) постоянно сохраняться. При постоянном резервном копировании micro не удаляет резервные копии при закрытии файлов и никогда не применяет их к существующим файлам. Используйте эту опцию, если вы хотите вручную управлять файлами резервных копий.значение по умолчанию:
false
-
pluginchannels
: список URL-адресов, указывающих на каналы плагинов для загрузки и установки плагинов. Канал плагина состоит из файла json со ссылками на репозитории плагинов, в которых хранится информация о версиях плагинов и URL-адресах загрузки. По умолчанию этот параметр указывает на официальный канал плагина, размещенный на GitHub по адресу https://github.com/micro-editor/plugin-channel.значение по умолчанию:
https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json
-
pluginrepos
: список ссылок на репозитории плагинов.значение по умолчанию:
[]
-
readonly
: при включении запрещает редактирование буфера. Рекомендуется устанавливать эту опцию только локально, используяsetlocal
.значение по умолчанию:
false
-
rmtrailingws
: micro автоматически обрезает конечные пробелы на концах строк. Примечание: этот параметр переопределяетkeepautoindent
.значение по умолчанию:
false
-
ruler
: отображать номера строк.значение по умолчанию:
true
-
relativeruler
: сделать отображение номеров строк относительно. Если установлено значение true, все строки, кроме строки, в которой находится курсор, будут отображать расстояние от строки курсора.значение по умолчанию:
false
-
savecursor
: запомнить, где был курсор в последний раз, когда файл был открыт, и поместить его туда, когда файл будет открыт снова. Информация сохраняется в~/.config/micro/buffers/
значение по умолчанию:
false
-
savehistory
: запомнить историю команд между закрытием и повторным открытием micro. Информация сохраняется в~/.config/micro/buffers/history
.значение по умолчанию:
true
-
saveundo
: когда эта опция включена, отмена сохраняется даже после закрытия файла, поэтому, если вы закроете и снова откроете файл, вы можете продолжить отмену. Информация сохраняется в~/.config/micro/buffers/
.значение по умолчанию:
false
-
scrollbar
: отображать полосу прокруткизначение по умолчанию:
false
-
scrollmargin
: поле, при котором окно начинает прокручиваться, когда курсор приближается к краю экрана.значение по умолчанию:
3
-
scrollspeed
: количество строк для прокрутки за одно событие прокрутки.значение по умолчанию:
2
-
smartpaste
: добавлять начальные пробелы при вставке нескольких строк. Эта опция попытается сохранить текущий уровень отступа при вставке блока без отступов.значение по умолчанию:
true
-
softwrap
: переносить слишком длинные строки, чтобы поместить их на экране.значение по умолчанию:
false
-
splitbottom
: при создании горизонтального разделения создать его ниже текущего разделения.значение по умолчанию:
true
-
splitright
: при создании вертикального разделения создайте его справа от текущего разделения.значение по умолчанию:
true
-
statusformatl
: определение строки формата для выровненной по левому краю части строки состояния. Специальные директивы должны быть помещены внутри$()
. К специальным директивам относятся:filename
,modified
,line
,col
,lines
,percentage
,opt
,bind
. Директивыopt
иbind
после этого принимают либо параметр, либо действие и заполняют значение параметра или ключа, привязанного к действию.значение по умолчанию:
$(filename) $(modified)($(line),$(col)) $(status.paste)| ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)
-
statusformatr
: определение строки формата для выровненной по правому краю части строки состояния.значение по умолчанию:
$(bind:ToggleKeyMenu): bindings, $(bind:ToggleHelp): help
-
statusline
: отображать статусную строку внизу экрана.значение по умолчанию:
true
-
sucmd
: указывает команду суперпользователя. В большинстве систем это «sudo», но в BSD это может быть «doas». Этот параметр можно настроить, и он используется только при сохранении с помощью su.значение по умолчанию:
sudo
-
syntax
: включает подсветку синтаксиса.значение по умолчанию:
true
-
tabmovement
: перемещаться по пробелам в начале строк, как если бы они были табуляцией (например, перемещаться по 4 пробелам одновременно). Эта опция делает что-нибудь, только еслиtabstospaces
включен.значение по умолчанию:
false
-
tabsize
: размер в пробелах, с которым должен отображаться символ табуляции.значение по умолчанию:
4
-
tabstospaces
: использовать пробелы вместо табуляции. Примечание: этот параметр будет переопределен плагином ftoptions для определенных типов файлов. Чтобы отключить это поведение, добавьте"ftoptions": false
в свою конфигурацию. Более подробную информацию смотрите в issue #2213.значение по умолчанию:
false
-
useprimary
(полезно только в unix): определяет, будет ли micro использовать основной буфер обмена для копирования выделений в фоновом режиме. Это не влияет на обычный буфер обмена при использовании Ctrl-c и Ctrl-v.значение по умолчанию:
true
-
wordwrap
перенос длинных строк по словам, т.е. разрыв через пробелы. Этот параметр выполняет какие-либо действия только в том случае, если включена функцияsoftwrap
.значение по умолчанию:
false
-
xterm
: micro будет считать, что терминал, на котором он работает, соответствуетxterm-256color
независимо от того, что фактически содержит переменная$TERM
. Включение этой опции может вызвать нежелательные эффекты, если ваш терминал фактически не соответствует стандартуxterm-256color
.значение по умолчанию:
false
Параметры плагинов: все плагины имеют специальную опцию для их включения или отключения. Имя параметра такое же, как и сам плагин, а значение является логическим.
По умолчанию предоставляются следующие плагины, каждый с возможностью их включения или отключения:
-
autoclose
: автоматически закрывает скобки, кавычки и т. д. -
comment
: обеспечивает автоматическое комментирование для нескольких языков. -
ftoptions
: изменяет некоторые параметры по умолчанию в зависимости от типа файла -
linter
: обеспечивает расширяемый линтинг для многих языков -
literate
: обеспечивает расширенную подсветку синтаксиса для инструмента программирования Literate. -
status
: предоставляет некоторые расширения строки состояния (интеграция с Git и многое другое). -
diff
: интегрирует опциюdiffgutter
с Git. Если вы находитесь в каталоге Git, в полосе нумерации строк будут отображаться изменения относительно самого последнего коммита Git, а не различия с момента открытия файла.
Любая опция, которую вы установили в редакторе, будет сохранена в файле ~/.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:
-
init()
: эта функция должна использоваться для инициализации вашего плагина. Эта функция вызывается после инициализации буферов. -
preinit()
: функция инициализации вызывается до того, как буферы были инициализированы. -
postinit()
: функция инициализации, вызываемая послеinit()
. -
onBufferOpen(buf)
: запускается при открытии буфера. Входные данные содержат буферный объект. -
onBufPaneOpen(bufpane)
: запускается при открытии bufpane. Входные данные содержат объект bufpane. -
onAction(bufpane)
: запускается, когдаAction
запускается пользователем, гдеAction
— это связываемое действие (см.> help keybindings
). bufpane передается в качестве входных данных, и функция должна возвращать логическое значение, определяющее следует ли переместить представление после выполнения этого действия. -
preAction(bufpane)
: запускается непосредственно перед запускомAction
пользователем. Возвращает логическое значение, которое определяет, должно ли действие быть отменено.
Например, функция, которая запускается каждый раз, когда пользователь сохраняет буфер, будет:
function onSave(bp)
...
return false
end
Переменная bp
— это ссылка на панель буферов, внутри которой выполняется действие. Это почти всегда текущий bufpane.
Все доступные действия перечислены в разделе справки о сочетаниях клавиш (keybindings).
Эти функции также должны возвращать логическое значение, определяющее, следует ли переместить панель буферов к курсору или нет после завершения действия.
Доступ к функциям micro
Некоторая внутренняя информация micro представлена в виде пакетов, которые могут быть импортированы плагинами Lua. Пакет можно импортировать в Lua и получить доступ к значению в нем, используя следующий синтаксис:
local micro = import("micro")
micro.Log("Hello")
Пакеты и функции перечислены ниже (в сигнатурах типа Go):
-
micro
-
TermMessage(msg interface{}...)
: временно закрыть micro и распечатать сообщение -
TermError(filename string, lineNum int, err string)
: временно закрыть micro и вывести сообщение об ошибке в форматеfilename, lineNum: err
. -
InfoBar()
: вернуть объект BufPane информационной панели. -
Log(msg interface{}...)
: записать сообщение вlog.txt
(требуется флаг-debug
или двоичный файл, созданный с помощьюbuild-dbg
). -
SetStatusInfoFn(fn string)
: зарегистрировать данную функцию lua как доступную из параметров форматирования строки состояния. -
CurPane() *BufPane
: возвращает текущую панель BufPane или ноль, если текущая панель не является BufPane. -
CurTab() *Tab
: возвращает текущую вкладку.
-
-
micro/config
-
MakeCommand(name string, action func(bp *BufPane, args[]string), completer buffer.Completer)
: создать команду с заданным именем и функцию обратного вызова lua, когда команда запущена. Также может быть дан комплект, чтобы указать, как автозаполнение должно работать с пользовательской командой. -
FileComplete
: автозаполнение с использованием файлов в текущем каталоге -
HelpComplete
: автозаполнение с использованием имен документов справки -
OptionComplete
: автозаполнение с использованием имен опций -
OptionValueComplete
: автозаполнение с использованием имен параметров и допустимость значения после этого -
NoComplete
: нет предложений автозаполнения -
TryBindKey(k, v string, overwrite bool) (bool, error)
: привязать клавишуk
к строкеv
в файлеbindings.json
. Еслиoverwrite
— true, то это перезапишет любую существующую привязку к клавишеk
. Возвращает true если привязка была сделана, и возможную ошибку (например, запись вbindings.json
может вызвать ошибку). -
Reload()
: перезагрузить файлы конфигурации. -
AddRuntimeFileFromMemory(filetype RTFiletype, filename, data string)
: добавить файл среды выполнения к типу файла времени выполненияfiletype
с именемfilename
и даннымиdata
. -
AddRuntimeFilesFromDirectory(plugin string, filetype RTFiletype, directory, pattern string)
: добавить файлы времени выполнения для данного плагина с данным RTFiletype из каталога в корне плагина. Добавляет только файлы, соответствующие шаблону с использованием Go файлаfilepath.Match
-
AddRuntimeFile(plugin string, filetype RTFiletype, filepath string)
: добавить данный файл в корневой каталог плагина как исполняемый файл в данную категорию RTFiletype. -
ListRuntimeFiles(fileType RTFiletype) []string
: возвращает список имен исполняемых файлов данного типа. -
ReadRuntimeFile(fileType RTFiletype, name string) string
: возвращает содержимое данного исполняемого файла. -
NewRTFiletype() int
: создает новый RTFiletype и возвращает его значение. -
RTColorscheme
: файлы времени выполнения для цветовых схем. -
RTSyntax
: файлы времени выполнения для файлов синтаксиса. -
RTHelp
: файлы среды выполнения для справочных документов. -
RTPlugin
: файлы времени выполнения для исходного кода плагина. -
RegisterCommonOption(pl string, name string, defaultvalue interface{})
: регистрирует новую опцию для данного плагина. Название опции будетpl.name
, и будет иметь заданное значение по умолчанию. Поскольку это регистрирует общую опцию, опция будет изменяться для каждого буфера, а также иметь глобальное значение (в GlobalSettings map). -
RegisterGlobalOption(pl string, name string, defaultvalue interface{})
: То же, что иRegisterCommonOption
, но параметр не может быть изменен локально для каждого буфера. -
GetGlobalOption(name string) interface{}
: возвращает значение данный плагин вGlobalSettings
map. -
SetGlobalOption(option, value string) error
: устанавливает параметр в заданное значение. То же, что и при использовании команды> set
. Это проанализирует значение к фактическому типу значения. -
SetGlobalOptionNative(option string, value interface{}) error
: устанавливает параметр для данного значения, где тип значения — это фактический тип значения внутри.
-
-
micro/shell
-
ExecCommand(name string, arg ...string) (string, error)
: запускает исполняемый файл с заданными аргументами и передает вывод (stderr и stdout) исполняемого файла во внутренний буфер, который возвращается как строка вместе с возможной ошибкой. -
RunCommand(input string) (string, error)
: то же самое, чтоExecCommand
, за исключением того, что здесь используется синтаксический анализатор аргументов micro для анализа аргументов из ввода. Например,cat 'hello world.txt' file.txt
передаст два аргумента в списке аргументовExecCommand
(аргументы в кавычках сохранят пробелы). -
RunBackgroundShell(input string) (func() string, error)
: возвращает функцию, которая запустит заданную команду оболочки и вернет ее результат. -
RunInteractiveShell(input string, wait bool, getOutput bool) (string, error)
: временно закрывает micro и запускает заданную команду в терминале. Еслиwait
истинно, micro будет ждать, пока пользователь нажмет Enter, прежде чем вернуться к редактированию текста. ЕслиgetOutput
истинно, micro перенаправит stdout из команды в возвращенную строку. -
JobStart(cmd string, onStdout, onStderr, onExit func(string, []interface{}), userargs ...interface{}) *exec.Cmd
: запускает фоновое задание, запустив оболочку по заданной команде (используяsh -c
). Могут быть предоставлены три обратных вызова, которые будут вызываться когда команда генерирует stdout, stderr или завершает работу. Пользователи будут передаваться в обратные вызовы вместе с выводом в качестве первого аргумента обратного вызова. -
JobSpawn(cmd string, cmdArgs []string, onStdout, onStderr, onExit func(string, []interface{}), userargs ...interface{}) *exec.Cmd
: то же, чтоJobStart
, за исключением того, что команда не запускается через оболочку и вместо этого принимает в качестве входных данных список аргументов. -
JobStop(cmd * exec.Cmd)
: убивает задание. -
JobSend(cmd *exec.Cmd, data string)
: отправляет некоторые данные на стандартный ввод задания. -
RunTermEmulator(h *BufPane, input string, wait bool, getOutput bool, callback func(out string, userargs []interface{}), userargs []interface{}) error
: запускает эмулятор терминала из заданной панели BufPane с помощью входной команды. Еслиwait
истинно, будет ждать, пока пользователь выйдет, нажав Enter как только исполняемый файл завершится, и еслиgetOutput
истинно, будет перенаправлять стандартный вывод процесса в канал, который будет передан в обратный вызов, который представляет собой функцию, которая принимает строку и список необязательных аргументов пользователя. Эта функция возвращает ошибку в системах где эмулятор терминала не поддерживается. -
TermEmuSupported
: true в системах, где поддерживается эмулятор терминала и false в противном случае. Поддерживаемые системы:- Linux
- MacOS
- Dragonfly
- OpenBSD
- FreeBSD
-
-
micro/buffer
-
NewMessage(owner string, msg string, start, end, Loc, kind MsgType) *Message
: создает новое сообщение с владельцем в диапазоне, заданном в начале и конце местоположения. -
NewMessageAtLine(owner string, msg string, line int, kindMsgType) *Message
: создает новое сообщение с владельцем, типом и сообщением в данной строке. -
MTInfo
: информационное сообщение. -
MTWarning
: предупреждающее сообщение. -
MTError
: сообщение об ошибке. -
Loc(x, y int) Loc
: создает новую структуру местоположения. -
BTDefault
: тип буфера по умолчанию. -
BTLog
: тип буфера журнала. -
BTRaw
: тип необработанного буфера. -
BTInfo
: тип информационного буфера. -
NewBuffer(text, path string) *Buffer
: создает новый буфер с данным текстом по определенному пути. -
NewBufferFromFile(path string) (*Buffer, error)
: создает новый буфер путем чтения с диска по заданному пути. -
ByteOffset(pos Loc, buf *Buffer) int
: возвращает байтовый индекс заданной позиции в буфере. -
Log(s string)
: записывает строку в буфер журнала. -
LogBuf() * Buffer
: возвращает буфер журнала.
-
-
micro/util
-
RuneAt(str string, idx int) string
: возвращает руну utf8 в заданный индекс в строке. -
GetLeadingWhitespace(s string) string
: возвращает пробел в начале строки. -
IsWordChar(s string) bool
: возвращает истину, если первая руна в строке — это словесный символ. -
String(b [] byte) string
: конвертирует байтовый массив в строку. -
RuneStr(r rune) string
: конвертирует руну в строку. -
Unzip(src, dest string) error
: распаковывает файл в заданную папку.
-
Это может показаться небольшим списком доступных функций, но некоторые из объектов, возвращаемых функциями, имеют много методов. Плагин 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
предоставляет:
Bytes
Ordinal
Добавление файлов справки, файлов синтаксиса или цветовых схем в ваш плагин
Вы можете использовать функцию 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. Это
-
autoclose
: автоматически закрывает скобки, кавычки и т. д. -
comment
: обеспечивает автоматическое комментирование для нескольких языков. -
ftoptions
: изменяет некоторые параметры по умолчанию в зависимости от типа файла -
linter
: обеспечивает расширяемый линтинг для многих языков -
literate
: обеспечивает расширенную подсветку синтаксиса для инструмента программирования Literate. -
status
: предоставляет некоторые расширения строки состояния (интеграция с Git и многое другое). -
diff
: интегрирует опциюdiffgutter
с Git. Если вы находитесь в каталоге Git, в diff gutter будут отображаться изменения относительно самого последнего коммита Git, а не различия с момента открытия файла.
Смотрите > 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:
-
Как создавать цветовые схемы и использовать их.
-
Как создавать файлы синтаксиса, чтобы добавить их в список языков, которые может подсвечивать micro.
Цветовые схемы
Чтобы изменить цветовую схему, нажмите Ctrl-e в micro, чтобы вызвать командную строку, и введите:
set colorscheme twilight
(или любую цветовую схему по вашему выбору).
Micro по умолчанию поставляется с несколькими цветовыми схемами. Цветовые схемы, которые вы можете отображать, будут зависеть от того, какой тип цветовой поддержки имеет ваш терминал.
Если не указывать цветовую ссылку [fg color],[bg color]
по умолчанию, цвет фона и прозрачность будут соответствовать уже установленным в терминале.
Современные терминалы, как правило, имеют палитру из 16 настраиваемых пользователем цветов (эти цвета часто можно установить в настройках терминала), а дополнительная поддержка цвета поставляется в трех вариантах.
-
16-color: Цветовая схема, в которой используются 16 цветов по умолчанию, всегда будет работать, но будет хорошо выглядеть только в том случае, если 16 цветов по умолчанию настроены по вкусу пользователя. Использование цветовой схемы, в которой используются только 16 цветов из палитры терминала, также сохранит тему терминала из других приложений, поскольку терминал часто будет использовать те же цвета для других приложений. Цветовые схемы этого типа по умолчанию включают
simple
иsolarized
. -
256-color: Почти все терминалы поддерживают отображение дополнительных 240 цветов поверх 16 настраиваемых пользователем (всего 256 цветов). Цветовые схемы, использующие 256 цветов, переносимы, потому что они будут выглядеть одинаково независимо от настроенной 16-цветной палитры. Однако цветовая гамма довольно ограничена из-за небольшого количества доступных цветов. Стандартные 256-цветные цветовые схемы включают
monokai
,twilight
,zenburn
,darcula
и другие. -
true-color: некоторые терминалы поддерживают отображение "true color" с 16 миллионами цветов с использованием стандартных значений RGB. Этот режим сможет поддерживать отображение любой цветовой схемы, но следует отметить, что настроенная пользователем 16-цветная палитра игнорируется при использовании режима true-color (это означает, что цвета при использовании эмулятора терминала будут немного изменены). Не все терминалы поддерживают true-color, но на данный момент это делают большинство терминалов. Поддержка true-color в micro по умолчанию отключена, но ее можно включить, установив для переменной окружения
MICRO_TRUECOLOR
значение 1. Кроме того, ваш терминал должен ее поддерживать (обычно это указывается установкой$COLORTERM
вtruecolor
). Цветовые схемы true-color в micro обычно заканчиваются на-tc
, например,solarized-tc
,atom-dark-tc
,material-tc
и т.д. Если true-color не включен, но установлена цветовая схема true-color, то micro сделает все возможное, чтобы приблизить цвета к доступным 256 цветам.
Вот список цветовых схем:
256 color
Они должны работать и хорошо выглядеть в большинстве терминалов. Я рекомендую использовать именно их.
-
monokai
(также цветовая схемаdefault
) -
zenburn
-
gruvbox
-
darcula
-
twilight
-
railscast
-
bubblegum
16 color
Они могут сильно различаться в зависимости от 16 цветов, выбранных для вашего терминала.
-
simple
-
solarized
(для правильного использования этой цветовой схемы в вашем терминале должна быть палитра solarized) -
cmc-16
-
cmc-paper
-
geany
True-color
True-color требует, чтобы ваш терминал его поддерживал. Это означает, что переменная окружения COLORTERM
должна иметь значение truecolor
, 24bit
или 24-bit
. Кроме того, чтобы включить true-color в micro, переменная окружения MICRO_TRUECOLOR
должна быть установлена в 1. Обратите внимание, что вы должны создать и установить эту переменную самостоятельно.
-
solarized-tc
: Это схема соляризованных цветов для true-color. -
atom-dark-tc
: Эта цветовая схема основана на цветовой схемеdark
в Atom. -
cmc-tc
: Цветовой вариант темыcmc
. Чтобы схема выглядела наилучшим образом, нужен true-color. Используйтеcmc-16
, если ваш терминал не поддерживает true-color. -
gruvbox-tc
: True-color версия цветовой схемыgruvbox
. -
github-tc
: True-color версия цветовой схемы Github. -
material-tc
: Цветовая схема на основе палитры Google Material Design.
Создание цветовой схемы
Цветовые схемы 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
.
Вот список групп цветовых схем, которые вы можете использовать:
- default (цвет фона и переднего плана для невыделенного текста)
- comment
- identifier
- constant
- statement
- symbol
- preproc
- type
- special
- underlined
- error
- todo
- selection (цвет выделенного текста)
- statusline (цвет статусной строки)
- tabbar (цвет панели вкладок со списком открытых файлов)
- indent-char (цвет символа, обозначающего вкладки, если опция включена)
- line-number
- gutter-error
- gutter-warning
- diff-added
- diff-modified
- diff-deleted
- cursor-line
- current-line-number
- color-column
- ignore
- scrollbar
- divider (цвет разделителя между вертикальными разделами)
- message (цвет сообщений в нижней строке экрана)
- error-message (цвет сообщений об ошибках в нижней строке экрана)
Для использования цветовые схемы должны быть помещены в каталог ~/.config/micro/colorschemes
.
Помимо основных групп цветовых схем, есть подгруппы, которые вы можете указать, добавив в группу .subgroup
. Если вы создаете свои собственные файлы синтаксиса, вы можете использовать свои собственные подгруппы.
Если micro не может сопоставить подгруппу, по умолчанию будет использоваться корневая группа, поэтому безопасно и рекомендуется использовать подгруппы в ваших файлах пользовательского синтаксиса.
Например, если в вашей цветовой схеме находится constant.string
, micro будет использовать его для выделения строк. Если она не найдена, вместо нее будет использоваться константа. Micro пытается сопоставить самый большой набор групп, который он может найти в определениях цветовой схемы, поэтому, если, например, будет найдена constant.bool.true
, то micro будет использовать ее. Если constant.bool.true
не найдена, но найдена constant.bool
, micro будет использовать constant.bool
. В противном случае используется constant
.
Вот список подгрупп, используемых во встроенных файлах синтаксиса micro.
- comment.bright (для некоторых типов файлов есть различия между типами комментариев)
- constant.bool
- constant.bool.true
- constant.bool.false
- constant.number
- constant.specialChar
- constant.string
- constant.string.url
- identifier.class (также используется для функций)
- identifier.macro
- identifier.var
- preproc.shebang (#! в начале файла, который сообщает операционной системе, какой интерпретатор сценария использовать)
- symbol.brackets (
{} () []
и иногда<>
) - symbol.operator (цвет символов оператора по-разному)
- symbol.tag (среди прочего, для тегов html)
- type.keyword (если вы хотите выделить такие ключевые слова, как
private
)
В будущем плагины также могут использовать цветовые группы для стилизации.
Файлы синтаксиса
Файлы синтаксиса написаны в формате 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+) файлов настраиваемого синтаксиса и вы хотите повысить производительность).