Vim是一个类似于vi的著名的功能强大、高度可定制的全屏幕文本编辑器。

用法: vim [参数] [文件 ..] 编辑指定的文件
或: vim [参数] - 从标准输入(stdin)读取文本
或: vim [参数] -t tag 编辑 tag 定义处的文件
或: vim [参数] -q [errorfile] 编辑第一个出错处的文件

其工作模式有:

  1. 编辑模式:命令模式
  2. 输入模式
  3. 末行模式

模式间转换:

编辑模式>输入模式可通过以下字母转换:

i: insert,

a:append ,

o:new line,切换到新行输入

I: 行首

A:行尾

O(大写):上方新建行

输入模式>编辑模式:

ESC键

编辑模式>末行模式:

:键

末行模式>编辑模式:

ESC键

打开vim:

# vim

# vim /PATH/TO/SOMEFILE

+#:#为行号;

+/PATTERN

关闭vim:

:q退出

:q!不保存退出

:wq保存后退出

:x 保存退出

ZZ:保存退出

光标跳转(编辑模式下):

字符间跳转:

h:当前光标的左一个字符

l:当前光标的右一个字符

j:当前光标的下一个字符

k:当前光标的上一个字符

单词间跳转:

w:后单词的词首

e:当前或后一个单词的词尾;

b:当前或前一单词的词首;

行内跳转:

^: 跳转至行首的第一个非空白字符;

0:跳转至行首;

$: 跳转至行尾;

行间移动:

#G: #表示第几行

1G, gg:首行

G:最后一行

句间移动:

):句首

(:句尾

段落间移动:

}:段首

{:段尾

编辑命令:

字符编辑:

x: 删除光标所在处的字符

#x:删除当前光标向后(#)个字符

xp: 当前字符与其后一个字符交换

r: 替换光标所在处的字符;

删除命令:

d:

d^:删除当前光标处到句首的内容。

d$:删除当前光标处到句尾的内容。

d0:与d^相同

dw, de, db

dd:删除整行

注意:删除的内容会被vim编辑器保存至缓冲区当中;

粘贴:p (paste, put)

如果此复制或删除的内容不是一个完整行

p:粘贴至当前光标所在处后面;

P:粘贴至当前光标所在处前面;

如果复制的内容是完整行(可不止一行)

p: 粘贴至当前光标所在行下方;

P:行上方;

复制命令:y, yank

y

y$, y^, y0:用法基本与删除相同

ye, yw, yb

yy: 复制行

改变命令:c, change

c$, c^, c0

cb, ce, cw

cc:

撤消此前的编辑操作:

u: undo:撤消此前编辑操作;

#u

Ctrl+r:恢复此前的撤消操作

.: 重复前一个编辑操作

翻屏操作:

Ctrl+f: 向后一屏;

Ctrl+b:向前一屏;

Ctrl+d: 向后半屏

Ctrl+u: 向前半屏

vim内建教程:

vimtutor

vim的末行模式:

(1) 地址,定界

:start_pos,end_pos

#:第#行;

#,#

#,+#

.: 当前行

$: 最后一行

%: 全文,相当于1,$

/pat1/:第一次被此模式所匹配到的行;

#,/pat1/

/pat1/,/pat2/

后可跟编辑命令:

d, y

w, r

(2) 查找

/PATTERN:向尾部进行

?PATTERN:向首部进行

n: 与命令同方向

N:与命令反方向

(3) 查找替换

s: 在末行模式下,在地址定界的范围内完成查找替换操作;

s/要查找的内容/替换为的内容/修饰符

要查找的内容:可使用模式

替换为的内容:不能使用模式,但可以使用后向引用符号,以引用前面模式中的分组括号所匹配到的内容;

\1, \2, ...

&:引用"要找的内容"匹配到的整个内容;

修饰符:

i: 忽略大小写

g: 全局替换

/:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,要使用\对其转义,使用格式:\/

分隔符可替换为其它字符:例如@,#等;

多文件模式:

vim FILE1 FILE2 ...

:next

:first

:prev

:last

:wqall

:q!all

多文件窗口分割:

vim -o|-O FILE1 FILE2 ...

Ctrl+w, ARROW

单文件窗口分割:

Ctrl+w, s: split, 水平分割

Ctrl+w, v: vertical, 垂直分割

定制vim的某些工作特性:

(1) 行号

显示:set nu

禁用:set nonu

(2) 括号匹配

显示:set sm

禁用:set nosm

(3) 自动缩进:

set ai

set noai

(4) 高亮搜索

set hlsearch

set nohlsearch

(5) 语法着色

syntax on

syntax off

(6) 忽略字符大小写

set ic

set noic

:help 获取帮助

:help SUBJECT

特性设定的永久生效方式:

全局配置文件:/etc/vimrc

用户个人的配置文件:~/.vimrc

作业:复制/etc/grub.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub.cfg文件中的行首的空白字符

:%s/^[[:space:]]/g

VIM编辑器的简单应用_第1张图片

复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留

:%s/^[[:space:]]/#/g

替换/tmp/functions文件中的/etc/sysconfig/init为/var/log

:%s#/etc/sysconfig#/var/log#g

删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#

:%s/^[#+[:space:]]//q