Paepoi

Paepoi » macOS Tips » Atom を Gedit のように使う

Atom を Gedit のように使う

# 最終更新日 2019.06.15

Atom に乗り換えしました。
Visual Studio Code (以下 vscode)というゴミクソはもうイラネ!

- shift+tab でカーソル行のインデント戻し
- option(alt)+上下矢印キーで行の入れ替え
- command(fn)+左矢印キーでインデントの先頭にジャンプ

という筆者には必須な機能は Atom でもカスタマイズで可能でした。
他にも筆者が Fedora の Gedit でやっていることのほとんどが再現できました。
以下 1.38 時での内容です。

拡張子の無いファイル
macOS では GUI で実行パーミッションを利用するには拡張子を外す必要がある。
Atom は拡張子が無くてもシバンからファイル形式を判別してくれる。
#!/bin/sh, #!/usr/bin/env python3 は当然として。
#!/usr/bin/osascript -l JavaScript

function run(argv) {
    for (let s of argv) {
        console.log(s);
    }
}
何が素晴らしいかって、上記を JavaScript だと認識してくれやがったこと。
これで JXA にて小物スクリプトを作るのに小細工とかいらなくなるぞと。

vim-modeline パッケージを導入で vim モードラインも使えます。
vscode は拡張子判別しかできなかったので本当に嬉しい。

デフォルトパッケージの設定
git を使わないなら設定のパッケージにて github で検索し全部無効にする。
Xcode をインストールしていない場合は起動毎に Xcode を入れろと出てウザい。

auto* で始まるデフォルトパッケージは全部無効に。
いや autocomplete-snippets だけは必要なので有効にしておく。
それだけでイライラするポップアップは出なくなる。
ポップアップしないだけでスニペットは使える、Gedit 等と同じ。

後、閉じ括弧自動補完を無効にするには
bracket-matchar の設定から Autocomplete-Brackets を off にする。
検索すると無効にしている人が多いね、vscode では全然見当たらないのに。
補完が迷惑という人は Atom を選ぶということかも。

フォントサイズは 12 にした、後はお好みで。

必須なパッケージ(スクリプト実行、モードライン)
japanese-menu は当然として。
script というシンプルな名前のパッケージが素敵!

command+I にて編集中のスクリプトを実行するパッケージです。
何が素敵って、キチンとシバンを見て振り分けしてくれる。
#!/usr/bin/env python3

# カレントディレクトリの確認

import os
print(os.getcwd())

# fstring はシバンを python(Python2) に書き換えると例外

s = 'SUZUKI'
print(f'{s} のバイクはかっこいい')
実行パーミッションは不要
Python2,3 の振り分けに困ることは無い。

出力ペインで control+C も使える。
#!/usr/bin/env python3

# control+C まで無限ループ

i = 0
while True:
    i += 1
    print(i)

設定は CWD の指定を [Directory of the script] に変更するだけ。
そうしないとカレントディレクトリが ~/.atom になってしまう。
vscode のように「ディレクトリで開く」を行う必要は無いし小細工もいらない。
ペインを閉じるのは esc を使う。
下記で F5 に指定可能、Gedit よりもしかして便利。

vim-modeline はそのまんま vim のモードラインが使えます。
下記の python を js や c に書き換え、ts は tab を押下した時の幅を指定。
control+option+V で適用されるのでどういうものか解ると思う。
// vim:set ft=python ts=8
vscode にも似たものがありますがアレは全体設定を書き換えするゴミだった。
emacs, kate 形式は残念ながら現在は利用する手段が無いようです。

<>& をエスケープする等は関数追加で簡単に作れるので必要ありません。
下記にて解説。

コードスニペット
特定の文字列をタイプした後に tab キーを叩くと補完してくれる機能です。
*.py を開いて env3 とタイプして tab キーを叩いてみましょう。

