VSCode のNeovimプラグインのInsertモードで、Emacs風のキーバインドを使用する
表題通り、VSCode にNeovimプラグインを導入した状態で、 Insertモード中にEmacs風のキーバインドを使いたいと思い、以下のような設定をinit.vimに記述しました。
"Emacsキーバインド inoremap <silent> <C-a> <Home> inoremap <silent> <C-e> <End> inoremap <silent> <C-h> <BS> inoremap <silent> <C-d> <Del>
けど、全然想定通りに動かない・・・
ちょっと調べたところ、こんな記事を発見した。
Insertモードのキーバインドは、init.vimに記述してもダメなのね。
VSCodeのkeybindings.jsonに以下の記述を追加して解決!
{
"key": "ctrl+a",
"command": "cursorHome",
"when": "neovim.mode == insert && editorTextFocus"
},
{
"key": "ctrl+e",
"command": "cursorEnd",
"when": "neovim.mode == insert && editorTextFocus"
},
{
"key": "ctrl+h",
"command": "deleteLeft",
"when": "neovim.mode == insert && editorTextFocus"
},
{
"key": "ctrl+d",
"command": "deleteRight",
"when": "neovim.mode == insert && editorTextFocus"
},
{
"key": "ctrl+k",
"command": "deleteAllRight",
"when": "neovim.mode == insert && editorTextFocus"
},
{
"key": "ctrl+m",
"command": "type",
"args": { "text": "\n" },
"when": "neovim.mode == insert && editorTextFocus"
}
自分が使いたいものだけ記述しましたが、以下のドキュメントを参考にすれば、他にも色々と設定できそうです。
Vimの操作方法私的メモ
Vimの操作方法私的メモ
前提として知っておくべき知識
Vim Cheat Sheet 随時参考にしていく
- 操作の取り消し
- u <> ctr + r
ノーマルモードでの操作は、オペレータとモーションの組み合わせで行う。
vimのキー(主にノーマルモードについて)は、大きく分けて「オペレータ」と「モーション」の2種類がある。これを把握することが大事。 オペレータ: 動詞として動作を指定する。主要なものは4つなのでここから覚えよう モーション: 対象範囲を指定する オペレータは意味のあるキーバインドになっているので、以下のような感じで覚えよう:
c : change (変更) d : delete (削除) y : yank (ヤンク: コピーと同義) g : go (移動全般) ノーマルモードでは基本的に最初にオペレータを入力し、その後に範囲指定を行う(CUI的発想)が、ビジュアルモードでは範囲を最初に選んでそれからオペレータを入力する (GUI的発想)という違いがある。
vimtutorに取り組む
vimtutorにある操作は積極的に使って行きたい。
自分が知らなかった・使いたい操作を列挙していく。
モーション(ノーマルモードだとカーソル移動)
- オペレータ:動詞
- c : change (変更)
- d : delete (削除)
- y : yank (ヤンク: コピーと同義)
- g : go (移動全般)
- 数値のタイプで繰り返し設定ができる
- モーション:対象範囲
- w - カーソル位置から空白を含む単語の末尾まで。
- e - カーソル位置から空白を含まない単語の末尾まで。
- $ - カーソル位置から行末まで。
- ex.
- d3w -> 3単語を削除する
編集
- p
- 削除したものを貼り付け
- D
- 行末まで削除
- 置き換え
- r
- 入力との置き換え
- ce
- 単語の末尾まで
- cc
- 行全体
- r
移動
- 0
- 先頭 <> $
- w
- 単語 <> 末尾
- 行番号 -> G
- 行番号にジャンプ
- 元の場所に戻る
- ctr + o <> ctr + i
- %
- かっこに移動
- 置換
検索
- ?で検索
- 逆方向
- y or
その他
- 外部コマンドの実行
- :!コマンド