我试图让我的箭头键在vim无用,习惯 h j k l
在我的.vimrc
文件中添加几行后,一切正常,但插入模式重新映射。
nnoremap <Down> :echo "No down for you!"<CR>
vnoremap <Down> :<C-u>echo "No down for you!"<CR>
inoremap <Down> :<C-o> echo "No down for you!"<CR>
nnoremap <Up> :echo "No up for you!"<CR>
vnoremap <Up> :<C-u>echo "No up for you!"<CR>
inoremap <Up> :<C-o>echo "No up for you!"<CR>
nnoremap <Left> :echo "No left for you!"<CR>
vnoremap <Left> :<C-u>echo "No left for you!"<CR>
inoremap <Left> :<C-o>echo "No left for you!"<CR>
nnoremap <Right> :echo "No right for you!"<CR>
vnoremap <Right> :<C-u>echo "No right for you!"<CR>
inoremap <Right> :<C-o>echo "No Right for you!"<CR>
问题是,每次按下一个箭头键,它会将以下字符串插入我的文件中:
:回声“没有****给你!
答案 0 :(得分:0)
对于Vim问题我们有vi.SE,最好直接在那里发帖。总之:
Sardorbek的回答是正确的,映射到<nop>
是正确的解决方案。即:
noremap <Up> <nop>
noremap <Down> <nop>
noremap <Left> <nop>
noremap <Right> <nop>
inoremap <Up> <nop>
inoremap <Down> <nop>
inoremap <Left> <nop>
inoremap <Right> <nop>
然而,您的inoremap
将行打印到文件中的原因是因为您在映射开始时<c-o>
之后使用了:
,因此正常模式命令正在运行的是e
(不是:echo
)。我相信你看到的线路实际上是:
:cho "No **** for you!
而不是
:echo "No **** for you!
此外,<c-o>
仅允许一个普通模式命令,但您需要两个:回显消息,并否定箭头键移动。
从本质上讲,以下是可怕的(非常可怕,请不要这样做)但是会有效:
inoremap <Down> <esc>:echo "No down for you!"<CR>ki
inoremap <Up> <esc>:echo "No up for you!"<CR>ji
inoremap <Left> <esc>:echo "No left for you!"<CR>li
inoremap <Right> <esc>:echo "No Right for you!"<CR>hi
一般情况下,尽可能使用<esc>
优先于<c-o>
和c-u
(在可视模式下)。