自分で追加してみましょう。
たとえば、このページで使っている SyntaxHighlighter のタグを prep で補完させる。
~/.atom/snippets.cson を開いて下記を書き込む。
 '.source.gfm':
   'Hilite':
     'prefix': 'prep'
     'body': '<pre class="brush: ${1:py}">$0</pre>'

.source.gfm は markdown ファイルです、ちと分かり難いような。
キーワード + tab で補完させるならそれだけです。
変数は残念ながら使えないようです。

キーボードショートカットで補完させる手段もあります。
init.coffee に関数を作って keymap.cson にてキーを指定という流れです。

Keymaps for inserting code snippets? - support - Atom Discussion
Allow $SELECTION$ variable to create a snippet that surrounds code · Issue #200 · atom/snippets · GitHub

上記を参考に以下の関数を作ってみた (coffeescript)

※ <br /> の流し込み @ editor:insert-br
※ 選択範囲を <span> で囲んで色指定 @ editor:html-color
※ 筆者が Gedit Plugin で公開している <>& をエスケープ @ editor:html-escape

init.coffee
atom.commands.add 'atom-text-editor', 'editor:insert-br', ->
    atom.workspace.getActiveTextEditor()?.insertText('<br />')

atom.commands.add 'atom-text-editor', 'editor:html-color', ->
    snippet = atom.packages.activePackages.snippets.mainModule
    editor = atom.workspace.getActiveTextEditor()
    text = editor.getLastSelection().getText()
    snippet.insert('<span style="color: ${1:red}">' + text + '</span>$0')

atom.commands.add 'atom-text-editor', 'editor:html-escape', ->
    editor = atom.workspace.getActiveTextEditor()
    text = editor.getLastSelection().getText()
    escape = text.replace(/[<>&]/g, (match) ->
        {'&': '&amp;', '<': '&lt;','>': '&gt;'}[match])
    editor.insertText(escape)

init.coffee は起動時に読み込みなので書き換え後は Atom の再起動を忘れずに。
キー割付は以下で、動作すると確認できるはずです。

キーボードショートカットを Gedit 風に
option は alt で指定、command は cmd で指定のようだ。
Macbook Pro を意識しているのか Function キーはデフォルトでは使っていない。
しかし指定すれば Function キーも使えるようだ。
command+N: 新規ウインドウ,
command+T: 新規タブ,
command+H: 置換,
option+Up: カーソル行の上下入れ替え,
option+Down: カーソル行の上下入れ替え,
option+shift+Down: 一行下にカーソル行の流し込み,
option+command+B: (自作スニペット)<br /> の流し込み,
option+command+R: (自作スニペット)選択範囲を <span> で囲んで色指定,
option+command+E: (自作スニペット)選択範囲の <>& をエスケープ,
F5: スクリプトのシバン実行

keymap.cson は以下のようになった。
'body':
    'cmd-n': 'application:new-window'
    'cmd-t': 'application:new-file'
'.platform-darwin':
    'cmd-h': 'find-and-replace:show-replace'
'atom-workspace atom-text-editor:not([mini])':
    'alt-up': 'editor:move-line-up'
    'alt-down': 'editor:move-line-down'
    'shift-alt-down': 'editor:duplicate-lines'
    'alt-cmd-b': 'editor:insert-br'
    'alt-cmd-r': 'editor:html-color'
    'alt-cmd-e': 'editor:html-escape'
'.platform-darwin atom-text-editor':
    'f5': 'script:run'

最後に
筆者が Fedora にて Gedit でやっていることのほとんどが再現できました。
開発者をイライラさせるだけの余計な補完をしないのでとても快適になりました。
「ディレクトリで開く」をしなくても開いているスクリプトが実行できるのはやはり便利。
関数を書いて拡張が比較的簡単。

Atom を初期の不安定な時にしか試していない人は現行を試す価値はあります。
Copyright(C) sasakima-nao All rights reserved 2002 --- 2020.