为什么 vi 在 Ubuntu 中的行为与 CentOS 中不同?

问题描述 投票:0回答:10

我每天都越来越习惯使用 vi,但困扰我的一件事是,当我在 Ubuntu 上使用它时,它的行为与我在 CentOS(可能还有其他地方)上使用它时的行为不同。 我实际上更喜欢它在 CentOS 中的工作方式。

以下是 Ubuntu 上真正困扰我的三件事:

  1. 在 CentOS 插入模式下,底部有一个很大的粗体通知,表明我处于 INSERT 模式,但在 Ubuntu 中没有通知,所以我永远无法判断我处于哪种模式。

  2. 在CentOS插入模式下,我可以按向上/向下键,光标会上下移动。 但是当我在 Ubuntu 中时,按向上和向下键会分别在新行中插入字母 A 和 B。

  3. 在CentOS插入模式下,我可以使用退格键,它会删除光标之前的字符,但在Ubuntu中,我只听到嘟嘟声,没有任何反应。 我可以在命令模式下按删除键,但我更愿意按退格键。

这些差异是我必须忍受的还是很容易解决的?

vim ubuntu centos
10个回答
40
投票

在 ubuntu 中,默认的 vim 安装来自包

vim-tiny
,这并不是全部。

您可能想要:

apt-get install vim

apt-get install vim-full

您的其他一些问题听起来像是退格键和其他问题。一旦你获得完整版本的 vim,请尝试将这些添加到你的 .vimrc 中:

set nocompatible

set t_kb=^H
fixdel

(重要提示:^H 是一个文字 ctrl-H 字符,您可以通过在插入模式下执行 Ctrl-V Ctrl-H 来获得该字符)


6
投票

之前提供的答案对我不起作用。

我倾向于让操作系统安装尽可能保持原样,并让配置文件尽可能简单。 为了解决 Ubuntu 12.04 中的这三个问题,我做了以下操作:

在“~/.vimrc”中,插入行 -
设置 nocp
设置bs=2


5
投票

除了安装 vim-full 之外,如果您还没有

~/.vimrc
:

$ cp /usr/share/vim/vimcurrent/vimrc_example.vim ~/.vimrc

这个示例

.vimrc
已经进行了最重要的设置,是定制的良好开端。


1
投票

当你说 VI 时,我假设你指的是 VIM?至少,第二点似乎是 VIM/term 组合的控制台/终端问题。下面的页面建议了一些修复,但我无法解决(我在 Ubuntu 开发盒中使用 vim 而不是 putty)

http://vim.wikia.com/wiki/Fix_broken_arrow_key_navigation_in_insert_mode

第三点可以通过在 .vimrc 中使用以下内容来覆盖

设置退格=缩进,结束,开始


0
投票

(1) 检查两者的

showmode
设置是否不同。

(2) 不知道这个,我认为这与终端的关系比 Vi 本身的关系更大。

(3) 也许尝试使用

:map <BS>  :normal d


0
投票

在 CentOS 中,vi 是另一个程序 vim 的别名,但在最新版本的 Ubuntu 中,vi 仅表示 vi,而不是 vim。您看到的差异是两个不同程序 vi 和 vim 之间的差异。

如果你喜欢 vim,就运行 vim,而不是 vi。这也适用于 Ubuntu


0
投票

在我的 .vimrc 中设置这个对我有用..

set term=builtin_ansi

0
投票

我有 WDMyCLoud,里面有 Debian 7,我使用类似:

cp /usr/share/vim/vimcurrent/debian.vim ~/.vimrc


0
投票

在我的例子中,.vim 文件创建如下:

set nocompatible

fixdel

如果我添加

set t_kb=^H
,退格键就相当于删除键。


0
投票

对我来说,在 Raspberry Pi 5 默认操作系统

上只有以下 2 行代码有效
cat /etc/os-release; 
Debian GNU/Linux 12 (bookworm)
vi --version
VIM - Vi IMproved 9.0 (2022 Jun 28, compiled May 04 2023 10:24:44)
Included patches: 1-1378, 1499
Modified by [email protected]

只有以下2行才有效......

  • 在插入模式下使用向上/向下箭头
  • 向左退格键删除
  • 使用退格键删除时不要停在某些字符处
set nocompatible
set backspace=2

// 这是浪费 1 小时工作时间的一种方式 :/

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.