VIM специальные символы без клавиши Shift - PullRequest
0 голосов
/ 10 сентября 2010

Я пишу много кода и устал от нажатия клавиши shift каждый раз, когда мне нужен специальный символ. И поскольку я часто использую специальные символы, а не числа, я хочу изменить их поведение.

Итак, если я наберу <4>, я получу '$', а если я наберу + <4>, я получу '4' и так далее для каждого числа. Это отображение должно работать только в режиме вставки.

Я пробовал:

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

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

Ответы [ 2 ]

4 голосов
/ 10 сентября 2010

Используйте :ino, что делает то же самое, что и :imap, за исключением того, что он не ищет карты в замененном тексте.(это сокращение от 'inoremap'). Это решит проблему рекурсии.

Для получения дополнительной информации см. здесь: http://vim.dindinx.net/orig/html/map.txt.php

Или введите: h map для онлайн-справки vim (тожевнутри vim).

0 голосов
/ 10 сентября 2010

С :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 вместо).

...