VI编辑器:移动到EOL而不是最后一个字符

时间:2014-04-25 14:26:21

标签: vim vi eol

我经常发现自己不得不在简约的终端上使用普通的旧vi,这些终端的行为往往与大型发行版上的vim不同,所以行为会让我感到震惊。

我想知道的不是如何移动到该行中的最后一个字符,而是一个字符。因为键入$不会将插入光标移动到行中的最后一个字符,这很容易证明。我现在正在MSYS上使用vi。

如果我输入

This is a test

然后点击esc$i<enter>,我会得到以下内容:

This is a tes
t

这表示插入光标放在行的末尾,但是行中最后一个字符左边的一个(想象一下该行是Notepad ++中的一行。框是在字母的顶部,表示该字符将被插入组成框的左侧区域,我知道这是因为如果它真的在最后(&#34;结束& #34;意思是最后一个字符的右边)最后一个字符不会被移动到它自己的行,例如你在上面看到的那样。

我不想要这种行为。每次按下回车键输入一个额外的角色,以确保我不必重新输入我的话语,这对我来说太痛苦了。这会影响我的工作效率。

我该如何解决这个问题?这是我可以在.exrc调整的设置吗?

2 个答案:

答案 0 :(得分:25)

在行尾输入插入模式的正常模式命令是A

更一般地说,i在当前字符之前进入插入模式,所以你得到的完全符合你的行为:$将光标放在最后一个字符上并且i在最后一个字符之前进入插入模式。这就是你要求Vim做的事情以及它的作用。

如果你想在当前字符之后输入插入模式,那么正确的命令是a所以你应该做的不是$i(这可以&#39;}做你想要的,无论你是在vi还是vim)都是$a,有一个很酷的捷径:A

答案 1 :(得分:8)

我猜你想用o来打开&#34;打开&#34;一条新线。但是我提供了一些通过vi

插入文本的方法

插入命令

应该注意的是,vi / vim的光标设置在一个字符之上而不是像大多数编辑一样在字符之间。

  • i在光标前插入文字
  • a在光标后附加文字
  • I在第
  • 行中的第一个非空格之前插入文字
  • A将文字附加到行尾
  • o在当前版本下面开始一个新行并开始插入模式
  • O在当前版本之上开始一个新行并开始插入模式
  • S / cc删除当前行并开始插入。
  • c{motion}删除{motion}并开始插入模式。读作变更
  • C从当前位置删除到行尾并开始插入模式
  • s删除光标下的字符并启动插入模式
  • r替换一个字符
  • R启动替换模式。把它想象为覆盖

有关:h {command}这些命令类型的任何帮助,请A的帮助:h A