MacBook AIr」カテゴリーアーカイブ

Sublime Text 4 Custom 2

Sublime Text プラグインについて日本語の解りやすいトコ無いなぁ。
試してみたら Packages/*/ 以下にある *.py は全部勝手に読み込むや。
つまり自作するならコレでいい、ディレクトリ名は何でもいい。

plugins

ショートカットで実行するには sublime-keymap に書き込む。
配布するなら個別ディレクトリにして OS 別キー割り当てが可能らしい。

Hoge/
- Default (Linux).sublime-keymap
- Default (OSX).sublime-keymap
- Default (Windows).sublime-keymap
- hoge.py

command(super) と Ctrl を変えるだけなんだろうけどね。

スニペットファイルは User 以下に置く。
PHP に定義は text.html.php でイケた。

<snippet>
    <content><![CDATA[
<pre class="brush: ${1:py}">$0</pre>
]]></content>
    <tabTrigger>prep</tabTrigger>
    <scope>text.html.php</scope>
</snippet>

ファイル名はなんでも良くて sublime-snippet の拡張子を付ける。
一つにつき一ファイルにしないと読み込みしてくれないようです。

トリガーで流し込むスニペットはこうやってファイルを作る。
ショートカットで流し込むスニペットは sublime-keymap に直接書く。

key

Default (OSX).sublime-keymap は上記メニューで勝手に作られる。
ちなみに一番上のメニューから Packages ディレクトリは開ける。

[
    { "keys": ["f5"], "command": "build" },
    { "keys": ["alt+up"], "command": "swap_line_up" },
    { "keys": ["alt+down"], "command": "swap_line_down" },
    { "keys": ["super+alt+down"], "command": "duplicate_line" },
    // My Plugin
    { "keys": ["super+ctrl+t"], "command": "open_terminal" },
    { "keys": ["super+ctrl+e"], "command": "html_escape" },
    // My Snippets
    {
        "keys": ["super+ctrl+]"],
        "command": "insert_snippet",
        "args": {"contents": "<br />"}
    },
    {
        "keys": ["super+ctrl+r"],
        "command": "insert_snippet",
        "args": {"contents": "<span style=\"color: ${1:red}\">$TM_SELECTED_TEXT</span>$0"}
    }
]

スニペットは変数も使えます。
記法も Gedit や Atom と同じだから迷うことは無いでしょう。

最後にキー割り当てはなるべくデフォルトのまま、ということに。
command+n が新規タブなのは受け入れることにします。
Gedit が Ctrl+T だという理由で command+t に変えていたんだけど。
Atom のデフォルトもそうだったし慣れておかないと後で困りそうなので。

同じ理由で command+h を置換に割り当てるのもヤメに。
command+option+f のほうが直感的なんだけど Gedit での手癖が。
command+h はどう考えても非表示でないとおかしい、手癖より統一を。
どうしても譲れない 4 つだけは変更させていただきます。

ということでアッサリ乗り換え作業が終わりました。
Sublime Text ってこんなに凄かったのか、知らなかった。

buy

ということで購入、$70 じゃなくて $99 だった。
こんな素晴らしいアプリを作ってくれた感謝を込めて。

Sublime Text 4 Custom 1

Sublime Text 4 が F7 でカタカナ変換できない問題。
v3 の時からか、日本語環境だけの問題だから放置されているのね。
これは v3 の時と同じ手段で回避可能でした。

Sublime Text 3のF7を無効にする(macOS) – Qiita

コレをやると左側ペインのデフォルトも編集できるようになるおまけ付き。
問題になりそうなものや無効化したいキーをコメントアウト。

kbd

キーカスタムはスニペットの登録とかがあるので一旦置いて。

ということで基本設定の暫定。
一番上のは最初から書き込まれていたけど何かは知らない。

{
    "ignored_packages":
    [
        "Vintage",
    ],
    // コード保管無効
    "auto_complete": false,
    // 閉じ括弧自動補完無効
    "auto_match_enabled": false,
    // 起動時に新規ウインドウを作らない
    "create_window_at_startup": false,
    // 保存確認飛ばしさせない
    "hot_exit": "disabled",
    // タブ追加は一番最後に
    "open_tabs_after_current": false,
    // タブ入力は半角スペース化
    "translate_tabs_to_spaces": true,
    // 保存時に行末の空白を削除
    "trim_trailing_white_space_on_save": "all"
}

とにかく邪魔なコード保管と閉じ括弧保管を無効に。
保管ってこちらから要求した時にだけやってくれないと困るよ。
腹が減ってないのに飯を出されてもイラッとするでしょ。

起動時に前回終了時のタブを復元阻止は 3, 4 番目。
v4 は検索で見つかる remember_open_files というキーが無い。
hot_exit も真偽値ではない、現行は色々と設定が違っているようだ。
で、create_window_at_startup は名前のとおりな macOS 専用設定。
無効にしないと Finder からファイルを開いた時に二つ起動する。
ただランチャから起動だとウインドウが作られない、即 command+n する。
もっといい方法があるかもだけど。

後はお好みで、筆者はできるだけデフォルトで使いたい派。

次はプラグイン作成。
Sublime Text 3でプラグインを作るメモ – Qiita

Sublime Text 内蔵 Python は 3.3 なのか。
subplocess.run や html モジュールが使えない、ちと面倒。
これも一つにつき一ファイルづつ、まるで Linux だな。

import sublime, sublime_plugin

class HtmlEscapeCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        sel = self.view.sel()
        for region in sel:
            src = self.view.substr(region)
            dst = ''
            for s in src:
                if s == '>':
                    dst += '&gt;'
                elif s == '<':
                    dst += '&lt;'
                elif s == '&':
                    dst += '&amp;'
                else:
                    dst += s
            self.view.replace(edit, region, dst)

とりあえず html_escape プラグインを作ってみた。
こんなブログをやっていると絶対に必要になるからね。
てか上記で早速使ったわ。

import sublime, sublime_plugin, os, subprocess

class OpenTerminalCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        path = os.path.dirname(self.view.file_name())
        subprocess.Popen(['open', '-a', 'Terminal', path])

もう一つ、編集ファイル位置から Terminal.app 起動。
他のカスタムはスニペットでなんとかなるかな。

後は自作スニペットの登録とキーカスタムだね。
長くなってしまうので今日はココまで。
最後に。

kawasemi

今日は五条川にいました。

Sublime Text 4

そういえば 2022.12.15 で Atom がアーカイブになる。
Gedit も GNOME には含まれなくなり 3 で止まる。
筆者愛用のテキストエディタが両方とも終焉を迎えることに。
Gedit はまだ大丈夫だけど Atom はそろそろ乗り換え先を探さないと。

macOS 用のテキストエディタを色々試した時期があったけど。
当時は Atom 以外は全部気に入らなかったんだよな。

VScode が何故人気があるのか解らない、イライラするだけだろアレ。
他もなんか文化の違いに馴染めず Gedit のように使える Atom に。
それとできればプラグインではなくスクリプトで拡張したいのよ。

Atom を Gedit のように使う – Paepoi

Sublime Text もその時に試したけれど使い方がよく解らなかった。
突っ込んで使ってみたら気に入るかもしれん、今 v4 になっているのね。

Download – Sublime Text

dmg ではなく app での配布なのか。
/Applications に移動して command+o、なんか久々。

gatekeeper

初回はやっぱり許可が必要、以降は普通に使える。
てか起動が早い、いや Atom が遅いだけなんだけど。

? Sublime Text 4 の日本語化とおすすめパッケージ – Qiita

で日本語化。

*.jp をコピーは「フォルダに新規ターミナル」を使って。

cp *.jp ../Default/

末尾の jp を外すには Default に移動して。

for name in *.jp; do; mv $name ${name%.jp}; done

プログラミングのために使う人ならこれくらい打てよってね。
いや、しょぼいシェルの Linux や Windows の人は知らんけど。
bash zsh どっちでも使えます。

日本語化できたので基本入力を試してみる。
command+s や command+c は macOS デフォルトどおりだな。
command+← はインデントの先頭にジャンプがデフォルト、よし。
全部ウインドウを閉じてもアプリは終了しない、macOS では当然。
再起動で前回開いていた書類を開くのは流行なのか?

F7 でカタカナ変換ができない、何か競合しているのか?
fn+← が行頭ではなく先頭になる、command にすればいいんだけど。
行の入れ替えは command+control+↓ ではなく option+↓ にしたい。
新規タブが command+n なのはそろそろ受け入れようかな。

JavaScript だとコード保管をするのね。
VScode ほどウザくない、でもやっぱり邪魔だなぁ。
それよりも、閉じ括弧の自動保管はマジでやめてくれ!

html や php を開いて pre と打ち込んで tab キー。
おぉスニペットがデフォルトで有効なのか、後は追加だな。

残念ながらモードラインはデフォルトでは未対応だけど。
#!/usr/bin/osascript
のシバンがあれば Apple Script と拡張子無しでも認識。
-l オプションで JXA を見分けるまではしてくれなかった。

そんなことよりこれですよ、command+b で。

sublimetext

筆者が Gedit や Atom でカスタムしていることがデフォルトで。
Python としか書いていないけど Python3 で動きますね。
ただしシバンを読み取って実行しているわけではないみたい。
JXA は実行できなかった、手段はあるみたいなので探す。

以上日本語化のみでデフォルト状態での雑感。
Sublime Text ってこんなに凄かったのか!
いや多分大多数の人とは気にする部分が違うと思いますけど。
70$ 払うかどうかはカスタムを試してから。

OMDS Exif

macOS 13 と iOS 16 に随分前した、何を今更気がついた。
写真.app で E-M5 MarkIII の写真も双方で焦点距離が表示されるようになった。

len

双方同じ表示になる、macOS は command+i で iOS は上フリック。
いや、これって 35mm フィルム換算ではなく実際の焦点距離ですよね。

Canon R6で撮影した写真 写真ア… – Apple コミュニティ

上記と同じく E-M5 MarkIII の写真も以前は焦点距離が表示されなかったのよ。
Focal Length In 35mm Format タグが付いていないことも確認済。
ある場合は表示、G99 のほうの写真は換算距離で表示されていた。

ようするに、このタグが無かったら Focal Length を表示しているだけ。
G99 のほうは変わらず 35mm フイルム換算距離で表示、なので紛らわしい。
それより Eye of GNOME みたいに両方を表示してくれればなって。
あそこまで無駄に親切ではなくとも括弧内に換算距離とか色々と手段があるでしょ。

まてよ、この換算距離タグってレンズ側が出力しているんじゃないの?
いや APS-C ボディにフルサイズ用レンズという場合もあるし。
確認のため同じ 100-400 パナライカを付けた写真を見てみる。

eog

右が G99 + 100-400、焦点距離と換算距離の両方を表示。
中が E-M5 + 100-400、焦点距離のみ。
左が OMDS から落とした E-M1X のサンプル写真。

何故だ E-M1X は換算距離が出るんだが。
OMDS は機種によっては出るのかタグを後付けしたのかどっちだ?

てか、やはりボディがこういう Exif タグを生成しているのね。
ファームアップで E-M5 MarkIII にも換算距離タグを追加できないのかなって。

macOS Monterey

macOS を Monterey に遅ればせながらアップグレード。
Fedora とは違ってスッゲェ時間が掛かると解っているので休日まで待った。
12.13GB か、前の 14GB より減ったとはいえ酷い。

そろそろ全部終わったかな?
って画面を表示させると「インストールします」ダイアログ。
ガックリ。。。。。

[続ける]-[同意] って感じでボタンを押さないとインストールが始まらない。
今度こそ終わったかな?って見ると「再起動」ダイアログ。
ションボリ。。。。。

その再起動が又時間が掛かる。
終わった!と思ったらフェイントだった。
ゲンナリ。。。。。

M1 でコレだぞ、Intel Air だったらドンダケだったんだ?
アップグレードくらいボタン一発でスパッとやってくださいよ。
あーやっとこさ終わった。

それはいいとして。

Apple、macOS 12 MontereyにPython 2.7.18などを同梱してリリース。Big Surまで同梱されていたphpは削除されるので注意を。

マジで PHP は削除されるのね。
httpd.conf が初期化されるのはいつものこと。

php

WordPress の時代にコレって macOS を Web 開発に使うなってメッセージ?
Fedora のように dnf コマンドで即座に導入できるってわけでもないのにさ。
いったいどんな政治的なやりとりがあったのか、みたいな。
これだから Fedora も併用しなきゃなんだよ、macOS で開発は自由が無い。

自力で Python3 を入れている人は残る。
3.10 になっているのか、アップグレードしとこ。
macOS 64-bit unibersal2 installer で M1 ネイティブだよ。

Python Release Python 3.10.0 | Python.org

Lightroom は問題なく動く、コレのために Mac を使っているのだし。

それと Fedora から SSH てか SFTP で簡単アクセスする用の
~/.ssh/id_rsa.pub
とか設置していたものも普通に残っているしアクセスもできる。

そんなことより何より。

#!/usr/bin/osascript

ObjC.import('Cocoa');
let r = $.NSMakeRect(0, 0, 10, 10);

console.log(`width = ${r.size.width}`);

jxa

JXA での NSRect バグがやっと、ついに修正されたぞ!
Big Sur アップデート毎にコレ動かしてションボリしてたのよね。
待ちわびた、待ちすぎて PyObjC 万歳になっちゃった。