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

Dyl*_*ere 7 vi vim eol

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

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

如果我输入该行

This is a test

和命中esc,$,i,和<enter>,我会得到如下:

This is a tes
t
Run Code Online (Sandbox Code Playgroud)

这表明插入光标没有放在行的末尾,而是放在行中最后一个字符的左边(想象一下该行是一个像Notepad ++中的行.该框位于字母的顶部,表示这个角色将被插入到组成盒子左侧的区域中,我知道这一点,因为如果它真的在最后("结束"意味着最后一个角色的右边),那么最后一个角色就不会被移动到你自己的路线,比如你上面看到的.

我不想要这种行为.每次按下回车键输入一个额外字符对我来说太难了,以确保我不必重新输入我的单词.这会影响我的生产力.

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

rom*_*inl 26

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

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

如果你想在当前字符之后进入插入模式,那么正确的命令是a你应该做的而不是$i(它不能做你想要的,无论你是在vi还是vim)$a都有一个很酷的快捷方式:A.

  • @jchook,**1.** 如果您还没有这样做,请根据需要多次执行 `$ vimtutor` 以获得正确的基础知识。**2.** 按照 vimtutor 末尾的指示,升级到用户手册:`:help user-manual`。它将引导您逐步了解“每个”功能,从基础到高级。不过,这不是一本小说:按照自己的节奏,跳过章节,稍后再回来看,最重要的是,一路上进行实验。**3.** 密切关注反模式和低效行为,寻找改进并进行实践。林斯。重复。 (2认同)

Pet*_*ker 9

我猜你想用o"开"新线.但是我提供了一些通过vi插入文本的方法

插入命令

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

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

有关这些命令类型的帮助,:h {command}这样有利于上A:h A