[英]Move to the end of line character in Vi, past the last character in the line
[英]VI Editor: Move to EOL instead of last character
我最经常发现自己必须在简约的终端上使用普通的旧vi,这些终端往往与大型发行版上的vim行为有所不同,因此这种行为使我震惊。
我想知道的不是如何移动到行中的最后一个字符,而是如何移动到该行之后的一个字符。 因为键入$
不会将插入光标移动到该行的最后一个字符,所以很容易证明这一点。 我现在在MSYS上使用vi。
如果我输入
This is a test
然后按esc
, $
, i
和<enter>
,我将得到以下内容:
This is a tes
t
这表明插入光标不是放在行的末尾,而是放在行中最后一个字符的左边(假设框像在Notepad ++中那样是一行。框在字母的上方,表示将该字符插入组成该框左侧的区域中),我知道这是因为,如果它确实在末尾(“ end”表示最后一个字符的右侧),则最后一个字符将不会移动像上面看到的一样。
我不要这种行为。 每次我按Enter键只是为了确保不必重新输入我的文字,这对我来说是一个很大的痛苦。 这杀死了我的生产力。
我该如何解决? 这是我可以在.exrc
进行调整的设置吗?
在行尾进入插入模式的普通模式命令为A
更一般而言, i
在当前字符之前进入插入模式,因此您得到的结果与您所做的完全一致: $
将光标放在最后一个字符上,而i
在最后一个字符之前进入插入模式。 那就是您要Vim要做的,这就是它的作用。
如果你想插入当前字符后模式进入,正确的命令是a
,所以你应该做的,而不是什么$i
(你想要什么,无论你是在vi或者vim不能这样做)是$a
针对有一个很酷的捷径: A
。
我猜您想使用o
“打开”新行。 但是我提供了一些通过vi插入文本的方法
应当注意,vi / vim的光标设置在字符顶部,而不是像大多数编辑器一样位于字符之间。
i
在光标之前插入文本 a
光标之后追加文本 I
在该行的第一个非空白之前插入文本 A
文本追加到行的末尾 o
在当前行下方开始新行并开始插入模式 O
在当前行上方开始新行并开始插入模式 S
/ cc
删除当前行并开始插入。 c{motion}
删除{motion}
并开始插入模式。 读为零钱 C
从当前位置删除到行尾并开始插入模式 s
删除光标下的字符并启动插入模式 r
替换一个字符 R
开始替换模式。 将其视为覆盖 对于任何这些命令类型的帮助:h {command}
所以对A
帮助为:h A
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.