サーチ…


前書き

Vimのキーマッピングを更新すると、より記憶に残っているかアクセシブルな文字にキーコマンドを再割り当てするか、存在しない関数のキーコマンドを作成するといった2種類の問題を解決できます。ここでは、キーコマンドとそれが適用されるコンテキスト(すなわちvimモード)をマップするさまざまな方法について学びます。

基本的なマッピング

地図の概要

キーシーケンスは、 mapバリアントの1つを使用して別のキーシーケンスに再マップできます。

たとえば、次の典型的なmapは、 j kをすばやく押すと、 挿入モードを終了します。

:inoremap jk <Esc>

地図演算子

さまざまなモードの:mapがあります。

コマンドモード
:map:noremap:unmap ノーマル、ビジュアル、オペレーターペンディングモード
:map!:noremap!:unmap! 挿入モードとコマンドラインモード
:nmap:nnoremap:nunmap ノーマルモード
:imap:inoremap:iunmap 挿入と置換モード
:vmap:vnoremap:vunmap ビジュアルモードとセレクトモード
:xmap:xnoremap:xunmap ビジュアルモード
:smap:snoremap:sunmap 選択モード
:cmap:cnoremap:cunmap コマンドラインモード
:omap:onoremap:ounmap オペレーター保留モード

通常は:noremap亜種を使用する必要があります 。マッピングを再マッピングと再帰の影響を受けないようにします。

mapコマンド

  • :map (または上記のバリエーションの1つ)を使用して、すべてのマッピングを表示できます。
  • 特定のキーシーケンスの現在のマッピングを表示するには、次のようにし:map <key> <key >は一連のキーです
  • Escのようなスペシャルキーは、 <Esc>ような特殊な<>表記を使用してマップされ<Esc> 。キーコードの完全なリストについては、 http://vimdoc.sourceforge.net/htmldoc/intro.html#keycodesを参照してください。
  • :nmapclear - すべてのノーマルモードマップをクリアする
  • :nunmap - ノーマルモードマップのマップを解除する
  • timeoutttimeout変数を変更することで、シーケンスのキー間の最大時間を設定できます

  • imap jk <Esc> :挿入モードでjkを入力すると、通常モードに戻ります
  • nnoremap tt :tabnew<CR> :通常モードでttを入力すると、新しいタブページが開きます
  • nnoremap <Cj> <Cw>j :通常モードで<Cj>を入力すると、左下のウィンドウにジャンプします
  • vmap <Cc> \cc :ビジュアルモードで<Cc>を入力すると、 \cc (行をコメントするNERDCommenterコマンド)が実行されます。これはプラグインのマッピングに依存するため、使用できません:vnoremap here!

futher読んこちら

マップリーダーキーの組み合わせ

リーダーキーは、エンドユーザーが上書きできるキーバインディングを使用してマッピングを作成する方法として使用できます。

リーダーはデフォルトで\キーです。これを無効にするには、エンドユーザーはマッピングを定義する前に:let g:mapleader='somekey(s)'を実行する必要があります。

典型的なシナリオでは、Mapleaderは.vimrcに設定され、プラグインはマッピングのキーバインディング部分に<Leader>を使用してカスタマイズ可能にします。

プラグインでは、次のようにマッピングを定義します。

:nnoremap <Leader>a somecomplexaction

これは、\ +キーの組み合わせにsomecomplexactionアクションをマッピングします。

リーダーなしのアクションは変更されません。

<Plug>Mappingsを使用して、プラグインのキーバインドをカスタマイズする余地を残すことも可能です。

基本的なマッピングの図解(便利なショートカット)。

ほとんどのテキストエディタでは、現在のドキュメントを保存するための標準ショートカットはCtrl + S (またはmacOSではCmd + S )です。

Vimはデフォルトでこの機能を持っていませんが、これをマップすることで作業が簡単になります。 .vimrcファイルに次の行を追加すると、そのジョブが実行されます。

nnoremap <c-s> :w<CR>
inoremap <c-s> <c-o>:w<CR>

nnoremapコマンドは、 Ctrl + S:w (現在の内容をファイルに書き込む)コマンドにマップしますが、 inoremapコマンドはCtrl + S:wコマンドにマップし、挿入モードに戻ります( <co>コマンド<co> <esc>:w<cr>aような他の解決策が保証できないカーソル位置を変更することなく、後で挿入モードに戻ります。

同様に、

" This is commented, as Ctrl+Z is used in terminal emulators to suspend the ongoing program/process.
" nnoremap <c-z> :u<CR>

" Thus, Ctrl+Z can be used in Insert mode
inoremap <c-z> <c-o>:u<CR>

" Enable Ctrl+C for copying selected text in Visual mode
vnoremap <c-c> <c-o>:y<CR>

PS:ただし、ssh(またはPuTTY)を使用しているときにCtrl + Sが期待通りに機能しない可能性があります。これに対する解決策はこのドキュメントの範囲内ではありませんが、 ここで見つけることができます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow