为什么vim中的某些命令需要冒号而有些命令却不需要?

时间:2012-12-27 08:37:08

标签: vim

vim中的一些命令是通过首先输入冒号(:)来给出的。 :wq用于保存文件并退出。虽然某些命令不需要冒号,例如Replace命令(R)。我想知道这两种方法有什么区别?关于哪些需要冒号而哪些不需要冒号,是否有任何具体规则?

4 个答案:

答案 0 :(得分:33)

您必须查看Vim的前身history of vi以获得解释。很久以前,当必须使用键盘和连接的打印机(称为终端)进行文本编辑时,除了纸张之外没有鼠标,没有显示,因此交互性很小。编辑由名为 ex 的编辑器组成的简短助记符命令组成。您发出了一个命令,用于处理一行或多行(例如:substitute/foo/bar),编辑服从。如果您不确定命令的效果,可以:print一些行。

时间过去了,视频终端出现了,而 vi编辑器包含了ex命令(因为它们很有用并且程序员习惯了它们),但引入了更多交互式命令,如delete({{1 }},insert(x)等等。 ex命令仍可在命令行模式下使用,该模式以i开头,并以 Enter 结束。

Vi和Vim在这方面很特别,因为他们有这些不同的模式,其中相同的键意味着不同的东西,具体取决于你所处的模式。为了精通Vim,你必须学习关于不同的模式,以及如何最好地利用它们来实现编辑目标。

:为您提供了优秀而全面的帮助设施的起点。

答案 1 :(得分:13)

“不需要”冒号的命令称为“正常(模式)命令”。

“需要”冒号的命令称为“Ex命令”。

Vim是一个模态编辑器,它有许多与你所处模式相关的命令。最明显的效果是在不同的上下文中点击相同的键可能会产生不同的结果。

插入模式下,键盘上的大多数按键用于在文档中实际输入字符。

你必须切换到普通模式来拉动,放置,删除,移动光标...... 正常模式是你进行激光聚焦编辑的地方Vim很有名for和使用dcggsi/.*等命令。

您可以在普通 / * visual *模式中点击:进入命令行模式。它通常用于两件事:

  • 执行管理任务(写入磁盘,切换缓冲区,打开文件......)
  • 使用很酷的编辑命令,例如:m10:t1:g/foo/d ......

你可以在这种模式下使用的许多命令是(非常强大的)Vim过去的残余,并被称为Ex命令。

简而言之,普通模式命令和Ex命令都不以冒号开头。冒号只是用来改变模式。

答案 2 :(得分:9)

您处于vim的不同模式。 vim中有6种基本模式。他们是

  1. Normal mode
  2. Visual mode
  3. Select mode
  4. Insert mode
  5. cmdLine mode
  6. Ex mode
  7. Normal模式下,您无需输入:,按Esc即可达到此模式。

答案 3 :(得分:0)

最重要的区别(IMHO)是冒号命令被视为单词,而不是单个字母,并且直到您按Enter键时才被解释。

正常模式下的命令被视为单个字母,每个字母都有定义的含义,并且在vim知道如何处理它们后立即执行它们。

例如,在正常模式下键入'de',将删除所有内容,直至单词结尾。但是'de'并不是真正的 command ;这是两个命令。 “ e”将您移至单词的末尾,“ d”的意思是“删除某些内容;等待下一次按键来告诉您要删除的数量。”当您键入“ d”时,它将等待您完成说明。按下“ e”键后,命令将立即执行(无需等待您是否要输入其他内容)。

这意味着在普通模式下,您将无法获得“定义”或“交付”或“描述”之类的说明。您可能会输入'de',而vim会执行'de'指令。到定义中的“ f”时,您将开始一条新指令。

但是在命令行(冒号)模式下,命令被视为单词。可能有一个名为“ define”的命令和另一个名为“ describe”的命令。 (没有,但是有可能。)

如果只将

'w'创建为普通模式命令,只需将当前文件保存在当前文件名下即可。但是':w'的作用远不止于此。您也可以执行“:w new_filename”,然后得到一个“另存为”功能。这在正常模式下不起作用。在正常模式下,“ w new_filename”将保存文件(“ w”),不执行任何操作(空格),尝试查找下一个搜索词(“ n”),移至下一个字尾位置(“ e”) )...等等。