Vim to replace Vi
Solution 1
First, make sure you have the proper Vim packages installed. The default on many systems is to install a minimal Vim package that is closer to Vi in functionality.
On Red Hat based systems (RHEL, CentOS, Fedora), you need the vim-enhanced package, for example from a CentOS system I have installed:
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
'common' contains common libraries used by all the Vim packages. 'minimal' is the plain vi editor executables as installed by default.
On Debian based systems (like Ubuntu), you need 'vim'. For example:
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
These should be installed by default. On Debian/Ubuntu, you can update the default system editor for all users:
sudo update-alternatives --config vi
Select the version you want from the selection menu. Post installation scripts for the vim package should have already updated this, though. Use --config editor
to change the default editor for all users on the system (Ubuntu 9.04 original default is nano, for example).
Finally, on a per user basis for any distribution, set up an alias in the user profile. For example if the shell is bash, edit ~username/.bashrc:
alias vi="vim"
Also, you may check the system vimrc (/etc/vimrc, usually) to see if compatibility mode is turned on.
set cp
set compatibility
Will tell Vim to behave more like old-school Vi, no matter how you've handled using Vim per above. Change to 'nocp' or 'nocompatibility' to make Vim more useful.
Solution 2
In your .bashrc:
alias vi=vim
Solution 3
If it is a Debian or Ubuntu system, and you want to make this change system wide, you should use update-alternatives
(specify with the --config editor
options, and you should be golden)
Solution 4
If you need the changes only for your id, and within a terminal session: alias vi to vim as suggested by AI.
If you want a system-wide change on your machine, soft-link to vim in /usr/local/bin:
sudo ln -s `which vim` /usr/local/bin/vi
Note: Programs can ignore any aliases on vi by running command vi
or \vi
instead of just vi.
Solution 5
Some dists use vim:s old school mode where it behaves like vi.
check if your .vimrc contains
set nocompatible
I have been fooled by this a couple of times....
Related videos on Youtube
Funky81
Updated on September 17, 2022Comments
-
Funky81 over 1 year
Guys, anyone know how to change linux console editor from vi into vim everytime we execute vi? I'm using Ubuntu and Fedora Core
-
Matu over 14 yearsJust curious: What Linux dist. is that? I can't recall ever seeing a old school Vi as default.
-
Admin over 14 yearsIn fact, it is extremely unlikely to be vi, as that wouldn't be FOSS code.
-
Seh Hui Leong over 14 yearsFrom memory is that some distro (I think it was RHEL), they configured the command
vi
to classic mode in VIM. -
Tadeusz A. Kadłubowski over 14 yearsWhy execute vi if you prefer vim? export EDITOR=vim?
-
Speederer about 12 yearsArch also have a "vi" clone by default, instead of vim.
-
-
DrColossos over 14 yearsThis will not affect anything that is not using bash, e.g. when you press "v" inside of less(1) it will still run the "real" vi.
-
Hamish Downer over 14 yearsOn recent versions of ubuntu, only vim-tiny is installed by default. Install vim to get the full version.
-
OWSam almost 13 yearsThe environment variables
EDITOR
andVISUAL
will take precedence when you hitv
over the defaultvi
command. So, in your.bashrc
exportEDITOR
orVISUAL
withvim
as its value; e.g.,export EDITOR=vim
andexport VISUAL=vim
in your.bashrc