Questions tagged «normal-mode»

命令模式是初始模式。Vim称为正常模式。不要与命令行模式混淆,命令行模式是按:,/ 、?或!之后得到的。

2
有没有办法插入单个字符然后退出插入模式?
当我浏览文本时,例如,在某些单词或引号周围加上反引号时,每次插入后必须按Esc或Ctrl- [会很烦人。插入内容(和附加内容)不同,因此.并没有太大帮助。 是否有任何类似的功能,r使单个字符后返回正常模式,但使用插入模式而不是替换模式?

2
设置`wrap`选项时的滚动问题
我发现每次wrap启用该选项时都会处理此问题(在我特殊的情况下,当我使用markdown文件时)。 什么情况是,虽然滚动向上和向下的缓冲j和k,文字的线条包裹在最顶部(在视觉上形成一个段落),远远底不滚动顺利(即逐个)出画面。取而代之的是,整个段落消失不见,并突然从视线中重新出现,从而产生令人迷惑和烦人的效果。 我认为GIF会更好地解释会发生什么。在这里,我只是k反复按以向上滚动。注意底部附近的段落! 我习惯了这种行为,因为我认为它是不可修复的,但是后来我意识到,物理线路和未wrap设置不会发生这种情况。 有没有办法告诉Vim用可视线而不是物理线滚动出屏幕? ps:是的,我已将jand 映射k到gjand gk。


1
使用退格键以普通模式修改当前命令?
有时,在普通模式下输入命令时,您可能会打错字,例如,如果我打算打字10dk,可能会不小心开始打字19d。 由于该命令尚未完成/提交,是否可以使用退格键删除不正确的键,例如:19d<backspace><backspace>0dk,而不必按Escape键重试该命令? 附带问题:数据结构中是否存在Vim术语,可在提交前保存当前命令?

4
如何用以前选中的文本替换()中的文本?
假设我之前拉过文本Fnord,并且我的光标位于B该行的上: M:mock(Baz) 如何用先前选中的文本更改()中的文本? 目前,我经常通过以下操作来犯错: di( 又名“删除()内” SHIFT + P 但是,这又给我留下了确切的文字,因为删除的文字将被移到寄存器中。 我希望有: M:mock(Fnord)

1
如何防止(或至少提示确认)非常大的数字被用作前缀命令?
它的发生频率不像您想象的那么频繁,但偶尔会发生,而且我什至没有养猫。 基本上,如果您混搭数字行或数字键盘,然后碰巧触发了可重复命令的键盘,则可能会无意间命令Vim执行数千,百万甚至十亿次的任务。这很容易失控,并可能导致数据丢失。 所以我想知道我们是否可以更改源代码中的配置或内容以进行健全性检查以防止此类DoS。

4
如何向后删除内容直到上一行的“ =”?
我使用一个JavaScript代码示例: 1 var a = 1; 2 var b = |{}; 光标位于|(当光标形状为块时,在字符“ {”上的位置)上,我发现我a应该被分配一个对象,因此我想如下进行修改: 1 var a = {}; 所以我想知道当光标在“ {”上时,如何快速删除“ {”之前的所有内容,直到第1行中“ =“”之后的空白? 在其他普通编辑器中,我将按Backspace键删除代码。但是我不怎么在vim中实现这一目标。

1
通过:g / ^ / norm和:%norm了解行参考差异
假设我有以下非常简单的文件 a b c d e 并且我决定要在每行之后添加空行。我立即想到了几种不同的方法。我们可能会这样做(从而接受失败)。我们可能会录制一个类似的宏,qqo<ESC>jq并重复几次。 在我看来,另外两种方法似乎更明显。 首先,我想我会在每行上发出:norm命令o。所以我跑了:%norm o。但是实际发生的是,我们得到5条空行,然后是上面未分隔的行。我的解释是%norm,vim实际上在这五行文件的前五行中接收了以下普通命令发出的消息。该o命令创建新行,并且vim是“哑”的,因为它是通过行号而不是实际上通过其他标识符来引用的。 好吧,我很尴尬。当然。我尝试了其他一些方法,看看是否可以使上述方法起作用,但是,我不能。出于好奇,我尝试了另一种我最喜欢的大规模应用方法。这导致我尝试:g/^/norm o。令我惊讶的是,这很好!因此,在我看来,这里的vim似乎并不像上面那样“愚蠢”,并且引用行的不仅仅是行号。 到底是怎么回事?
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.