EmacsユーザーのためのVS Code(Windows, キー操作編)

チートシートを見ているだけでは使えるようにならないので、Emacs頭の自分に合わせて整理してみた。

キー操作対応表

説明 Emacs VS Code 備考
カーソル移動
次の文字へ C-f
前の文字へ C-b
次の行へ C-n
前の行へ C-p
行頭へ C-a Home
行末へ C-e End
次の単語へ M-f C-→ 間違っているかも
前の単語へ M-b C-← 間違っているかも
次の画面にスクロール C-v PageDown
前の画面にスクロール M-v PageUp
バッファ先頭に M-< C-Home
バッファ末尾に M-> C-End
指定行にジャンプ M-x goto-line C-g 自分はM-gに割り当てている(Emacs)
編集
現在の位置の文字を削除 C-d DEL
前の文字を削除 BS BS 自分はC-hに割り当てている(Emacs)
現在の位置の単語を削除 M-d C-DEL
範囲をカット C-w C-x
行末まで削除 C-k
1行削除 C-Shift-k
範囲をコピー M-w C-c
貼り付け C-y C-v
改行 RET RET
改行 C-m
改行 C-j
タブ入力 C-q C-i
空行追加 C-o C-Shift-RET 必要性を感じないので別機能を割り当て(Emacs)
コメントアウト・解除 C-x C-; C-/ これまで普段 M-x comment-region 使っていた(解除時は C-u 付加。Emacs)
行を移動 Alt-↑/↓
行を複製 Shift-Alt-↑/↓
やりなおし C-_ C-z
やりなおし C-/ C-z
やりなおし C-x u C-z なぜかこれをよく使ってしまっていた(Emacs)
Undo取り消し C-g C-/ C-y 使ったことなかった(Emacs)
検索、置換、変換
前方検索 C-s C-f
次の前方検索 C-s F3
後方検索 C-r C-f
次の後方検索 C-r Shift-F3
置換 M-% C-h
文字入れ替え C-t
単語入れ替え M-t 使ったことない
単語を大文字で始める M-c Transform to Title Case
単語を大文字に M-u Transform to Uppercase
単語を小文字に M-l Transform to Lowercase
ファイル・バッファ操作
終了 C-x C-c Fileメニューからや閉じるボタン?
ファイルオープン C-x C-f C-o
ファイル保存 C-x C-s C-s VS Codeでは自動保存の設定にしてしまっている
別名で保存 C-x C-w C-Shift-s
バッファを削除 C-x k C-w
ウィンドウ操作
左右分割 C-x 3 C-\
表示位置
現在位置を中央・上端・下端に C-l
現在位置を上端に C-u 0 C-l
表示位置をダウン C-u 1 C-v C-↓ 使ったことなかった(Emacs)
表示位置をアップ C-u 1 M-v C-↑ 使ったことなかった(Emacs)
その他
折り返し M-x toggle-truncate-lines Alt-z
キーボードショートカット一覧 M-x describe-bindings C-k C-s
バッファ全てをマーク C-x h C-a 普段使っていなかった。全選択する状況が少ないからか?(Emacs)

Emacsにはない操作

Emacsには(標準では)用意されていないと思われるものだけ再掲 (Emacs にもあったら、ごめんなさい。修正します)

説明 Emacs VS Code 備考
1行削除 C-Shift-k
行を移動 Alt-↑/↓
行を複製 Shift-Alt-↑/↓

補足

  • 普段 M-〇 は、ESCを押した後、〇を押している。これがキー操作に影響を与えている可能性あり
  • インデントまわりは未整理
  • ウィンドウ操作は VS Codeはタブエディタで画面分割もキーボードショートカットに割り当たっていないようなので、とりあえずほぼ省略
  • 文字コードまわりが不明なので未記載(Emacs )では、「C-x RET f」「C-x RET c」等を良く使用)

雑感

  • Emacs は(記号を考えないと) Shift との併用は少ない?(VS Codeでも少ないようだが)
  • VS Codeを使いこなすには、マルチカーソルをマスターしておきたいところである。

執筆者のEmacs使用歴

  • 20年以上メインに使用。それなりに不自由なく使っているつもりだが、それほど情報を追いかけているわけでもないので、最近でも新たな発見があったりすることあり。
  • 『[改訂新版]Emacs実践入門』『Emacsテクニックバイブル』などは読了しているが、ELPA等は未導入。

参考資料

改版履歴

  • 2021-11-28 初版

20分ではじめるRubyPico を読む「ファイルからの読み込み」

説明はなかったが、ファイル作成すると以下のコードが挿入されていた。

puts "Hello, RubyPico!"
puts "http://rubypico.ongaeshi.me"
puts Image.load("chat_ruby.png")

これは消して実行すると

irb - Interactive Ruby Shell
irb:000> load "greeter"
=> true
irb:001> Greeter.new.say_hi
Hi World!
=> nil
irb:002> Greeter.new.say_bye
Bye World, come back soon.
=> nil
irb:003> Greeter.new("Hello").say_hi
Hi Hello!
=> nil

20分ではじめるRubyPico を読む「複数行にまたがるプログラム」

irb - Interactive Ruby Shell
irb:000> def hello; puts "Hello World!"; end
=> :hello
irb:001> hello
Hello World!
=> nil
irb:002> def hello
line 1: syntax error, unexpected $end, expecting ';' or '\n'
irb:003> 

CRubyだと

>> def hello
>> puts "Hello World!"
>> end
=> nil
>> hello
Hello World!
=> nil

ふと、日本語どうなんだろうと思ったので確認

irb:000> puts "こんにちは"
こんにちは
=> nil

20分ではじめるRubyPico を読む「変数の前には@」

irbで変数を使うときは@を付ける」

irb - Interactive Ruby Shell
irb:000> x = 1
=> 1
irb:001> x
undefined method 'x' for main
irb:002> @x = 1
=> 1
irb:003> @x
=> 1
irb:004> 

理由不明