CentOS 的最小化安装默认只安装了最小版的VI,可以通过以下命令安装全部功能的Vim:

yum install vim-common vim-enhanced vim-minimal
sudo apt-get install vim

修改环境变量

[root@h01 ~]# vi /etc/profile.d/custom.sh
alias vi=vim

或者

[root@h01 ~]# vi ~/.bashrc
alias vi=vim

修改vim配置文件

修改用户级别的 需要修改 ~/.vimrc。修改全局的,需要修改 /etc/vimrc (可以通过 :version 看到)

set nocompatible
set number
colors desert
syntax on
set ruler
set showcmd
set cursorline
set fileencodings=utf-8,gbk
set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4
set fileformats=unix
set hlsearch
set formatoptions-=cro
set paste
" set list
" comment here

filetype

vi ~/.vim/filetype.vim, 在 vim 中可以通过 :set syntax? 查看当前 syntax 的值

autocmd BufRead,BufNewFile my.cnf set syntax=dosini
autocmd BufRead,BufNewFile build.gradle set syntax=groovy

Mac OS X 下的 plist文件着色

彩色查看 /Library/LaunchDaemons 目录下文件 vim-plist

git clone git://github.com/darfink/vim-plist.git ~/.vim/bundle/vim-plist

colorschema

ll /usr/share/vim/vim74/colors
# 或者在vim中
:colo <tab>

安装vba插件

largeFile, Manual wget http://www.drchip.org/astronaut/vim/vbafiles/LargeFile.vba.gz gunzip LargeFile.vba.gz vi LargeFile.vba :source %



:source %

将换行符从dos格式变为unix格式

参考:1

:update                     Save any changes.
:e ++ff=dos             Edit file again, using dos file format ('fileformats' is ignored).
:setlocal ff=unix     This buffer will use LF-only line endings when written.
:w                     Write buffer using unix (LF-only) line endings.
  • 删除BOM头
:set nobomb
:wq

全局替换

:%s/\t/    /g

tab

# 显示空白字符
:set list

# 替换为空格
:%s/\t/    /g

# 不显示空白字符
:set nolist

命令模式

# 文件
:open pathToFile                # 打开指定的文件
:bn                             # 查看下一个文件
:bp                             # 查看上一个文件
:args                           # 查看当前打开的文件列表
:split pathToFile               # 在分割窗口中打开指定的文件
Ctrl+ww                         # 在分割窗口中循环切换文件
:e ftp://192.168.1.101/xxx.txt  # 打开远程文件(FTP)
:e \\sambahost\share\xxx.txt    # 打开远程文件(Samba)
:set binary noeol               # 重要,vim默认会追加一个0xOA(换行符),可以通过该设置不追加,否则会影响md5sum等计算。


# 光标移动
h                               # 左移1个字符(可前接数字)
l                               # 右移1个字符(可前接数字)
k                               # 上移1行(可前接数字)
j                               # 下移1行(可前接数字)
gg                              # 跳到第一行(可前接数字)
G                               # 跳到最后一行

Ctrl+F / PageDown               # 下一页
Ctrl+B / PageUp                 # 上一页

^                               # 移至行首第一个非空白字符
0                               # 移至行首
<Home>                          # 移至行首
$                               # 移至行尾(可前接数字)
<End>                           # 移至行尾

w                               # 向后移动1个单词,光标停在单词首部(可前接数字)
b                               # 向后移动1个单词,光标停在单词首部(可前接数字)
e                               # 向后移动1个单词,光标停在单词尾部(可前接数字)
ge                              # 向后移动1个单词,光标停在单词尾部(可前接数字)

# 缩进
<<                              # 当前行向左缩进
>>                              # 当前行向右缩进

dd                              # 删除当前行
dw                              # 删除一个词

yy                              # 复制当前行



查看当前set的值
:set expandtab?                 # 打印该选项的使用方法和值
:set autoindent!                # 该选项值取反(针对bool型)
:set option&                    # 重置该选项值为默认值
:verbose set textwidth?         # 查看值


# 进入插入模式
i                               # 在当前光标位置前插入
I                               # 在当前行的行首插入
a                               # 在当前光标位置后插入
A                               # 在当前行的行尾插入
o                               # 在当前行之后插入一行
O                               # 在当前行之前插入一行

# 进入 visual 模式
v

插入模式

# 缩进
C-d                             # 当前行向左缩进
C-t                             # 当前行向右缩进

visual 模式

<                               # 当前选区向左缩进
>                               # 当前选区向右缩进