Vim to replace Vi

29

11

Guys, anyone know how to change linux console editor from vi into vim everytime we execute vi? I'm using Ubuntu and Fedora Core

Funky81

Posted 2009-08-21T10:06:38.570

Reputation: 503

2Just curious: What Linux dist. is that? I can't recall ever seeing a old school Vi as default. – Brian Rasmussen – 2009-08-21T10:14:25.780

2In fact, it is extremely unlikely to be vi, as that wouldn't be FOSS code. – None – 2009-08-21T10:19:57.857

From memory is that some distro (I think it was RHEL), they configured the command vi to classic mode in VIM. – Seh Hui Leong – 2009-08-21T10:45:46.473

4Why execute vi if you prefer vim? export EDITOR=vim? – Tadeusz A. Kadłubowski – 2009-08-21T11:29:32.657

Arch also have a "vi" clone by default, instead of vim. – WhyNotHugo – 2012-04-04T17:43:29.817

Answers

34

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.

jtimberman

Posted 2009-08-21T10:06:38.570

Reputation: 20 109

2On recent versions of ubuntu, only vim-tiny is installed by default. Install vim to get the full version. – Hamish Downer – 2009-09-09T20:08:32.803

28

In your .bashrc:

alias vi=vim

Al.

Posted 2009-08-21T10:06:38.570

Reputation: 2 396

2This 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. – Kevin Panko – 2009-08-21T15:11:27.353

2The environment variables EDITOR and VISUAL will take precedence when you hit v over the default vi command. So, in your .bashrc export EDITOR or VISUAL with vim as its value; e.g., export EDITOR=vim and export VISUAL=vim in your .bashrc – Nitrodist – 2011-05-31T19:38:38.150

10

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)

mwalling

Posted 2009-08-21T10:06:38.570

Reputation: 478

9

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.

user4358

Posted 2009-08-21T10:06:38.570

Reputation:

3

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....

Johan

Posted 2009-08-21T10:06:38.570

Reputation: 4 827

1

On Debian systems, when you execute the default vim-tiny as 'vi', a different RC file is used - /etc/vim/vimrc.tiny.

To make 'vi' act more like 'vim', edit /etc/vim/vimrc.tiny and change the line:

set compatible

to read:

set nocompatible

user22083

Posted 2009-08-21T10:06:38.570

Reputation:

0

I did it like that in .profile on using :

if [ -f "/usr/bin/vim" ];
 alias vi="vim"
else
 alias vim="vi"
fi

export EDITOR=vim

So, always is there be it properly or as .

user373230

Posted 2009-08-21T10:06:38.570

Reputation:

0

If you use fish, put the below line in ~/.config/fish/config.fish:

alias vi="vim"

Zhang Buzz

Posted 2009-08-21T10:06:38.570

Reputation: 101