2009-12-11 6 views
17

私は自分自身のために効率的な2つのマッピングを作成しようとしています:VIM:Mappable(未使用)のショートカット文字ですか?

map X ddp 

私は一度に削除して貼り付けるために使用します。

map X "_dw 

これは、レジスタにヤンクされていない単語を削除します。

しかし、既存の便利なショートカットを壊したくないので、どのようなキーを使うことができるのだろうか?私はあまりにも肥満ですか?

答えて

10

Vimでは、大文字と小文字のすべてのASCII文字が1つ1つ使用されます。だから、あなたは何かを使用しないでください何かを選択すると、の上書きを巻き起こすつもりです。独自の拡張機能に共通のイディオムを使用すると役立ちます。私は、例えば、主要なカンマを使用します。

map ,w :w!<CR> 
map ,e :e #<CR> 
imap ,, <ESC> 

(私は挿入モードでの二つの連続するコンマを記述する必要はありませんほとんどないので、最後には、私のために特に有用であり、それはすべての行かなければならないことうれしいです。Escキーへの道)

+0

これは実際には本当に良いアイデアです。私はそれをコピーするつもりです。 – hora

+0

ええと、いや...一度試してみて、...コンマで迷子になった。 – Rook

+3

ハードコーディングされたコンマの代わりにを使用すると、好ましい解決策が得られます –

19

のvimのヘルプセクションがあります。彼は、いや、Uhmm

1.7 WHAT KEYS TO MAP         *map-which-keys* 

If you are going to map something, you will need to choose which key(s) to use 
for the {lhs}. You will have to avoid keys that are used for Vim commands, 
otherwise you would not be able to use those commands anymore. Here are a few 
suggestions: 
- Function keys <F2>, <F3>, etc.. Also the shifted function keys <S-F1>, 
    <S-F2>, etc. Note that <F1> is already used for the help command. 
- Meta-keys (with the ALT key pressed). |:map-alt-keys| 
- Use the '_' or ',' character and then any other character. The "_" and "," 
    commands do exist in Vim (see |_| and |,|), but you probably never use them. 
- Use a key that is a synonym for another command. For example: CTRL-P and 
    CTRL-N. Use an extra character to allow more mappings. 

See the file "index" for keys that are not used and thus can be mapped without 
losing any builtin function. You can also use ":help {key}^D" to find out if 
a key is used for some command. ({key} is the specific key you want to find 
out about, ^D is CTRL-D). 
+0

あなたのペーストには泥沼がついています – aehlke

+0

コントロールキーとその意味を探しているなら、^ Vで引用することができます。^Cのヘルプを見つけるには、help^V^Cとタイプします。 (^ Qはおもちゃのオペレーティングシステムで動作するかもしれません。) – Brian

2

-た-キーをマッピングしません。あなたのマッピングを作成するときに何かを上書きしないでください...オーバーマッピングしているコマンドを使用しないためではなく、あなたが持っているプラ​​グインがあるかもしれないからです。

それから、あなたはそれを上書きし、あなたは心配する必要があります。

個人的には、例として挙げたようなコマンドの場合、私はCtrl +いくつかのキーの組み合わせが好きです。 vimにはたくさんの無料のものがあります。そして、Ctrlの近くの左側の手紙は素晴らしいペアになります。

Btw、これらのマッピングで何をしようとしていますか...私は2番目の単語(単語単位で単語を削除する)を理解していますが、最初の単語はわかりません。それは何をすべきか?行を転記しますか?

+0

一般に、プラグイン作者は 'normal!'と 'noremap'を使うべきです。(ただし、誰もがそうではなく、そうでない場合もあると思います) – idbrii

+0

@pydave - はい、適切な場所で使用してください。 nmap/nnoremapはどちらも適切な使い方をしており、いずれも銀色の弾丸であると主張されるべきではありません。違いを知ることをお勧めします。 – Rook

13

多くのVimプラグインでは、最初に<Leader>を使用してキーシーケンスを開始します。これは、ユーザーが構成可能な(通常は)未使用のキーです。

           *<Leader>* *mapleader* 
To define a mapping which uses the " mapleader " variable, the special string 
" <Leader> " can be used. It is replaced with the string value of " mapleader ". 
If " mapleader " is not set or empty, a backslash is used instead. Example: 
     :map <Leader>A oanother line<Esc> 
Works like: 
     :map \A oanother line<Esc> 
But after: 
     :let mapleader = "," 
It works like: 
     :map ,A oanother line<Esc> 

Note that the value of " mapleader " is used at the moment the mapping is 
defined. Changing " mapleader " after that has no effect for already defined 
mappings. 
+1

*これは正しい答えです – aehlke

5

は通常、私はほとんどのマッピングのための制御+ [文字]またはALT + [文字]を使用して、それは安全だが、それは、ウィンドウのコマンドのために必要ですので、「W」に気を付けます。 arpeggio.vimに興味があるかもしれません。このキーを使うと、同時に押したグループのキーへのマッピングを作成できます。マッピングの可能性を大幅に拡大して、何かをオーバーマッピングする心配はありません。例えば、 "dp"(同時に押されている)をマップして "ddp"を実行すると、1つのコマンドで削除して貼り付けることができます。

+0

アルペジオを使い始めたばかりですが、これまでのところ私はそれを好きです。 – stephenmm

関連する問題