Paepoi

Paepoi » macOS Tips » Visual Studio Code を Gedit のように使う

Visual Studio Code を Gedit のように使う

# 最終更新日 2019.04.13

追記
Atom に乗り換えました。
無効にしても無理矢理「意図しない補完」をするクソエディタはもうウンザリだ!
追記おしまい


拡張子が無いファイルを判別できない、モードラインが使えない。
何よりインテリセンスがコードを書くのを邪魔しまくってイライラする、etc...
Visual Studio Code は糞みたいなエディタです、けれど。

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

が全部できるのが Gedit とコレしか無いので macOS のみで渋々使っている。
このページでは筆者がどうやってこの糞エディタをどうにかしているかを。
大真面目に、この状態で PyObjC 版 Comipoli を作りました。

糞すぎるコード保管を全部 OFF
筆者の settings.json を以下に。
更新枚に値が変わっていたりするので注意、下記は 1.33 時。
// ~/Library/Application Support/Code/User/settings.json
{
    // ドットを打つと出る候補が邪魔でコードが書けない
    "editor.suggestOnTriggerCharacters": false,
    // ポップアップが邪魔で自分で書いたコードが見えない
    "editor.codeLens": false,
    "editor.hover.enabled": false,
    "editor.parameterHints.enabled": false,
     // クイック候補、完全に嫌がらせ
    "editor.quickSuggestions": {
        "other": false,
        "comments": false,
        "strings": false
    },
    // 閉じ括弧の自動保管を考えた奴をマジで殺したい
    "editor.autoClosingBrackets": "never",
    "editor.autoClosingQuotes": "never",
    "editor.autoSurround": "never",
    // tab キー保管、スニペットのみ有効化
    "editor.tabCompletion": "onlySnippets",
    //
    // 後はお好みで
    //
    // インデント見分け、こんな役立たずよりモードラインをはよ
    "editor.detectIndentation": false,
    // 右端で折り返す
    "editor.wordWrap": "on",
    // ミニマップ、ウザい
    "editor.minimap.enabled": false,
    // 行の強調表示、ウザい
    "editor.renderLineHighlight": "none",
    // コードの折りたたみ、見辛くなるだけ
    "editor.folding": false,
    // 全部タブで開く
    "window.openFilesInNewWindow": "off",
    // 再起動で直近のファイルを開かない
    "window.restoreWindows": "none",
    // 検索でサイドバーが勝手に開くのが許せない
    "search.location": "panel",
    // ファイル削除時の確認イラネ
    "explorer.confirmDelete": false,
    // サイドバーは右
    "workbench.sideBar.location": "right",
    // 拡張機能、日本語化以外は必要ない
    "extensions.ignoreRecommendations": true,
    "extensions.showRecommendationsOnlyOnDemand": true,
    "extensions.autoUpdate": false,
    "extensions.autoCheckUpdates": false
}
とにかく。
self. と打ち込んだら候補の中から強制で流し込み、では変数宣言ができない。
esc を打てば、ってそれ逆でしょ。
補完してほしい時にアクションをするなら解るけど、そもそもこんな機能イラン。

自分で定義した変数名をポップアップで隠すのはやめてくれ。
てかポップアップだけで三つも設定があるのは嫌がらせか。
全部見つけるのに苦労したぞ。

そんなことより、閉じ括弧の自動補完という迷惑機能が何故デフォルトなのだ。
こんなのを喜ぶのは書き捨てコードしか書けないバリバリ初心者しかいないだろ。
メンテや追加機能とかやっているとキレそうになるぞ。

Python でコロンの後 return で勝手にインデントするのも地味にイラッとする。
改行したら無意識に tab キーを叩いているので二重インデントになるってばさ。
切る方法が見つからないのがくやしい、チックショー。

おすすめの拡張
日本語化、最近のはインストールで自動的に入りますね。
他は何も入れていません、気が向いたら自分で作るかも。

キーボードショートカットを Gedit 風に
command+N が「新規タブ」なのが許せない、「新規ウインドウ」でしょ。
Gedit どころか Terminal.app も Finder もそうなっているのに。
この macOS らしくないキー操作を正しくする。

後 command+H は「置換ダイアログ」にしたい。
macOS らしくないけど Gedit がそうなっているのでつい押してしまうので。
標準の「非表示」を上書きできるのかな、やってみよう。
cmd N で検索
キーバインドの所を W クリック
無題の新規ファイルを cmd N から cmd T に変更
新しいウインドウを shift cmd N から cmd N に変更

cmd T で検索
無題の新規ファイル以外の cmd T を消す

置換で検索
opt cmd Fcmd H に変更

f5 で検索
デバッグの開始を ctrl cmd F5 に変更
タスクで検索
ビルドタスクの実行を F5 に変更
F5 については下記で。
command+H 使えるじゃん、非表示はメニューから使えばいいや。
これでキー操作にはイライラしなくなった、後はお好みで。

公式のキー設定解説は以下。
Visual Studio Code Key Bindings

F5 で実行
Gedit でスクリプトを debug と同じことがしたい。

Tasks in Visual Studio Code
タスクを使えばできる、ただし必ずフォルダで開くを行う必要がある。
一度開けば Welcome で Recent に出るのでソレを活用する。

img/recent.png

余談ですが、そもそも macOS ではアプリからファイルを開く前提で使うというのがデフォ。
ファイルを W クリックという概念は捨てましょう、本当は他の OS でもそうなんですけど。

その前にシバンを抜き出しして実行するコマンドを作る必要がある。
#!/bin/sh
 
line=`head -n 1 $1`
${line#*!} $1
これに run_shebang と拡張子の無い名前を付けて保存。
実行パーミッションを付けパスの通った所に置く、準備終わり。

フォルダを開く、新規でもいい。
.vscode というドットディレクトリを作る。
その中に tasks.json というファイルを作る。
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "run shebang",
            "type": "shell",
            "command": "run_shebang",
            "args": [
                "${file}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "always",
                "panel": "new"
            }
        }
    ]
}
を書き込み保存。

以上です。
後はシバン付きのスクリプトをそのフォルダ内で作成。
上記でビルドタスクの実行を F5 に指定しているので F5 を押す。

img/pyobjc.png

pyobjc も当然使えます。

コードスニペット
特定の文字列をタイプした後に tab キーを叩くと補完してくれる機能です。
補完してほしい時にアクションをする、これが正しい補完機能だと思う。
とにかく、UNIX の世界ではメジャーな機能です。

上記 settings.json でスニペットを有効にしているので Gedit 同様に使えます。
Gedit のコードスニペット

スニペットの書き方は公式を参考に。
Creating your own snippets in Visual Studio Code

日本語で検索しても変数のことを書いていないレベルの低いページしか出てこないので公式で。
Gedit 同様に選択範囲等の変数も使えます。

Gedit のコードスニペットの最後でやっている Ctrl+R と同様のことも一応できます。
keybindings.json を開いて以下を [ ] 内に追記すれば動作すると解ります。
macOS なので command+R にしています。
{
    "key": "cmd+r",
    "command": "editor.action.insertSnippet",
    "when": "editorTextFocus",
    "args": {
        "snippet": "<span style=\"color: ${1:red}\">${TM_SELECTED_TEXT}</span>$0"
    }
}
言語毎に設定することは現状ではできないようです。

ところで vscode のスニペットは少しクセがあって、たとえば PHP だと。
ここでは動作しない
<?
ここでは動作する
?>
それが正しいとは思うんですけど、場合によっては迷惑。

最後に
このページは Fedora の Gedit で作りました。

Copyright(C) sasakima-nao All rights reserved 2002 --- 2020.