如何在 Vim 中的命令模式和插入模式之间切换?

Posted

技术标签:

【中文标题】如何在 Vim 中的命令模式和插入模式之间切换?【英文标题】:How do I switch between command and insert mode in Vim? 【发布时间】:2012-10-22 03:31:05 【问题描述】:

我刚开始使用 Vim 作为 IDE。我现在将它用作测试编辑器有一段时间了,所以我不必经常进入命令模式。但是,由于我是用 Java 编程的,所以我必须进入命令模式来制作文件、编译/运行它……等等。

问题是:我需要一种在两种模式之间切换的好方法。

我在网上查看,它说<Esc> 键应该可以做到这一点,但这对我不起作用(也许它不适用于 gVim?我不知道为什么。)

每次进入命令模式都必须按CTRLO;转义键在该模式下工作......它让我回到插入模式。但是有没有更好或更简单的方式在命令模式和插入模式之间切换?

【问题讨论】:

Esc 绝对是完成插入的正确键。可以以多种方式开始插入。小写 i 在光标处开始插入,大写 I 在行首开始插入,等等。 从一个空文件开始,下面的字符应该给你一个包含单词“hello”的文件:ihello<ESC>:w hello.txt<ENTER> ctrl-[ 在许多键盘上用作 Esc 的替代品。 【参考方案1】:

ESC 从插入模式退出到正常模式,您可以在其中按 : 输入命令。 再次按 i 返回插入模式,一切顺利。

我不是 Vim 大师,所以其他人可以更有经验并为您提供其他选择。

【讨论】:

对于我们大多数人来说,但接受的答案有具体问题的答案。【参考方案2】:

看起来你的 Vim 是在简单模式下启动的。见:help easy

当使用-y 参数或evim 调用Vim 时会发生这种情况,或者您的.vimrc 配置中的某处可能有:set insertmode。找到源并禁用它;暂时这也可以通过 Ctrl + O :set noim Enter 来完成。

【讨论】:

我想就是这样。我在我的文件中启用了插入模式。删除它后,转义键可以正常工作。谢谢! 这是简单模式!? Vim 简单模式,现在这是矛盾的。那是可以退出vim的地方吗? @Davos 那是它在插入模式下启动的模式,因此具有讽刺意味的是,这是一种无法退出 vim 的模式:p“正常模式”更容易,只需 alt+:,x XD跨度> 【参考方案3】:

使用jj

在我的例子中,下面的 .vimrc(或者在 gVim 中是 _vimrc)设置。

inoremap jj <Esc>   """ jj key is <Esc> setting

【讨论】:

这是一个常见的重新映射。我发现它在等待额外的字符输入时有一点延迟。或者,在 Macbook 上使用 KeyRemap4MacBook 之类的东西将您的 capslock 键重新映射到 esc:github.com/tekezo/KeyRemap4MacBook 我发现将标签重新映射到 esc 更容易:3【参考方案4】:

这已经在other questions 中提到过,但是 ctrl + [ 等效于所有键盘上的 ESC

【讨论】:

我从来不知道,在不支持转义键时很有用 哇,感谢您提供的信息! Tmux 复制击键序列现在更有意义。【参考方案5】:

对于这类问题还有另一种解决方案,我认为这种解决方案相当罕见,如果您在 OS X Sierra 上使用 vim,您可能会遇到这种情况。实际上,这是 Esc 按钮的问题——不是 vim 的问题。例如,我无法使用 Esc 退出 youtube 上的全屏视频,但我忍受了几个月,直到我遇到了同样的 vim 问题。

我找到了this 解决方案。如果您懒得关注外部链接,关闭 Siri 并在 Activity Monitor 中终止进程会有所帮助。

【讨论】:

【参考方案6】:

来自emacs,我发现我喜欢ctrl + 键来做事,而在vim 中我发现[ctrl + C][alt + backspace] 都会从插入模式进入普通模式。您可以尝试看看是否适合您。

【讨论】:

在 ESC 不工作的 cpanel 终端仿真器上救了我一命。谢谢 ;)【参考方案7】:

您可以使用 Alt+H,J,K,L 在插入模式下移动光标。

【讨论】:

不,你不能。这可能是您配置的重新映射。 @SaulAxelMartinezOrtiz 是的,你可以,但从技术上讲,它会退出正常模式,之后你可以在正常模式下移动:p【参考方案8】:

对我来说,问题是我在recording mode。要退出录制模式,请按 q。然后 Esc 按我的预期工作。

【讨论】:

以上是关于如何在 Vim 中的命令模式和插入模式之间切换?的主要内容,如果未能解决你的问题,请参考以下文章

Vim命令合集

vim-模式间切换

vim-模式间切换

vim中如何插入空白行而不必要进去insert模式

Linux中vim的三种模式以及基本命令

vi/vim命令