如何从命令行关闭vim?


46

我知道这更多是一个通用的Linux问题,但有。因此,当我在命令提示符下输入vim之类的程序时,它会显示文件中的所有文本,并且可以对其进行编辑。等等。过程。任何帮助表示赞赏。




Answers:


70

在vim中,有3种不同的模式:

  • 插入-允许正常键入和编辑
  • 视觉-用于选择复制/粘贴等
  • 普通-用于命令

要返回正常模式,您随时可以按esc

进入普通模式后,按:开始命令(您会在左下方看到它)。以下命令与退出vim有关:

  • :q -如果未进行任何更改,请退出
  • :q! -退出并销毁所做的任何更改
  • :wq -写入更改(保存)并退出
  • :x-与相似:wq,仅在进行更改后才写入文件,然后退出

4
并且:x是一个捷径:wq
沃德Muylaert

2
只是忘记了“正常”模式。哇。实际上mode(),vim中的函数可以返回18个不同的值。
Benoit

正如Benoit所暗示的那样,此答案令人困惑地使用术语“命令模式”来指代vim文档所称的“正常模式”。vim docs认为:在正常模式下按即可进入命令模式。如果按esc,则返回到正常模式。-1会误导试图学习标准术语的人(从而使他们能够理解帮助系统)。
直觉

6
@intuited任何人都可以建议编辑,从长远来看,这可能比投下赞成票和好的建议深深地有用。
Michael Martin-Smucker'2

感谢您提供的信息,它也应该显示在VIM中的某个位置,以便人们知道...在Internet上搜索它是如此荒谬。
shridutt kothari

14

首先,按下escape键。1个

然后只需键入ZZ(连续两个大写字母Z)。
或者,键入:x。要么保存所有编辑,然后离开。
您也可以使用:wq

或者,您可以键入:q (又名“ 请退出,请 ”)。仅当您未进行编辑时,此选项才会退出。

如果您进行了编辑,并且想要放弃它们并离开,请键入:q!(又名“ 退出,该死!”)

1:这确保您处于“命令”模式。您想要键入命令的命令,例如需要退出的命令。


4

给我们带来的不便之处是,没有退出命令行程序的通用方法,例如图形程序使用“ X”按钮。

许多命令行程序都遵循使用Q(例如mantop)或Ctrl+ C(例如pingwatch)退出的主题,但这差异很大,尤其是在文本编辑器中:

  • Vim特别使用:q!then 的晦涩组合Enter,通常会先按几次以Esc取得良好效果。
  • 另一个宝石Emacs更喜欢Ctrl+,X其次是Ctrl+ C

这样的编辑者是没有经验的陷阱。我个人的偏爱和建议是,当被迫在命令行上编辑文本时,改用更不言自明的Joe's Own Editor(JOE)


4
我实际上会争辩说这nano是一个更加通用的不言自明的控制台文本编辑器。
jondavidjohn 2011年

@jondavidjohn您的争论尚无定论。我同意毫无疑问,nano更具通用性,并且我不否认它比JOE更不言自明。我之所以喜欢 JOE,是因为它具有扩展的功能集,我对经验不足的用户的建议受到一些微妙的影响,例如使用术语“ 保存 ”代替过时的WriteOut
ændrük

通常,您可以使用^ Z暂停该过程。然后,您可以杀死它,忽略它,将它放到后台或将其放回原处。(杀死%1或杀死%x,bg,fg)。无论如何,工作控制是统一的。
belacqua

3

除了jondavidjohn的答案以外,这里还有两个链接,这些链接提供了有关使用vim必不可少的信息。

  1. 这是一个键盘图形,向您显示每个键的作用取决于您是处于编辑模式,命令模式还是可视模式:

    http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

  2. 这是我经历过的最好的vim教程。由于它是IRC /即时消息格式,因此易于对话且易于理解。

    http://www.vi-improved.org/tutorial.php

最后,有些像aendruk这样的人根本不想使用高级命令行文本编辑器。Vim特别具有陡峭的学习曲线,实际上确实需要一些初步的努力才能习惯。但这非常快,而且功能非常强大。如果您除了基本的台式机使用之外还对Linux感兴趣,那么值得花时间学习像Vim或Emacs这样的体面命令行文本编辑器。如果您只需要编辑一些文本,而又不需要太多,请尝试输入gedit filename.txt。它将启动一个熟悉的图形程序,就像Windows中的记事本一样。


@djeikyb:非常感谢您在基本的桌面使用和高级命令行文本编辑之间做出区分。Ubuntu相对于其他Linux发行版的优势在于它能够使日常计算机用户可以访问Linux桌面,而如今,这种信誉日益受到人们的欢迎,这种独特的奢侈品不再需要知道像Vim这样的编辑器。
ændrük

……出于这种特殊的自由,我决定在日常计算机使用过程中耐心等待,使其工作于传统Linux命令行方法之上。我尽力只使用简单易用的工具,因为我负担得起。说我根本不喜欢命令行文本编辑器可能是不正确的。相反,我恰好喜欢Vim的VimOutliner插件,而且我对它对Vimperator / Pentadactyl项目的影响深表感谢。
ændrük

...但是,我个人对这些工具的使用与正常的计算机使用有所不同。我认为,对于Ubuntu社区来说,向新来者建议,随便使用具有陡峭学习曲线的高级工具是日常用户的常态,这将是一个健康的发展。
ændrük

@Letseatlunch,如果您的目标是精通Vim,那么我鼓励您继续追求它。我只是想传达一下,尽管重要的是,Ubuntu提供了许多其他操作系统完全缺乏的高级工具,但是使用它们绝不是学习使用它们的必要条件
ændrük

伟大的澄清!我将编辑答案以更好地反映这一点。另外,我特别推荐在nano上使用gedit,因为gedit是一个熟悉的gui较高的级别,并且因为nano最初使我感到困惑(插入符号是什么意思?我该如何退出?我该如何保存?) 。考虑到vim是我的首选编辑器,现在这很有趣。
djeikyb 2011年

2

如果 Esc :q!不起作用,

首先尝试Ctrl+ q(以解锁用Ctrl+ 锁定的屏幕s

然后重试Esc :q!(退出而不保存)或Esc :wq(保存并退出)


0

想要退出而不保存:

  1. 击中 ESC
  2. 击中 ZQ

退出并保存:

  1. 击中 ESC
  2. 击中 ZZ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.