# テキストエディタ Micro を Delphi 互換のキーバインドで使う --- tags: Delphi プログラミング Pascal micro TurboPascal created_at: 2019-04-20 updated_at: 2024-11-02 --- # はじめに ちょっと前までは Windows で MS-DOS 用のテキストエディタが動作したのですけれど、64bit Windows になってそれらが使えなくなりました。では、**Win32 コンソール**で動作するエディタはというと、そんなにないんですよねー。 # Micro **Micro** は Win32 コンソールで "も" 動作するテキストエディタで、次のプラットフォームに対応しています。 - Windows - macOS - Linux - FreeBSD - NetBSD - OpenBSD Windows で起動させるとこんな感じになります。デフォルトだと地味ですねー。 ![image.png](./images/35e65ca9-a001-6a97-885d-972a2aceb167.png) **See also:** - [Micro text editor](https://micro-editor.github.io/) - [Micro - A modern and intuitive terminal-based text editor (GitHub)](https://github.com/zyedidia/micro) ## カスタマイズ Windows 版の Micro は micro.exe 単体で動作しますので、適当なパスの通った場所に置いておくだけで使えます。環境設定ファイルは Windows ですと `%USERPROFILE%\.config\micro` にある `settings.json` です。 設定ファイルは一度 Micro を起動すると生成されます。micro.exe を実行して、`〔Ctrl〕+〔Q〕`で一旦終了させましょう。 ### 基本的なカスタマイズ まずは `settings.json` をいじって基本的な設定を行います。 ```json "fileformat": "dos", "tabsize": 2, "tabstospaces": true, ``` - `fileformat` は改行コードです (デフォルト: `unix`)。`dos` を指定すると改行コードが CR+LF になります。 - `tabsize` はタブ幅です (デフォルト: `4`)。宗教論争の火種ですが、Delphi に合わせるので `2` にします。 - `tabstospaces` はソフトウェアタブの指定です (デフォルト: `false`)。これまた宗教論争の火種ですが、Delphi に合わせるので `true` にしてソフトウェアタブにします。 この状態で Micro を起動して触ってみましょう。`〔Shift〕+カーソル` で文字列を選択できたり、`〔Ctrl〕+〔X〕`、`〔Ctrl〕+〔C〕`、`〔Ctrl〕+〔V〕` でクリップボードのカット、コピー、ペースト操作ができたりしますよね?とてもクセのないテキストエディタです。 ![image.png](./images/51f9a019-b368-3327-3886-5a39e4bee58a.png) このまま`〔Ctrl〕+〔S〕`で Pascal ソースファイルとして保存してみます。そして`〔Ctrl〕+〔E〕`を押し、`reload [Enter]` と入力すると、強調構文表示されます。 ![image.png](./images/6c3e5303-2e42-236a-85f2-555c8990ade4.png) Micro は 90 言語の強調構文表示に対応しています。 **See also:** - [Options - Micro (GitHub)](https://github.com/zyedidia/micro/blob/master/runtime/help/options.md) - [Syntax Files - Micro (GitHub)](https://github.com/zyedidia/micro/blob/master/runtime/syntax/README.md) - [micro/runtime/syntax/ - Micro (GitHub)](https://github.com/zyedidia/micro/tree/master/runtime/syntax) ### カラースキーム Micro はカラースキームを変更できます。カラースキームは`〔Ctrl〕+〔E〕`を押して**コマンドモード** (プロンプトは `>`) に入り ``` > set colorscheme [カラースキーム] ``` で変更できます。コマンドモードでは`〔Tab〕`キーによる入力補完が可能です。 WIn32 コンソールで使う分には 16 色のカラースキームしか使えません。指定できるカラースキームは次の通りです。 - `simple` - `solarized` - `cmc-16` - `cmc-paper` - `geany` ![image.png](./images/ce92899f-a185-8e16-a60f-6cef1f53f342.png) `cmc-16` を指定してみました。 **See also:** - [Colors - Micro (GitHub)](https://github.com/zyedidia/micro/blob/master/runtime/help/colors.md) ### カスタムカラースキーム カラースキームをカスタマイズするには、`%USERPROFILE%\.config\micro` に `colorschemes` というサブフォルダを作成し、その中に xxxxx.micro という設定ファイルを置きます。 Turbo Pascal っぽいカラースキームファイルを作ってみました。 ```:Turbo-16.micro #16 colour version. #Turbo Pascal color scheme. color-link default ",blue" color-link comment "bold black" color-link constant "cyan" color-link constant.bool "bold cyan" color-link constant.bool.true "bold green" color-link constant.bool.false "bold red" color-link constant.string "yellow" color-link constant.string.url "underline blue, white" #color-link constant.number "constant" color-link constant.specialChar "bold magenta" color-link identifier "bold red" color-link identifier.macro "bold red" color-link identifier.var "bold blue" #color-link identifier.class "bold green" color-link identifier.class "bold white" color-link statement "bold yellow" color-link symbol "red" color-link symbol.brackets "blue" color-link symbol.tag "bold blue" color-link symbol.tag.extended "bold green" color-link preproc "bold cyan" color-link type "green" color-link type.keyword "bold green" color-link special "magenta" color-link ignore "default" color-link error "bold ,brightred" color-link todo "underline black,brightyellow" color-link indent-char ",brightgreen" color-link line-number "white" color-link line-number.scrollbar "white" color-link statusline "blue,white" color-link tabbar "blue,white" color-link current-line-number "bold yellow" color-link current-line-number.scroller "bold yellow" color-link gutter-error ",red" color-link gutter-warning "red" color-link color-column "cyan" color-link underlined.url "underline blue, white" color-link divider "white" ``` これを`%USERPROFILE%\.config\micro\colorschemes` にコピーし、Micro を起動していたのならコマンドモードで `reload [Enter]` してから、コマンドモードで ``` > set colorscheme Turbo-16 [Enter] ``` とします。あら、Turbo Pascal っぽい。 ![image.png](./images/8dc74f97-fd1e-6601-92c0-863ad61a7972.png) ### キーバインド キーバインドを変更するには `%USERPROFILE%\.config\micro` に `bindings.json` という名前の設定ファイルを置きます。micro を起動していたのならコマンドモードで `reload [Enter]` すると設定が反映されます。 Delphi のキーバインドにほぼ近い設定ファイルを作ってみました。 ```json:bindings.json { "Backspace": "Backspace", "Backtab": "OutdentSelection,OutdentLine", "CtrlA": "SelectAll", "CtrlC": "Copy", "CtrlF": "Find", "CtrlO": "OpenFile", "CtrlS": "Save", "CtrlShiftZ": "Redo", "CtrlV": "Paste", "CtrlX": "Cut", "CtrlZ": "Undo", "Delete": "Delete", "Down": "CursorDown", "End": "EndOfLine", "Enter": "InsertNewline", "Esc": "Escape", "Home": "StartOfLine", "Left": "CursorLeft", "PageDown": "CursorPageDown", "PageUp": "CursorPageUp", "Right": "CursorRight", "Tab": "IndentSelection,InsertTab", "Up": "CursorUp", "F1": "ToggleHelp", "F3": "FindNext", "Shift-F3": "FindPrevious", "AltPageUp": "PreviousTab", "AltPageDown": "NextTab", "AltG": "JumpLine", "CtrlBackspace": "DeleteWordLeft", "CtrlEnd": "CursorEnd", "CtrlHome": "CursorStart", "CtrlPageDown": "CursorEnd", "CtrlPageUp": "CursorStart", "CtrlUp": "ScrollUp", "CtrlDown": "ScrollDown", "CtrlLeft": "WordLeft", "CtrlRight": "WordRight", "CtrlI": "InsertTab", "CtrlM": "InsertNewline", "CtrlT": "AddTab", "CtrlY": "DeleteLine", "Backspace": "Backspace", "ShiftBackspace": "Backspace", "ShiftEnd": "SelectToEndOfLine", "ShiftEnter": "InsertNewline", "ShiftHome": "SelectToStartOfLine", "ShiftUp": "SelectUp", "ShiftDown": "SelectDown", "ShiftLeft": "SelectLeft", "ShiftRight": "SelectRight", "CtrlShiftLeft": "SelectWordLeft", "CtrlShiftRight": "SelectWordRight", "CtrlShiftPageUp": "SelectToStart", "CtrlShiftPageDown": "SelectToEnd", "CtrlShiftI": "IndentSelection", "CtrlShiftP": "PlayMacro", "CtrlShiftR": "ToggleMacro", "CtrlShiftS": "SaveAs", "CtrlShiftU": "OutdentSelection", "CtrlR": "ToggleRuler", "CtrlB": "ShellMode", "CtrlQ": "Quit", "CtrlE": "CommandMode", "CtrlW": "NextSplit", // Emacs-style keybindings "Alt-f": "WordRight", "Alt-b": "WordLeft", "Alt-a": "StartOfLine", "Alt-e": "EndOfLine", // Mouse bindings "MouseWheelUp": "ScrollUp", "MouseWheelDown": "ScrollDown", "MouseLeft": "MousePress", "MouseMiddle": "PastePrimary", "Ctrl-MouseLeft": "MouseMultiCursor", // Multiple cursors bindings "Alt-n": "SpawnMultiCursor", "Alt-m": "SpawnMultiCursorSelect", "Alt-p": "RemoveMultiCursor", "Alt-c": "RemoveAllMultiCursors", "Alt-x": "SkipMultiCursor", } ``` `〔Ctrl〕+〔F〕`で文字列検索して`〔F3〕`で次を検索して`〔Shift〕+〔F3〕`で前を検索できたりします。 ![image.png](./images/a06ce11e-2b12-22da-be8a-10c647aa17dd.png) 中には『Windows Terminal』のキーバインドと衝突するものがありますので注意が必要です。例えばキーボードマクロを実行する`〔Ctrl〕+〔Shift〕+〔P〕`は \[コマンドパレットの切り替え\] と衝突しています。 **See also:** - [Keybindings - Micro (GitHub)](https://github.com/zyedidia/micro/blob/master/runtime/help/keybindings.md) - [デフォルトのキーボード ショートカット (DocWiki)](http://docwiki.embarcadero.com/RADStudio/ja/%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89_%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88) - [今更聞けない Delphi のコト (キーボードショートカット編) (ht-deko.com)](https://ht-deko.com/tech026.html) ### 拡張子による関連付け `*.pas` は強調構文表示されますが、`*.dpr` や `*.dpk` は強調構文表示されません。`pascal.yaml` に拡張子を追加したものを `%USERPROFILE%\.config\micro\syntax` に置くと、これらの拡張子も強調構文表示されるようになります。 ```yaml:pascal.yaml filetype: pascal detect: filename: "(?i:\\.(pas|dpr|dpk|inc|pl0|p)$)" rules: - type: "\\b(?i:(string|ansistring|widestring|shortstring|char|ansichar|widechar|boolean|byte|shortint|word|smallint|longword|cardinal|longint|integer|int64|single|currency|double|extended))\\b" - statement: "\\b(?i:(and|asm|array|begin|break|case|const|constructor|continue|destructor|div|do|downto|else|end|file|for|function|goto|if|implementation|in|inline|interface|label|mod|not|object|of|on|operator|or|packed|procedure|program|record|repeat|resourcestring|set|shl|shr|then|to|type|unit|until|uses|var|while|with|xor))\\b" - statement: "\\b(?i:(as|class|dispose|except|exit|exports|finalization|finally|inherited|initialization|is|library|new|on|out|property|raise|self|threadvar|try))\\b" - statement: "\\b(?i:(absolute|abstract|alias|assembler|cdecl|cppdecl|default|export|external|forward|generic|index|local|name|nostackframe|oldfpccall|override|pascal|private|protected|public|published|read|register|reintroduce|safecall|softfloat|specialize|stdcall|virtual|write))\\b" - constant: "\\b(?i:(false|true|nil))\\b" - special: start: "asm" end: "end" rules: [] - constant.number: "\\$[0-9A-Fa-f]+" - constant.number: "\\b[+-]?[0-9]+([.]?[0-9]+)?(?i:e[+-]?[0-9]+)?" - constant.string: start: "#[0-9]{1,}" end: "$" rules: - constant.specialChar: "\\\\." - constant.string: start: "#\\$[0-9A-Fa-f]{1,}" end: "$" rules: - constant.specialChar: "\\\\." - constant.string: start: "'" end: "'" skip: "\\\\." rules: - constant.specialChar: "\\\\." - preproc: start: "{\\$" end: "}" rules: [] - comment: start: "//" end: "$" rules: [] - comment: start: "\\(\\*" end: "\\*\\)" rules: [] - comment: start: "({)(?:[^$])" end: "}" rules: [] ``` **See also:** - [Colors - Micro (GitHub)](https://github.com/zyedidia/micro/blob/master/runtime/help/colors.md) - [pascal.yaml - Micro (GitHub)](https://github.com/zyedidia/micro/blob/master/runtime/syntax/pascal.yaml) ### Pascal を使う 私の PC のこのフォルダには **PASCAL-P5** が置いてあるので、`〔Ctrl〕+〔B〕`して**シェルモード** (プロンプトは `$`) に入り、 ``` $ compile test ``` ってやると Pascal のソースコードがコンパイルされ、 ![image.png](./images/a39e68df-2d2f-8d9f-26ac-1e35cb96aa7c.png) エラーがなければ続けてシェルモードから ``` $ run test ``` ってやると実行されます。 ![image.png](./images/cc542b02-bb7b-e027-181d-b6df2fcf08e7.png) この PC は Delphi 使いのものですから、当然 Delphi がインストールされているため、シェルモードから ``` $ dcc32 -CC test.pas ``` ってやれば Win32 用コマンドラインコンパイラ DCC32 を使ってコンパイルでき、 ![image.png](./images/e89c8888-0c3c-8499-0639-ff60e3d583ff.png) TEST.EXE が生成されているので、シェルモードから ``` $ test ``` ってやれば EXE が実行できます。 ![image.png](./images/165c4b8e-9f05-c6d0-6b8b-99fad255b4da.png) **See also:** - [割と簡単に ’標準 Pascal' を試してみたい (Qiita)](./41e95154e8da2f901698.md) - [Delphi Community Edition (Embarcadero)](https://www.embarcadero.com/jp/products/delphi/starter) - [Delphi Community Edition (Qiita: @pik)](https://qiita.com/pik/items/1db2b6d2f9972d953df4) - [P-IDE (GitHub)](https://github.com/ht-deko/P_IDE/) # おわりに コマンドラインツールを使う場合には普通に便利なテキストエディタ Micro でした。 ![image.png](./images/c1774b9b-f401-8bf0-d078-244790158463.png) Qiita にはテキストエディタ Micro に関する秀逸な記事があるのでご一読をお勧めします。 **See also:** - [いま熱い最新スクリーンエディタmicro ことはじめ (Qiita)](https://qiita.com/tadsan/items/f0747f09ea5ce863f2ec) - [Micro editor の Plugin Manager について( EditorConfig Plugin の導入)(Qiita)](https://qiita.com/10sr/items/0ed6f3dc4a01159115fc) - [【浸り学習②】普段の操作感で扱えるターミナルエディタの「micro」を試用して、vimmerの横に並んだ気分に浸る (Qiita)](https://qiita.com/t_o_d/items/ef886673b10106e2b3ae)