我想设置一个键映射,这样当我输入这个键(特别是我的例子中的F7键)时,它会用符号(&)替换第6列中的任何字符。
我正在尝试
:nnoremap <F7> 6| R &<ESC>
然而,这似乎没有做到这一点,我似乎无法理解为什么。
为什么我的错误?
答案 0 :(得分:2)
然而,这似乎没有做到这一点,我似乎无法理解为什么。
那么......它做什么而不是你期望的呢?
无论如何,您的映射存在许多问题:
您无法在映射中使用文字管道字符。您必须将其转义(\|
)或使用<bar>
代替,这样可以提供以下信息:
nnoremap <F7> 6\| R &<Esc>
nnoremap <F7> 6<Bar> R &<Esc>
请参阅:help map-bar
。
在您的宏中,<Space>
字符()被解释为
<Space>
命令,因此将光标向右移动一个字符。如果你不是<Space>
(命令),请不要使用<Space>
(角色):
nnoremap <F7> 6\|R&<Esc>
R
会让您进入替换模式。这没用,因为你只是替换了一个角色,它会迫使你<Esc>
进入普通模式。请改用r
:
nnoremap <F7> 6\|r&
请参阅:help R
和:help r
。
答案 1 :(得分:1)
或者,将光标移回其原始位置(即替换前的位置)也是有用的。要做到这一点,请使用:
nnoremap <F7> :let a=getpos(".")<cr>6\|r&:call cursor(a[1],a[2])<cr>
这张地图像这样分解:
:let a=getpos(".")<cr>
将光标位置保存在变量a
6\|r&
在之前的回答中有解释:call cursor(a[1],a[2])<cr>
将光标返回到原始位置答案 2 :(得分:0)
你走了:
:map <F7> 05lr&
没有逃脱。只需输入并输入即可。实际上是输入这些字符 - 小于符号,大写字母F,数字7等。