nnoremap j n
nnoremap k e
nnoremap l u
nnoremap h i
inoremap jj <esc>
nnoremap e j
nnoremap u k
nnoremap i l
nnoremap n h
字符串
我已经配置了这些自定义Map。当我使用它们时,它可以完美地工作,也可以像2e
这样的运动,它将作为2j
工作,并向下移动两行。但问题是当我想执行d2j
删除两行时,我的绑定不工作,当击中键与d2
或作为一个议案的关键是渲染,因为它是即当我键入d2e
它应该做d2j
,但它是d2e
,而不是我如何配置这个?
1条答案
按热度按时间efzxgjgh1#
Vim本质上是模态的,这意味着它有不同的模式,根据模式的不同,你可以做不同的事情。Vim从 * 正常模式 * 开始,它提供了强大的导航和文本编辑命令。你肯定也知道 * 插入模式 *,因为那是你写文本的地方。要回到 * 正常模式 *,你提出了一个Map
:inoremap jj <esc>
,它只在插入模式下是活动的(注意前面的i
)。顺便说一句,它和你的其他Map没有关系,所以我们就这样吧。所有其他Map都是用
:nnoremap
命令创建的,这意味着它们只能在正常模式下工作。这是一件好事,你几乎不希望它们处于插入模式。想象一下,点击J,看到文本中出现n
。一个不太为人所知的模式是 operator-pending mode,当你输入
d
,Vim等待一个动作时,Vim就处于这种模式。要使你的Map在那里工作,使用:onoremap
。不久之后,您将想在 visual mode 下选择文本,并想知道为什么Map在那里不起作用。使用
:vnoremap
命令。您的Map,在可视和操作员挂起模式下重复,将如下所示:
字符串
你在评论中写上你是新手,这没什么好羞愧的。如果你是Vim新手,你应该知道如何阅读内置的
:help
,你只需要在正常模式下输入:help
,然后选择你感兴趣的命令。Ctrl-D会给予你建议。:help
应该是你获取Vim信息的第一站。不是谷歌,不是SO。事实证明,
:help map-modes
有你需要的所有信息。你也可以跳到:help :nnoremap
,阅读上面、下面和引用的主题。一般来说,在学习Vim时,我相信最好先从编辑器本身开始,学习它的核心功能,然后再疯狂地学习Map、插件和其他附加功能。随着你的键的切换,你很难在不解除Map的情况下遵循任何关于Vim的教程。在将我上面写的东西复制到你的
vimrc
之前,认真考虑一下。虽然选择
hjkl
是因为半个世纪前有人在这些键上画了箭头,但你Map的其他一些命令遵循的助记符,如u
ndo,e
nd-of-word等,现在已经丢失了。掌握Vim并不在于你如何弯曲和破坏它,而在于你能把它弹得多好。学习钢琴,你不会把所有的黑色键都拆下来,把它们放在白色键的右边,因为这样看起来更整洁。
我不能说我理解创建这些Map的动机。它看起来有点像你在使用Dvorak键盘,只是
n
不适合在图片中。作为我上面制定的“新用户不应该使用插件”规则的例外,如果你使用的是深奥的键盘布局,考虑寻找一个现有的插件来使键盘工作。