0

次のコマンドの簡単なマッピングを行いたいです。

:'<,'>s/{\|}//gc

選択したテキスト内の中括弧をすべて削除し、すべての変更の前に確認します。それは完全に機能します。

これを次のようなマッピングとして .vimrc に書き込むと:

vmap <leader>rc :<C-R>s/{\|}//gc<cr>

突然、パターン {|} に一致しないため、 | をエスケープすることがわかります。動作していないようです。

このマッピングを正しく作成する理由と方法を教えてください。

4

2 に答える 2

5

Use the following:

:vmap <leader>rc :s/{\\|}//gc<CR>

It does operate on the selected text: for : in visual mode, you get '<,'> in front of the command.

A useful way to debug this kind of mappings is to leave out the final <CR>, so you see the command exactly as it would be executed. That's how I noticed that <C-R> ate your s (because it expects register name as the next character) and that one layer of escaping is gone.

于 2013-01-29T11:13:45.073 に答える
0

コロンの後に削除する必要があると思います。<C-R>現在、コロンの後にsレジスタを貼り付けてからパターンを貼り付けます。

このレジスタに何かがある可能性は低いため、コマンド ラインは次のようになります。

:/{\|}//gc

実際、これは代替ではなく範囲指定子です。それを削除するだけです

vnoremap <leader>rc :s/{\|}//gc<cr>
于 2013-01-29T11:16:29.267 に答える