点击箭头键可在vi编辑器中添加字符

当我在vi编辑器中尝试在插入模式下使用箭头键时,编辑器中插入了以下字符:

  • 我得到B,
  • 我得到A,
  • 我得到D,
  • 因为我得到C.

请帮我解决这个问题。

如果您的主目录中还没有.vimrc文件,请使用以下命令创建一个:

 vim ~/.vimrc 

将此行添加到文件的顶部:

 set nocompatible 

保存文件,这应该为您解决问题。 🙂

安装vim – >这将解决问题。

 sudo apt-get install vim 

youtube或网络上有很多很好的vim / vi教程。 有关您的问题, 请参阅此处

然后像往常一样继续打开文件

 vi desired-file 

使用vi ,单击i时激活“ 插入文本”命令。
此命令允许您在文件中插入文本。
对,点击时:

  • 它会插入一个“A”,
  • 上会插入一个“B”,

您必须停用此命令。
要在vi停用命令:只需单击Esc即可
然后你将恢复正常使用箭头键:

  • 上去,
  • 下来,

仅供参考,这里有一些vi命令:
从这个来源 。

:x 返回 退出vi ,将修改后的文件写入原始调用中命名的文件
:wq 返回 退出vi ,将修改后的文件写入原始调用中命名的文件
:q 返回 退出(或退出)vi
:q!
即使此vi调用尚未保存最新更改,也请返回 退出vi

光标向下移动一行
光标向上移动一行
移动光标左侧一个字符
光标向右移动一个字符

u 撤消你刚刚做的事; 一个简单的切换
.
无论你做什么都重做

i在光标前插入文本,直到Esc命中
I在当前行的开头插入文本,直到Esc命中
在光标后附加文本,直到Esc命中
文本追加到当前行的末尾,直到Esc命中
o 打开并将文本放在当前行下方的新行中,直到Esc命中
打开并将文本放在当前行上方的新行中,直到Esc命中

r 替换光标下的单个字符(不需要Esc
cw用新文本更改当前单词,从光标下的字符开始,直到Esc命中
x 删除光标下的单个字符
Nx从光标下的字符开始删除 N个字符
dw 删除以光标下的字符开头的单个单词
C 改变 (替换)当前行中的字符,直到Esc命中
D从当前光标位置开始删除该行的其余部分

dd 删除整个当前行
Ndd 删除 N行,从当前行开始; 例如,5dd删除5行
yy 复制 (猛拉,剪切)当前行进入缓冲区
Nyy 复制 (猛拉,剪切)接下来的N行,包括当前行,进入缓冲区
p将缓冲区中的行粘贴到当前行之后的文本中

0 (零) 光标移动到当前行的开头(带光标的那个)
$ 光标移动到当前行的末尾
w 光标移动到下一个单词的开头
b 光标移回前一个单词的开头
:0 返回1G 光标移动到文件中的第一行
:n 返回nG 光标移动到第n行
:$ 返回G 光标移动到文件的最后一行

/string向前搜索文本中字符串的出现
?string向后搜索 ?string 查找文本中字符串的出现
n 移动到下一个搜索字符串
N向相反方向移动到下一个搜索字符串

要在编辑模式下按箭头禁用打印字母,您可以执行以下操作

 vi $HOME/.exrc 

(如果文件不存在则创建文件),然后添加与其不set nocompatibleset nocompatible并保存。

vi编辑器有三种模式:

  • 命令模式
  • 输入模式
  • 默认模式。

当您打开文件时,您处于默认模式。 现在,如果您想要转到文本中的特定位置,只需使用箭头键或使用hjkl键。 请注意,只有当您没有按下i (或任何其他输入模式输入命令,如aAI )时,这才会起作用。

“B”的原因可能是因为输入模式中的箭头键不起箭头键的作用,因此只需按Esc键即可进入默认模式。 何时切换到输入模式按ia ,然后导航只需按i键并使用箭头键或hjkl

我有完全相同的问题,但不仅在我的本地机器上,而且在通过Citrix接收器在Win7 VM中的sles机器上通过putty连接。 重新安装Ubuntu后,本地主机和远程主机都显示完全相同的问题。

在发现之后

 $ localectl list-keymaps Couldn't find any console keymaps. 

导致这个奇怪的VI行为我安装了包控制台数据,解决了这个问题!

 sudo apt-get install console-data 

给出的所有解释都有点奇怪。 我有vi但没有安装vim。

检查备选方案: /etc/alternatives/vi/etc/alternatives/vi /usr/bin/vim.tiny /etc/alternatives/vi /usr/bin/vim.tiny

所以vivim.tiny ,它使用/etc/vim/vimrc.tiny

vimrc.tiny您可以找到以下行:

 set compatible 

这几乎是这个文件中唯一的东西。 请注意,在/etc/vim/vimrc它使用的是nocompatible

所以要么安装vim,要么更改vimrc.tiny文件,或创建自己的~/.vimrc ,其中应该包含以下行:

 set nocompatible 

注意:

其他post中有很好的信息,但没有post试图解释为什么会发生这种行为。 很多人将来必然会遇到这种情况。 此外,您是否可以将此问题标记为已解决,因为之前的任何post都可能对您有所帮助?


这是一个解释

Vi是一个很长一段时间的编辑器,其根源是Unix系统。 这是一个很好的工具,但它已被迭代,现在有更好的。 Vim后来写的是迭代。 人们通常将vi称为“vim-minimal”,vim是vi的“改进”版本。 你可以这样想:vi是核心,vim扩展了它。

可能你是如何发现这种行为的

为了让您发现此问题,您按“ i ”进入插入模式,然后使用箭头键导航正确的行和编辑点。 这是导致您意外的char问题的原因。

解决方案1或2

1) vi someFile使用vi时 ,首先移动到编辑点,然后进入插入模式。

