2016-03-24 6 views
0

これはVIの伝統的な禅に反しているかもしれませんが、Viでキーを再バインドして作業する場合、特にバインドできない/できないことは非常に圧倒されます。私は、ビジュアルモードを使って選択/コピー/貼り付けをしてnvimに移動してから、特にホーム/エンドにアクセスしなくても、インサートモードの間に行の先頭/末尾にジャンプすることができました。vimrcにすべてのデフォルトバインドを含めますか?

私は自分のtmuxの設定と同じように、私のvimrcのすべての鍵をアンバインドしてからすべてをリバインドするコマンドを発行するのと同じように考えていました。そうすることで、拘束力に混乱することはなく、いつでも変更を簡単に変更して参照することができます。私はこれについてすべて間違っているのですか?

+0

'0'、' $ '、' e'、 'b'だけ使用しますか? – soyuka

+0

これは、挿入モードを残す必要がありますので、複数のキーストロークが必要です。私の質問はこれよりはるかに広いです。 – Bennett

+0

私は知っている、多分広すぎるかもしれない。 IMHO挿入モードの全体的なポイントは、それを挿入するためだけに使用することです。 caps-lockをescに再マップしてください。速いです。 – soyuka

答えて

2

本当にこれを行うことはできません。 Vimは、 "ユーザ定義のマッピング"とは異なる "組み込みのマッピング"を扱います。組み込みマッピングを実際に「アンマップ」することはできません。

技術的には、:mapで定義されたユーザー定義のマッピングとは別のC構造体に組み込みのマッピングを格納します。 :unmapを実行すると、それはユーザー定義の構造体から削除されます(ちなみに、先週のvi38でHow to find out what a key is mapped to?でこれがどのように動作するかの概要は不完全でした)。

あなたができる唯一のことのようなものです:

vnoremapため
" Remap all ascii characters; everything below 33 is a control character 
for i in range(33, 127) 
     " | needs some extra love 
     if i == 124 | continue | endif 
     execute 'nnoremap ' . nr2char(i) . ' <Nop>' 
     execute 'nnoremap <C-' . nr2char(i) . '> <Nop>' 
endfor 

" The above won't remap stuff like `<F1>`, `<Up>` 
nnoremap <Bar> <Nop> 
nnoremap <F1> <Nop> 
nnoremap <Up> <Nop> 
" ... etc ... You can use a loop for this as well... 

" Now make our own mappings 
nnoremap : : 

" ...etc... 

と同じ、などがありますが、さらに追加する必要がありますので、これは<C-w><C-w>gJなどを再マップはありません例外です(これらのマッピングの「第2のキー」は構造体にもありませんが、switch/caseです)。

ただし、 これをしないでください。今あなたのvimrcに頼っているのでしか理解できません。デフォルトのマッピングを学ぶだけです。これは、すぐに使用できるVimインストールを使用できることを意味し、マッピングはデフォルトのマッピングよりも「良い」ものではありません。

+0

これは私が必要とする回答です。ありがとうございました、 – Bennett

1

あなたはそれらのデフォルト値にすべてオプションをリセットするために、あなたのvimrcの上部付近にこのラインを置くことができます。

set all& 

をしかし、あなたは現実的に「アンバインド」「デフォルトのバインディング」とすることを望むことはできませんので、単一のコマンド:彼らは「コマンド」は、「バインディング」ではありません

  • は、
  • とにかくそのようなコマンドはありません。

あなたは<nop>:help <nop>)に、すべてのデフォルトのコマンドを再マップできますが、それは非常に少ない利益のために多くの作業のように聞こえます。

関連する問題