没有换档键的VIM特殊字符

时间:2010-09-10 14:44:04

标签: vim keymapping

我写了很多代码,厌倦了每次需要特殊字符时按下shift。由于我经常使用特殊字符,然后是数字,我想要对它们进行反转行为。

所以,如果我输入< 4>如果输入< shift> +< 4>,我会收到'$'。每个号码我都会得到'4'等等。此映射仅适用于插入模式。

我试过了:

:set langmap 123...;!@#...,!@#...;123 "works only in normal-mode

:imap 4 $
:imap $ 4 "recursive mapping error

2 个答案:

答案 0 :(得分:4)

使用:ino,它与:imap的功能相同,只是它不会在替换的文本中查找地图。 (它是'inoremap'的缩写)这将解决递归问题。

有关更多信息,请参阅此处: http://vim.dindinx.net/orig/html/map.txt.php

或者输入:h map for vim online help(同样的事情,就在vim里面)。

答案 1 :(得分:0)

来自:help imap

If you want to exchange the meaning of two keys you should use the :noremap
command.  For example: >
   :noremap k j
   :noremap j k
This will exchange the cursor up and down commands.

With the normal :map command, when the 'remap' option is on, mapping takes
place until the text is found not to be a part of a {lhs}.  For example, if
you use: >
   :map x y
   :map y x
Vim will replace x with y, and then y with x, etc.  When this has happened
'maxmapdepth' times (default 1000), Vim will give the error message
"recursive mapping".

同样适用于imap(改为使用inoremap