2) vim someFile从一开始就简单地使用vim

我不能强调阅读手册(手册页)或使用-h寻求帮助。 一旦你调整到shell中的模式,手册页就会成为你最好的朋友。 例如: man viman vim


validation是否已安装Vim

打开控制台窗口并执行:

dpkg --list | grep vim

如果你得到类似的东西,那么你可以开始使用vim。

 ~ $ dpkg --list | grep vim ii vim 2:7.4.052-1ubuntu3 amd64 Vi IMproved - enhanced vi editor ii vim-common 2:7.4.052-1ubuntu3 amd64 Vi IMproved - Common files ii vim-runtime 2:7.4.052-1ubuntu3 all Vi IMproved - Runtime files ii vim-tiny 2:7.4.052-1ubuntu3 amd64 Vi IMproved - enhanced vi editor - compact version 

如果命令提示符返回什么都没有,则表示未安装vim。 使用以下示例更新您的存储库,然后安装vim。

 sudo apt-get update sudo apt-get install vim 

如果你只是在互联网上搜索如何修复某些东西并且碰巧忘记键入vim时使用vi或vim,那么有一种方法可以为将来修复它。 我提醒你注意。 您可以使用别名来覆盖vi,并引用vim,这样无论您在不常见的未来输入什么内容,都可以获得vim而不用“oops!” 时刻。 您以后可以随时删除别名。

输入vim .bashrc 。 向下移动到只有~的空行(或以alias开头的任何其他行(因此它们被组合在一起),然后按i键进入-insert-模式。在它自己的单独行上,输入以下内容:

 alias vi='vim' 

Esc ,然后键入:wq 。 现在您需要重新加载该文件。 键入source .bashrc在进行这些编辑后打开的任何其他shell将自动加载.bashrc文件。

传统的vi编辑器无法识别箭头键(… afair)。 有两种解决方案:

  1. 使用vim而不是vi
  2. 使用h,j,k和l进行导航(在传统的vi btw上进行编辑时无法导航。)

这也可能是由于TERM变量; 像这样设置它:

  export TERM=xterm 

在某些系统上, nocompatible选项不可用,或者如果插件中断箭头键function,则可能无法解决问题。 这是一个解决方法……

编辑.exrc文件以包含以下行:

 map! ^[OA ^[ka map! ^[OB ^[ja map! ^[OC ^[la map! ^[OD ^[ha 

或者,如果问题仅存在于正常模式下,则可以更改为nmap并跳过以下a ,如下所示:

 nmap! ^[OA ^[k 

等等。

这是生成它们所需的关键组合(仅显示第一个):

 map!  ka 

这将退出编辑模式,沿所需方向移动,并重新进入编辑模式。 这需要克服Vi读取转义序列作为文字 等的序列。

资料来源: https : //hea-www.harvard.edu/~fine/Tech/vi.html