vi
编辑器中的插入模式下使用箭头键时,在编辑器中插入了以下字符:用于↓,我得到B,
对于↑,我得到A ,
对于←我得到D,
对于→我得到C。
请帮助我解决此问题。
#1 楼
如果您的主目录中还没有.vimrc
文件,请使用以下文件创建一个文件:vim ~/.vimrc
将此行添加到文件顶部:
set nocompatible
保存文件,这应该可以为您解决问题。 :)
评论
我必须为vi创建一个.exrc文件,但是设置nocompatible效果很好。
–tgun926
15年1月30日在23:38
如果使用vi而不是vim,则有一个技巧,您必须在〜/ .exrc文件中进行相同的配置。
–tzi
15年7月22日在14:47
工作了。但是为什么需要此修复程序?为什么默认情况下它不处理箭头?
– Mohit
16年1月23日在12:41
默认情况下,vi / vim被编程为将箭头键替换为键h,j,k,l。这样做是为了您不必从键盘的主键区域移开。
–高拉夫·曼彻达(Gaurav Manchanda)
16年1月24日在19:34
下一个问题是退格键,解决方案:askubuntu.com/questions/296385/…
– daVe
16-09-27在13:15
#2 楼
安装vim
软件包将解决此问题:sudo apt-get install vim
YouTube或整个网络上有很多很好的vim / vi教程。
对于您的问题,请参阅文章8 Essential Vim编辑器导航基础知识。
然后继续照常打开文件:
vi desired-file
评论
为我工作-尽管不确定为什么这与我之前启动的vim不同
– Amos Folarin
17年1月9日在13:49
这应该是被接受的答案(但似乎没人在接受)。这是将vim完全“现代化”到计算机控制台的最简单/最干净的方法(而不是tty / ANSI时代的终端。
– Lockszmith
17年8月1日,1:15
是的,我同意您的观点Lockzsmith,这应该是公认的答案
– niccolo m。
17年9月28日在23:12
这对我有用。令我惊讶的是raspian附带了vi / vim的版本...尽管所有有关它的教程都告诉您使用nano,但很难说vim确实比它好。我使用vim而不是nano的唯一原因可能是因为vim始终存在于每台机器上,nano似乎有50/50的机会。
–ArtOfWarfare
18年1月20日在17:15
BLEEPIN的计算机!
–克里斯
19年1月24日在15:54
#3 楼
使用vi
,单击i时,将激活用于插入文本的命令。此命令允许您在文件中插入文本。
然后,在↑上单击:
,将在其上插入“ A”,在↓上单击,将插入“ B”,
...
直到停用此命令。
要在
vi
中停用命令:只需单击Esc ,然后您将恢复正常使用箭头键的功能:
↑向上,
↓向下,
。 ..
FYI,以下是一些
vi
命令:从此来源。:x
返回退出vi,将修改后的文件写到原始调用中命名的文件:wq
返回退出vi,将修改后的文件写到原始调用中命名的文件中:q
返回退出(或退出)vi :q!
即使没有为此vi保存最新更改,也返回退出vi ↓向下移动光标一行↓向上移动光标←向上移动光标一个字符→光标向右移动一个字符
u
撤消您刚刚执行的操作;一个简单的切换.
重做所有操作i
在光标之前插入文本,直到Esc击中I
在当前行的开头插入文本,直到Esc击中a
在光标后附加文本,直到Esc击中A
附加文本到当前行的末尾,直到Esc命中o
打开并在当前行下方的新行中放置文本,直到Esc命中O
打开并在当前行上方的新行中放置文本,直到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
Return或1G
将光标移至文件的第一行:n
Return或nG
将光标移至第n行:$
Return或G
光标将移至文件的最后一行/string
向前搜索文本中出现字符串?string
向后搜索文本中出现字符串n
移至下一个出现搜索字符串N
移至下一个出现相反方向的搜索字符串评论
向下箭头键插入“ B”不是预期的行为。无论插入模式如何,箭头键都应使光标上下左右移动。
–James Wong-恢复莫妮卡
2015年9月6日在7:49
@JamesWong实际上,这是预期的行为,因为这是Vi最初编程的方式。 VIM(非正式地)是Vi的继承者,默认情况下处于Vi兼容模式,其中包括箭头键的这种行为。因此,此处的“应该”一词仅是主观的,因为VIM实际上正在执行它有目的地编程要做的事情。
–villapx
16年1月1日在15:30
@villapx-不,这不是预期的行为。预期的行为由典型用户的期望定义。使用vi / vim的典型人正在使用它,因为这是他们需要快速配置的服务器上安装的内容,并且他们不会做太多事情来烦恼安装其他内容。给出选项时,很少有人选择使用vim,而实际上很少人知道所有这些功能或怪癖。典型的用户期望箭头移动光标-这是期望的行为。其他所有都是意外行为,应该将其记录为一个关于意外行为的错误。
–ArtOfWarfare
18年1月20日在17:13
@ArtOfWarfare您可以随意选择“期望”。我将其定义为代码作者所期望的,因为它们在VIM手册中已经很清楚了……应该如何表现... from:helpcompatible:“默认情况下,此选项为开,Vi默认为该默认选项是为那些想要像Vi一样使用Vim且甚至不希望'兼容'选项的人选择的。”
–villapx
18年1月22日在20:43
@ArtOfWarfare基本上,VIM作者在编写此部分代码时明确考虑了特定的受众,并且仅仅因为该受众与您的受众不同,并不意味着它是一个错误。如果愿意,可以将其归档为错误,但要准备好由VIM基本原理主义者(以及实际上尊重RTFM爱好者的“手册”的任何人)指责。
–villapx
18年1月22日在20:45
#4 楼
要在编辑模式下禁用按箭头打印字母,您可以执行以下操作:创建文件(如果不存在),然后添加行set nocompatible
并保存。 评论
我把它放在.vimrc中。为什么将它放在.exrc中?
–pauljohn32
17年3月19日在2:54
Vim都提供源代码-有关装载顺序,请参见:version的输出(另请:h .exrc或:h init)。我想有人可能希望在vi和vim中都应用设置,或者可能是习惯的纯粹力量。
–威廉·罗伯逊
17年5月27日在8:46
这是答案
–kev
20年4月14日在17:35
#5 楼
vi编辑器中有三种模式,分别是:命令模式
输入模式
默认模式。
当您打开文件时,您处于默认模式。现在,如果要转到文本中的特定位置,只需使用箭头键或使用h,j,k,l键即可。请注意,仅当您未按i(或其他任何输入模式输入命令,如a,A,I)时,此方法才有效。
之所以'B'可能是因为输入中的箭头键模式不能用作箭头键,因此只要按Esc即可随时进入默认模式。何时切换到输入模式,请按i或a,然后只需按i键并使用箭头键或h,j,k,l进行导航。
#6 楼
我遇到了完全相同的问题,但不仅在我的本地计算机上,而且在通过Citrix接收器在Win7 VM中的Sles计算机上通过腻子进行的连接上,我都遇到了同样的问题。重新安装Ubuntu后,本地主机和远程主机均显示完全相同的问题。在发现
$ localectl list-keymaps
Couldn't find any console keymaps.
后,由于出现了这种奇怪的VI行为,我安装了可解决该问题的软件包console-data!
sudo apt-get install console-data
#7 楼
这是一个解释:Vi是一个已经存在了很长时间的编辑器,其起源可以追溯到Unix系统。这是一个很好的工具,但是已经迭代了,现在有了更好的工具。 Vim是后来写的,就是那个迭代。人们通常将vi称为“最小的vim”,而vim是vi的“改进”版本。您可以这样想:vi是核心,并且vim在其上扩展。
您是如何发现该行为的:
为了发现此问题,请按“ i”进入进入插入模式,然后使用箭头键浏览正确的行和编辑点。这就是导致您意外的char问题的原因。
解决方案1或2
vi someFile
使用vi时,首先移至编辑点,然后进入插入模式。vim someFile
只需从一开始就使用vim。我没有足够的压力来阅读手册(手册页)或使用-h寻求帮助。一旦适应了外壳中的模式,手册页就会成为您最好的朋友。例如:
man vi
或man vim
验证是否已安装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
只有在网上搜索如何解决问题时,才使用vi或vim,但碰巧忘记键入
vim
,您可以采用一种方法来解决此问题。我警告您要注意。您可以使用别名使用对vim的引用来覆盖vi,这样无论您在不经常的将来键入什么内容,vim都不会出现“糟糕!”。时刻。您以后可以随时删除别名。键入
vim .bashrc
。向下移动到仅带有~
的空白行(或移至以alias
开头的任何其他行(因此它们组合在一起)),然后按i键进入-insert-模式。在其单独的行中,输入以下内容:alias vi='vim'
按
Esc
然后键入:wq
现在需要重新加载文件键入source .bashrc
进行这些编辑后打开的任何其他外壳将自动加载.bashrc文件。#8 楼
这也可能是由于TERM
变量引起的。像这样设置它: export TERM=xterm
评论
这为我解决了其他答案没有解决的问题。谢谢!
– greg
18年7月20日在10:33
#9 楼
给出的所有解释都有些奇怪。我有vi但没有安装vim。检查替代品:
/etc/alternatives/vi
→ /usr/bin/vim.tiny
所以
vi
是vim.tiny
,它使用/etc/vim/vimrc.tiny
。在
vimrc.tiny
中,您会找到以下行:set compatible
几乎是此文件中唯一的内容。请注意,在
/etc/vim/vimrc
中它使用的是nocompatible
。因此,要么安装vim或更改
vimrc.tiny
文件,要么创建自己的~/.vimrc
,其中应包含以下行:set nocompatible
评论
我不确定是什么奇怪的事。您最终会建议1.安装Vim-askubuntu.com/a/220072/158442,2.创建〜/ .vimrc并设置不兼容:askubuntu.com/a/353944/158442或3.编辑系统文件。仅编辑/etc/vim/vimrc.tiny的建议是新建议,但您在提出与它们相同的建议时却称呼答案很奇怪。
–大师
17年1月11日在2:27
我同意Gunstick。其他答案取决于他们如何使用vi,而没有直接告诉用户如何使箭头键起作用。另一个奇怪的事情是,“设置不兼容”的建议绝不会伴随着对原始设置的作用的具体解释,或者与将其更改为“设置不兼容”相关的危险(github.com/vim/vim/issues/1131) )
–pauljohn32
20年5月13日,1:17
#10 楼
在某些系统上,nocompatible
选项不可用,或者如果插件中断了箭头键功能,它可能无法解决问题。这是一种解决方法... 编辑
.exrc
文件以包含以下几行:map! ^[OA ^[ka
map! ^[OB ^[ja
map! ^[OC ^[la
map! ^[OD ^[ha
或者,如果问题仅在正常情况下存在模式,您可以更改为
nmap
并跳过以下a
,如下所示:nmap! ^[OA ^[k
等等。
这是所需的组合键生成它们(仅显示第一个):
map! <CTRL-V><Up-Arrow> <CTRL-V><ESC>ka
这会退出编辑模式,向所需方向移动,然后重新进入编辑模式。这是克服Vi读取转义序列作为原义
来源:https://hea-www.harvard.edu/~ fine / Tech / vi.html
#11 楼
对于VI,创建或编辑文件“〜/ .exrc”或VIM创建或编辑文件“〜/ .vimrc”或在行中添加。set nocompatible
在撰写本文时,有人对第二个投票最多的项目表示赞赏,他们想知道为什么不接受他们的输入。原因是有些主机不允许安装其他编辑器。即使那样,有时vim也会产生相同的效果,因此前两个条目中有很多可用信息。但我无法对此发表评论,希望这能弄清为什么100%的情况下100%都不是100%正确的原因。
评论
在这里尝试了其他一些答案,但对我来说(Ubuntu 19.10),编辑〜/ .exrc文件并添加nocompatible效果很好。
– bluppfisk
20年4月9日在9:54
#12 楼
传统的vi编辑器无法识别箭头键(... afair)。有两种解决方案:使用vim代替vi
使用h,j,k和l进行导航(在传统的vi btw上进行编辑时无法导航。 )
评论
这不是真的查找terminfo / termcap和基于libcurses的应用程序。自1990年以来,我在Xenix,SCO Unix,AIX,旧的hpux等中使用vi,而80年代的pure-vi已经支持terminfo / termcap映射。
–卢西亚诺
15年12月14日在11:42
@ james-wong那么我应该改一下我的答案。要“在Ubuntu下纯vi不会...”
– MadMike
2015年12月14日14:52
...这是对@luciano的评论
– MadMike
15年12月14日在14:53
#13 楼
在这台机器上,我必须make sure
,而set nocompatible
是
last entry in ~/.vimrc
。或至少最后一个条目,尤其是之后没有再加载任何插件。HTH
#14 楼
由于某些原因,Ubuntu省略了在新的18.04 VPS上为root用户初始化envvar HOME的操作。在这种情况下,vi无法找到.vimrc文件。对于普通用户(在/ home /中),不会发生此问题。要检查变量:
echo $HOME
如果导致空行,未设置变量。问题在
export HOME=/root
之后消失了。我将命令移至/root/.bashrc文件(我不知道通常在何处设置)。 >
#15 楼
这可能是因为Vim没有收到(或错误的)有关您所使用的终端的信息,因此无法正确识别按键。由于Vim试图从
TERM
变量获取此信息,因此可以通过以下方法解决此问题:在启动Vim之前运行 export TERM=linux
。这类似于Jasper Nuyens关于将其设置为
xterm
的回答。 xterm
,xterm-color
和xterm-256color
与图形终端程序有关。 linux
是在虚拟控制台中设置的终端类型,如果您不在图形终端中,或者已经设置xterm
或否则无效,则值得尝试。
评论
我很高兴地读了标题;)我确定有XKCD可以使箭头键打印字母时(对于新手用户而言)有怪异的感觉。这非常可怕;)