6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeあまり知られていない拡張(プログラミング言語によらずテキスト編集一般に役に立つもの)

Last updated at Posted at 2022-09-14

他であまり紹介されていないものを紹介する。特にVimmerにとって有用かもしれない。
おすすめ度は★から★★★まで。

拡張機能

Advanced New File

任意のパスへのファイル新規作成を楽にしてくれる拡張。
Cmd+Opt+Nで起動するとパスの入力を求められ、そこにファイルが作成される。パスにスラッシュを含めると途中のフォルダも作成してくれる。

なお、VSCode標準のエクスプローラでの新規作成も、スラッシュを含めると途中のフォルダを作成してくれる。しかし現在選択されているファイルのあるフォルダが基準になり、プロジェクトルートからの指定はできないため、微妙に使いづらい。

Code Spell Checker ★★★

ソースコード用に特化したスペルチェッカー。タイポにすぐ気づける。プロジェクト独自の用語も辞書に定義できるので心配無用。

ctagsx ★★

古くからのVimmerにはおなじみ、ctagsサポート。標準機能と同じくF12で定義ジャンプできる。
キーワードを入力してその定義位置へジャンプする(:tag 相当)には Go to Symbol in Workspace... が使える。
2024年10月現在、ShopifyのRuby LSPはメソッドの定義ジャンプをサポートしていないのでこれを使っている。

Error Lens ★★★

lintの警告やエラーをエディタ内にインラインで表示する。

Filter Text ★★

エディタ内のテキストに対し、任意のシェルコマンドをフィルタとして実行。Vimの :%! みたいなもの。

Find Word At Cursor ★★

カーソル下の単語を検索。Vimの * みたいなもの。地味に重宝。
標準機能ではF7 (Go to Next Symbol Highlight) が似ているが、Symbolと認識されている単語にしか効かない。

Numbered Bookmarks ★★

1〜9まで番号付きのブックマークを設定できる。
Cmd+Shift+1 でブックマーク1設定、Cmd+1 でブックマーク1へジャンプ。
Cmd+k Cmd+a でブックマークリストから選択。
9個設定できるが、大抵は1か2までしか使わない。

Quick and Simple Text Selection ★★★

引用符やカッコで囲まれた文字列を選択できる。Vimのテキストオブジェクトみたいなもの。
下記のように設定している。クォートの内側を選択する機能は非常によく使う。

  {
    // クォートの種類をトグル
    "key": "ctrl+s",
    "command": "extension.switchQuotes",
    "when": "editorTextFocus"
  },
  {
    // クォートを選択(1回押下で内側選択、2回押下でクォートも含めて選択)
    "key": "cmd+2",
    "command": "extension.selectEitherQuote",
    "when": "editorTextFocus"
  },

Select by Indent

インデントレベルに基づいてテキスト選択できる。
選択範囲の判定方法は多数用意されているが、自分は下記のみ利用している。

  // 現在行から同じインデントの行まで選択
  {
    "key": "cmd+3",
    "command": "vscode-select-by-indent.select-outer-down"
  },

これにより、下記のifの行にカーソルをおいた状態でCmd+3を押すと、カーソル行から}の行までを選択してくれる。

function() {
  if (hoge) {
    ...
  }
  return 0;
}

Test Switcher ★★

ファイルとそのテストファイル間で相互にジャンプする拡張。
同様の拡張をいくつか試した中でこれが良かった。以下のような形でファイル名のパターンを定義できる。

"test-switcher.rules": [
  { "pattern": "app/(.*)\\.rb", "replacement": "spec/$1_spec.rb" },
  { "pattern": "spec/(.*)_spec\\.rb", "replacement": "app/$1.rb" },
]

VS Code Mark/Point

1回目の実行で「マーク」を設定し、2回目の実行で「マーク」から現在のカーソル位置までを選択。EmacsのCtrl+Spaceみたいなもの。
これがあると、まずマークを設定しておいて、ショートカットキーにより希望の終端までカーソル移動、選択、という流れで操作ができる。

※いつの間にかVSCode標準でできるようになったらしい。Cmd+K Cmd+B (Set Selection Anchor)でマーク。Cmd+K Cmd+K (Select from Anchor to Cursor)でマークからカーソル位置までを選択。

