我经常发现自己不得不在简约的终端上使用普通的旧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.
我猜你想用o"开"新线.但是我提供了一些通过vi插入文本的方法
应该注意的是,vi/vim的光标设置在字符之上而不是像大多数编辑器那样在字符之间.
i 在光标前插入文本a 在光标后附加文本I 在行中的第一个非空白之前插入文本A 将文本附加到行尾o 在当前的一行下面开一个新行并开始插入模式O 在当前的一行上方开始一个新行并开始插入模式S/ cc删除当前行并开始插入.c{motion}删除{motion}并启动插入模式.读作变化C 从当前位置删除到行尾并开始插入模式s 删除光标下的字符并开始插入模式r 替换一个字符R开始替换模式.把它想象成覆盖有关这些命令类型的帮助,:h {command}这样有利于上A会:h A