始终在命令行模式下使用“:”保持vim

3

有没有一种方法可以让vim在命令模式下卡住,并已经输入了:?

这样,例如:

  • 我将输入/fooEnter,光标将移动到包含foo的下一行的开头。
  • 接下来,我仍然处于命令行模式下,并已经输入了:,以进行下一个命令。

2
没有办法做到这一点。这不是 Vim 的操作方式。需要一点时间来适应 Vim 的三种模式,但一旦适应了,就会变得自动化。 - Jim Stewart
@JimStewart:事实证明那并不正确。请看我的回答。 - Keith Thompson
@JimStewart - Vim实际上有(至少)六种模式(或更多,取决于约定)。 - Rook
请澄清一下,您是希望在屏幕上保持可视化显示的同时进行这个操作吗?我的回答假设您不想这样,并且希望进入纯文本模式。 - Keith Thompson
@JimStewart:很可能我误解了OP所寻找的内容。 - Keith Thompson
@KeithThompson 是的,我基本上是在寻找一个带有文本可视化显示的 ed - VimQuestion
4个回答

7

可以通过使用exvi -e作为命令来在Ex模式下启动它。

您还可以通过键入大写Q(必须是大写)从普通的可视化模式进入Ex模式。

使用vi命令可以从Ex模式返回到普通可视化模式。

编辑:实际上,这并不能实现OP所寻求的功能。他想要保持视觉显示,同时将光标保留在底部命令行上。这可能是不可能的。


当您处于 Ex 模式时,“visual” 窗口不会更新:您无法获得高亮或光标移动,这正是 OP 所要求的。实际上,当您开始进入 Ex 模式时,根本没有“visual”窗口。 - romainl
@romainl:从问题中(至少对我来说)并不清楚,OP并没有明确表示他想保留视觉显示。但是考虑到措辞(“光标将移到下一行的开头…”),你可能是正确的。我会在问题上发表评论以寻求澄清。 - Keith Thompson
是的,我想要文本的可视化显示。尝试过 cmap <cr> <cr>:,但当输入带有 ':a' 的文本时,这会导致许多问题。 - VimQuestion
我不明白 ex 的意义; 它不能打印语法高亮的文本。 <kbd>Up</kbd> 键不能重复上一条命令。它不显示可视窗口(尽管已经实现了该代码)。我只会坚持使用 ed... - VimQuestion
“ex”在这里是因为它是为“vi”编写的“vi”视觉模式。Ex 在某种程度上是 Vi(m) 的核心。 - romainl

0
你可以像这样构建自己的REPL
:while 1 | execute input(':') | redraw | endwhile

这只是一个概念演示;您可能需要添加一个条件来退出此特殊模式。此外,像:append这样的命令需要特殊处理才能正常工作。


不知道该怎么做,直接在命令行或我的 .vimrc 文件中写入似乎不起作用。 - VimQuestion
在Vim中键入它 :-) 之后,您可以提交其他Ex命令(例如%s/e/E/g),并且应立即在当前缓冲区中看到其效果。 - Ingo Karkat
不,它不能正常工作。例如,在输入数字时它不会跳到下一行,而且当输入错误命令时会导致一切崩溃。 - VimQuestion
它确实可以,只是不可见。使用:redraw!而不是:redraw似乎可以解决这个问题。正如我所说,这只是一个需要扩展以进行实际使用的演示。 - Ingo Karkat

0

0

作为最后一次尝试,我可以使用-servername=FOO初始化vim,然后编写一个小脚本,该脚本将从stdin读取并在检测到(通过解析)整个命令已在stdin上键入时向FOO发送remote-send

然后我只需在不同的xterms/gnu屏幕上并排使用Vim和这个其他脚本。

编辑

好的,我会使用这个。这样我甚至可以使用:a命令进入vim的插入模式,并在输入带有单个.的行时切换回命令模式。这样,在插入文本时我也会有语法高亮(你知道,vim有一个非常漂亮的文本可视化显示,我只是太习惯ed的界面了)。等我有时间时,我会编写这个脚本并在此处链接它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接