キーバインド

よく使う機能は左手だけで押せるキーバインドにしておきたい。そうすると右手にマウス、左手にキーボードというスタイルで操作しやすい。
Cmd+l(行を選択)は非常に便利なのにあまり使われていない印象でもったいない。

{
    // 行選択。連続押下で選択範囲を下へ広げる。デフォルト: cmd+l ★★★
    "key": "cmd+e",
    "command": "expandLineSelection",
    "when": "textInputFocus"
},
{
    // 選択モードのままカーソルを1行上へ(cmd+lの逆)★
    "key": "cmd+q",
    "command": "cursorUpSelect",
    "when": "textInputFocus"
},
{
    // 対応するカッコへジャンプ。★★★
    "key": "ctrl+z",
    "command": "editor.action.jumpToBracket",
    "when": "editorTextFocus"
},

設定

フォルダを新規ウィンドウで開くようにする ★★★

複数リポジトリを扱う際、最近使ったリポジトリを開くにはOpen Recent(Ctrl-R)でインクリメンタルサーチするのが便利。
しかしデフォルトでは現在のウィンドウが置き換えられてしまうので、以下の設定で新規ウィンドウで開くようにできる。

    "window.openFoldersInNewWindow": "on",

ダブルクリック時の単語選択で日本語を含まないようにする ★★

マウスホイールでスクロールする行を増やす ★★

下記で2行ずつスクロールになる。
なお、Optionを押しながらホイールで高速スクロールになる(標準機能)。

    "editor.mouseWheelScrollSensitivity": 2,

エディター・グループやアプリ間で検索語を共通にする(macOS)★★

デフォルトでは、Cmd+fによる検索語はエディター・グループごとに記憶される。
そのため、左のエディター・グループで検索したあと、右のエディター・グループでF3を押してもマッチしない。
下記を設定すると検索語がグローバルに記憶されるようになる(macOSのみと思われる)。

    "editor.find.globalFindClipboard": true,

なお、VSCodeだけでなくChromeやiTerm2など、他のアプリ間でも検索語が共有される。

検索語をカーソル位置から拾うようにする ★★

テキストを選択していない場合に、カーソル位置に近い単語を検索語とさせるには:

    // Cmd+fによるエディタ内検索:
    "editor.find.seedSearchStringFromSelection": "always"  // デフォルトはalways

    // Cmd+Shift+fによる横断検索
    "search.seedWithNearestWord": true,  // デフォルトはfalse

検索したい語の上にカーソルを置いてCmd+Shift+fを押すだけで横断検索してくれるので便利である。
デフォルトのfalseのままでも、語を選択してからCmd+Shift+fを押せばそれを検索語としてくれる。

ホイールスクロールでタブ切り替え ★

デフォルトでは、Shiftを押しながらタブ上部でマウスホイールをスクロールすると、タブ切り替えができる。
下記を true にすると、Shiftを押さなくてもタブ切り替えになる。

    "workbench.editor.scrollToSwitchTabs": true,

開いているすべてのドキュメントから補完候補を拾う ★

    "editor.wordBasedSuggestions": "allDocuments"

デフォルトは matchingDocuments(開いている同じ言語のドキュメントから拾う)

標準機能

トリプルクリックで行選択、そのままドラッグで複数行選択

トリプルクリックで行選択できる。3回目のクリックで押したままにし、上下へドラッグすると行単位で複数行選択できる。
マウスで行単位選択するには、行頭(行番号の上でも可)をクリックしてそのまま真下へドラッグするやり方もあるが、クリックするポイントに少し神経を使うので、もしかしたらトリプルクリックの方が楽かもしれない?

ダブルクリックで単語選択、そのままドラッグで複数単語選択

例えば次のテキストにおいて、

http.request(url, options)

httpをダブルクリックして単語選択してから、そのまま右へドラッグするとhttp.requestまで選択された状態になる。

Fold Level 1 〜 Fold Level 7

コマンドパレットにFold Level 1を入力。指定したレベルの折りたたみを閉じてくれる。
rspecやjestなどのファイルで行うと見出しだけを残してくれていい感じになる。

最後に編集した位置へ戻る(Cmd+k Cmd+q)

vimの `. と同じ。

もっと知りたい

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?