Vim 替换 Vi

Fun*_*y81 32 linux vim vi

伙计们,有谁知道如何在每次执行 vi 时将 linux 控制台编辑器从 vi 更改为 vim?我正在使用 Ubuntu 和 Fedora Core

jti*_*man 37

首先,确保您安装了正确的 Vim 软件包。许多系统的默认设置是安装一个在功能上更接近 Vi 的最小 Vim 包。

在基于 Red Hat 的系统(RHEL、CentOS、Fedora)上,您需要 vim 增强包,例如来自我安装的 CentOS 系统:

vim-common-7.0.109-4.el5_2.4z
vim-enhanced-7.0.109-4.el5_2.4z
vim-minimal-7.0.109-4.el5_2.4z
Run Code Online (Sandbox Code Playgroud)

'common' 包含所有 Vim 包使用的公共库。'minimal' 是默认安装的普通 vi 编辑器可执行文件。

在基于 Debian 的系统(如 Ubuntu)上,您需要“vim”。例如:

ii  vim                  2:7.2.079-1ubuntu5  Vi IMproved - enhanced vi editor
ii  vim-common           2:7.2.079-1ubuntu5  Vi IMproved - Common files
ii  vim-runtime          2:7.2.079-1ubuntu5  Vi IMproved - Runtime files
ii  vim-tiny             2:7.2.079-1ubuntu5  Vi IMproved - enhanced vi editor - compact version
Run Code Online (Sandbox Code Playgroud)

这些应该默认安装。在 Debian/Ubuntu 上,您可以为所有用户更新默认系统编辑器:

sudo update-alternatives --config vi
Run Code Online (Sandbox Code Playgroud)

从选择菜单中选择您想要的版本。不过,vim 包的安装后脚本应该已经更新了。使用--config editor更改系统上的所有用户的默认编辑器(Ubuntu 9.04的初始默认为纳米,例如)。

最后,在任何分发的每个用户的基础上,在用户配置文件中设置一个别名。例如,如果 shell 是 bash,请编辑 ~username/.bashrc:

alias vi="vim"
Run Code Online (Sandbox Code Playgroud)

此外,您可以检查系统 vimrc(通常为 /etc/vimrc)以查看是否打开了兼容模式。

set cp
set compatibility
Run Code Online (Sandbox Code Playgroud)

将告诉 Vim 表现得更像老式 Vi,无论您如何使用上述 Vim。更改为 'nocp' 或 'nocompatibility' 以使 Vim 更有用。

  • 在最新版本的 ubuntu 上,默认情况下只安装 vim-tiny。安装 vim 以获得完整版本。 (2认同)

Al.*_*Al. 29

在您的 .bashrc 中:

alias vi=vim
Run Code Online (Sandbox Code Playgroud)

  • 这不会影响任何不使用 bash 的内容,例如,当您在 less(1) 内按“v”时,它仍将运行“真正的”vi。 (2认同)
  • 当您点击“v”而不是默认的“vi”命令时,环境变量“EDITOR”和“VISUAL”将优先。所以,在你的 `.bashrc` 中导出 `EDITOR` 或 `VISUAL`,并使用 `vim` 作为它的值;例如,“.bashrc”中的“export EDITOR=vim”和“export VISUAL=vim” (2认同)

小智 11

如果它是 Debian 或 Ubuntu 系统,并且您想在整个系统范围内进行此更改,则应该使用update-alternatives(使用--config editor选项指定,并且您应该是金色的)


小智 10

如果您只需要对您的 id 进行更改,并且在终端会话中:按照 AI 的建议将 vi 别名为 vim。

如果您想在您的机器上进行系统范围的更改,请在/usr/local/bin 中软链接到 vim :

sudo ln -s `which vim` /usr/local/bin/vi
Run Code Online (Sandbox Code Playgroud)

注意:程序可以通过运行command vi\vi而不仅仅是 vi来忽略 vi 上的任何别名。