vim 按e键的问题

【字号: 日期:2023-07-31浏览:25作者:雯心

问题描述

我在用vimtutor学习vim时,到这一节,如下图。发现我按e键不是跳到单词的末尾,而是单词倒数的第二个字母后。这跟它上面说的不一样呢?

ps:在按i 进入插入模式后,再按esc又会往前跳一个字母。不过这个一般人不会这么用,我也只是刚好测试到而已。而上面的按e不能到单词的末尾,这个却令我苦恼,大家是这个情况么? (我测试同事的ubuntu下的vim跟我这个情况一样呢)

环境

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 19 2014 14:10:23) 包含补丁: 1-525 编译者 Arch Linux 巨型版本 带 GTK2 图形界面。

vim 按e键的问题

问题解答

回答1:

e 键的表现应该是对的,出现这个状况的原因估计是你光标的长相问题~正常来说,此时光标会把最后一个单词高亮出来:vim 按e键的问题不止为啥你的光标正常模式下是一条竖线。但是位置应该是正确的,因为这时候按 i 进入编辑模式的话光标是会被插入到最后一个字母前面的。

ps 里的表现也是正常的,如果不习惯的话,可以用 a 代替 i,这样光标会插入到当前字母的后面,按esc会回到原来的位置。

题主好较真……我们知道 vim 有好多种模式,其中 normal 模式下光标位于一个字符上,insert 模式下光标位于一个字符的左边或右边,切换模式的时候肯定会发生光标的移动。从 normal 转到 insert 时,通过i可以移到左边,a移到右边。而 insert 转到 normal 时,基本只有通过 esc,简单起见只能从向左移动和向右移动之间选择一种。一般来说切换到 normal 模式最多的情况是当你输入完一段文字以后,这时光标在行末,显然是向左移动比较合理。Source如果你不喜欢这样,可以在 .vimrc 里加上:

inoremap <silent> <Esc> <C-O>:stopinsert<CR>

Prevent escape from moving the cursor one character to the left

相关文章: