[转]Vim 编辑器之基础应用

Vi:Visual Interface 可视化界面Vim:Visual Interface Improved Vi的增强版Vi编辑器是一个模式化的编辑器,而且功能异常强大,体积短小精悍。我们通常使用Vim,一则是Vi的增强版Vim的使用格式:Vim [options] [/path/to/somefile] 这里的路径可以省略,等文件内容写完之后再来保存路径,犹如windows中的先打开记事本然后再去保存路径一样。Vim 有三种模式类型:编辑模式;输入模式;末行模式。编辑模式:是Vim的默认模式,又叫做命令模式;但是编辑模式不是输入文件的模式,例如:删除,复制。输入模式:又叫做插入模式;再此模式下输入的内容都会当做文本内容来使用的。末行模式:也就意味着在整个屏幕的最下方,在里面可以键入命令,也就是说在编辑模式下所实现的功能在此均可使用,并且还能执行一些编辑模式下无法实现的特性和功能。比如:查找替换等等;后面我们会一一给出。模式转换: 编辑模式 —> 输入模式:
[table=554]
[tr][td=28]i[/td][td=483]insert, 实现在当前光标所在处字符前面转换为输入模式;[/td][/tr]
[tr][td=28]a[/td][td=483]append, 实现在当前光标所在处字符后面转换为输入模式;[/td][/tr]
[tr][td=28]o[/td][td=483]实现在当前光标所在行的下方新建一个空白行并转换为输入模式;[/td][/tr]
[tr][td=28]I[/td][td=483]实现在当前光标所在行的行首转为输入模式;[/td][/tr]
[tr][td=28]A[/td][td=483]实现在当前光标所在行的行尾转为输入模式;[/td][/tr]
[tr][td=28]O[/td][td=483]实现在当前光标所在行的上方新建一行,并转为输入模式;[/td][/tr]
[/table]
输入模式 –> 编辑模式: 按一下Esc键;编辑模式 –> 末行模式: 输入冒号末行模式 –> 编辑模式: 按一下Esc键,再按一下Esc键;输入模式 –> 末行模式 无法直接实现,只能先转换为编辑模式,然后再转换至末行模式 ;光标跳转:字符间跳转:
[table=326]
[tr][td=94]

h,向左箭头

[/td][td=189]

向左移动

[/td][/tr]
[tr][td=94]
l,向右箭头
[/td][td=189]

向右移动

[/td][/tr]
[tr][td=94]
j,向下箭头
[/td][td=189]

向下移动

[/td][/tr]
[tr][td=94]
k,向上箭头
[/td][td=189]

向上移动

[/td][/tr]
[/table]
字符间多字符跳转:
[table=321]
[tr][td=35]
#h
[/td][td=243]
向左侧跳#个字符
[/td][/tr]
[tr][td=35]
#l
[/td][td=243]
向右侧跳转#个字符
[/td][/tr]
[tr][td=35]
#k
[/td][td=243]
向上面跳#个字符
[/td][/tr]
[tr][td=35]
#j
[/td][td=243]
向下面跳转#个字符
[/td][/tr]
[/table]
单词间跳转:
[table=319]
[tr][td=37]
w
[/td][td=239]
快速跳转至后一个单词的词首
[/td][/tr]
[tr][td=37]
e
[/td][td=239]
快速跳至当前或下一个单词词尾
[/td][/tr]
[tr][td=37]
b
[/td][td=239]
快速跳至当前或前一个单词词首
[/td][/tr]
[/table]
句子间跳转:
[table=320]
[tr][td=39]
)
[/td][td=238]
跳转至下一句
[/td][/tr]
[tr][td=39]
(
[/td][td=238]
跳转至前一句
[/td][/tr]
[/table]
段落间跳转:
[table=326]
[tr][td=41]
}
[/td][td=242]
跳转至下一段
[/td][/tr]
[tr][td=41]
{
[/td][td=242]
跳转至前一段
[/td][/tr]
[/table]
行间跳转:
[table=324]
[tr][td]
1G, gg
[/td][td=233]
跳转至这个文件的第一行;
[/td][/tr]
[tr][td]
G
[/td][td=233]
跳转至这个文件的最后一行;
[/td][/tr]
[tr][td]
#G
[/td][td=233]
跳转至这个文件的第n行;
[/td][/tr]
[/table]
行内跳转:
[table=320]
[tr][td=34]
^
[/td][td=243]
行首的第一个非空白字符
[/td][/tr]
[tr][td=34]
$
[/td][td=243]
绝对行尾
[/td][/tr]
[tr][td=34]
0(零)
[/td][td=243]
绝对行首
[/td][/tr]
[/table]
关闭文件:在末行模式下:
[table=319]
[tr][td=34]w[/td][td=242]保存[/td][/tr]
[tr][td=34]q[/td][td=242]退出[/td][/tr]
[tr][td=34]![/td][td=242]强制[/td][/tr]
[tr][td=34]wq[/td][td=242]保存并退出[/td][/tr]
[tr][td=34]w![/td][td=242]强制保存[/td][/tr]
[tr][td=34]q![/td][td=242]强制退出[/td][/tr]
[tr][td=34]x[/td][td=242]保存退出[/td][/tr]
[/table]
在编辑模式下:
[table=320]
[tr][td]
ZZ
[/td][td=245]
保存退出
[/td][/tr]
[tr][td]
wall
[/td][td=245]
保存所有文本
[/td][/tr]
[tr][td]
qall
[/td][td=245]
退出所有文本
[/td][/tr]
[/table]
打开文件: vim [options] /path/to/file Vim 选项 文件名 vim +# /path/to/file 打开文件让光标快速定位在#行行首打开多个文件:三种方式: 方式一: Vim 文件名 文件名 文件名 … 多文件间跳转:
[table]
[tr][td]
输入 (在末行模式下):
[/td][td]
[/td][/tr]
[tr][td]
next
[/td][td]
切换到下一个;
[/td][/tr]
[tr][td]
last
[/td][td]
切换到最后一个;
[/td][/tr]
[tr][td]
first
[/td][td]
切换到第一个;
[/td][/tr]
[tr][td]
prev
[/td][td]
切换到前一个;
[/td][/tr]
[/table]
方式二:Vim –o 文件名 文件名 …:水平分割窗口打开文件 跳转方式:首先按住ctrl 再按w 松开按上下箭头实现切换 方式三:Vim –O 文件名 文件名 …:垂直分割窗口打开文件 跳转方式:首先按住ctrl 再按w 松开按左右箭头实现切换多文件退出方式:
[table=349]
[tr][td=63]
q
[/td][td=243]
退出当前光标所在文件
[/td][/tr]
[tr][td=63]
qall
[/td][td=243]
退出所有
[/td][/tr]
[/table]
编辑文本命令: 删除命令: 方式一:
[table=360]
[tr][td=61]
x:
[/td][td=256]
删除光标所在处的单个字符
[/td][/tr]
[tr][td=61]
#x
[/td][td=256]
删除光标所在处的向后的#个字符
[/td][/tr]
[/table]
方式二:
[table=523]
[tr][td=53]
d
[/td][td=427]
删除命令
[/td][/tr]
[tr][td=53]
dw
[/td][td=427]
删除单词至下个单词词首
[/td][/tr]
[tr][td=53]
db
[/td][td=427]
删除单词至前一个单词词首(不会删除光标所在处的字符)
[/td][/tr]
[tr][td=53]
d
[/td][td=427]
删除单词
[/td][/tr]
[tr][td=53]
d)
[/td][td=427]
删除本句和下一句
[/td][/tr]
[tr][td=53]
d(
[/td][td=427]
删除本句和上一句
[/td][/tr]
[tr][td=53]
d^
[/td][td=427]
光标所在处到行首(不包含光标所在处的字符)
[/td][/tr]
[tr][td=53]
d$
[/td][td=427]
光标所在处到行尾(包含光标所在处的字符)
[/td][/tr]
[tr][td=53]
dd
[/td][td=427]
删除光标所在行;
[/td][/tr]
[tr][td=53]
#dd
[/td][td=427]
删除光标所在行及向下#行
[/td][/tr]
[/table]
在末行模式下使用d命令 末行模式支持范围指定,支持地址定界,也就是可以明确说明从第几行到第几行
格式: 起始地址,结束地址
1,7就表示从第一行到第七行
1,7d就表示从第一行删除到第七行
$:最后一行
1,$:从第一行到最后一行
1,$d:从第一行删除到最后一行

在地址定界时还支持相对表达法
1,+6:从第一行开始向下走六行
1,$-2: 从第一行到倒数第三行
.:当前光标所在行
.,+3:表示从当前光标所在行向下走3行
.,+3d:删除光标所在处向下三行,也就是删除4行
%:全文
%d:删除全文

编辑操作可撤销:(在未保存之前)
[table=401]
[tr][td=59]u[/td][td=299]撤销[/td][/tr]
[tr][td=59]Ctrl+r[/td][td=299]撤销此前的撤销:(重做上一次操作)[/td][/tr]
[/table]
Vim默认会保留最近50次的操作,u命令可逐一撤销此前的编辑操作;这个u与Ctrl+r是很常用的命令,一个是复原,一个是重做;牢记。
我们所做的操作不仅可以撤销还可以保存在缓存里面,并且最后一次的编辑操作(尤其是删除操作)还可以被保存在文件当中的。 粘贴操作: P: 可以实现一次复制多次粘贴的操作
如果删除的是整行:
p:在当前光标所在行的下方粘贴(小写p)
P:在当前光标所在行的上方粘贴(大写P)
如果删除的不是整行:
p:在当前光标所在行字符的后方粘贴(小写p)
P: 在当前光标所在处字符的前方粘贴(大写P)
复制操作: y:
yy 复制光标所在的那一行
#yy 复制光标所在处向下#行
y$ 复制光标到行尾
y^ 复制光标到行首

   如果复制的是整行:
       p:在当前光标所在行的下方粘贴(小写p)
       P:在当前光标所在行的上方粘贴(大写P)

   如果复制的不是整行:
       p:在当前光标所在行字符的后方粘贴(小写p)
       P: 在当前光标所在处字符的前方粘贴(大写P)

查找一个大文件时常用的操作: 翻屏操作:[table=464]
[tr][td=109]
Ctrl+f
[/td][td=312]

向文件尾部翻一屏

[/td][/tr]
[tr][td=109]
ctrl+b
[/td][td=312]
向文件首部翻一屏
[/td][/tr]
[tr][td=109]
ctrl+d
[/td][td=312]
向文件尾部翻半屏
[/td][/tr]
[tr][td=109]
ctrl+u
[/td][td=312]
向文件首部翻半屏
[/td][/tr]
[/table] 文本搜索:[table=464]
[tr][td=109]
/keyword
[/td][td=312]

从当前光标所在处向文件尾部查找

[/td][/tr]
[tr][td=109]
?keyword
[/td][td=312]
从当前光标所在处向文件首部查找
[/td][/tr]
[tr][td=109]
n:
[/td][td=312]
下一个,跟查找命令相同的方向
[/td][/tr]
[tr][td=109]
N:
[/td][td=312]
前一个,跟查找命令相反的方向
[/td][/tr]
[/table]文件搜索查找支持模式:(模式:正则表达式所构成的匹配标准)也就是说支持正则表达式匹配。例如:字母d中间有两个字母后跟n的单词 /<d[[:alpha:]]{2}n>

另外一个编辑命令:[table=98%]
[tr][td=124]
c:
[/td][td=461]

  编辑,转换至输入模式

[/td][/tr]
[tr][td=124]
cc
[/td][td=461]
可以删除本行内容并且转换为输入模式
[/td][/tr]
[tr][td=124]
c$
[/td][td=461]
删除本行内容到行尾并转换为输入模式
[/td][/tr]
[tr][td=124]
#cc
[/td][td=461]
删除#行内容并转换为输入模式
[/td][/tr]
[tr][td=124]
c^
[/td][td=461]
删除至行首的第一个非空白字符处并转换为输入模式
[/td][/tr]
[tr][td=124]
c0
[/td][td=461]
删除至行首并转换为输入模式
[/td][/tr]
[/table]Vim 有可视化模式visual模式[table=98%]
[tr][td=119]
v:
[/td][td=465]

选中光标划过的字符,字符选取

[/td][/tr]
[tr][td=119]
V:
[/td][td=465]
选中光标划过的行,整行选取
[/td][/tr]
[tr][td=119]
Esc
[/td][td=465]
按Esc即可以返回到编辑模式
[/td][/tr]
[/table]例如:删除/复制部分文件:首先用V(v)选中,然后按d/y即可实现删除 删除部分内容并转换为编辑模式:首先用V(v)选中,然后按c即可实现删除
一个文件分屏显示:
水平分割:Ctrl+w,s 按着ctrl+w松开按住s即可实现水平分割
垂直分割:Ctrl+w,v 按着ctrl+w松开按住v即可实现水平分割
翻转屏幕:ctrl+w 箭头按着ctrl+w松开按住箭头即可实现屏幕翻转

窗口属性定义:(这些定义只对当前vim有效)
[table=98%]
[tr][td=225]
显示行号
[/td][td=147]
在末行模式下:输入
[/td][td=257]
setnmber,set nu(简写)
[/td][/tr]
[tr][td=225]
关闭显示
[/td][td=147]
~
[/td][td=257]
setnonumber,set nonu(简写)
[/td][/tr]
[tr][td=225]
自动缩进
[/td][td=147]
~
[/td][td=257]
set autoindent,set ai(简写)
[/td][/tr]
[tr][td=225]
关闭自动缩进
[/td][td=147]
~
[/td][td=257]
set noai
[/td][/tr]
[tr][td=225]
不区分字符大小写
[/td][td=147]
~
[/td][td=257]
set ignorecase,set ic
[/td][/tr]
[tr][td=225]
关闭不区分字符大小写
[/td][td=147]
~
[/td][td=257]
set noic
[/td][/tr]
[tr][td=225]
获取帮助:
[/td][td=147]
~
[/td][td=257]
set
[/td][/tr]
[tr][td=225]
显示匹配的括号
[/td][td=147]
~
[/td][td=257]
set showmatch,set sm
[/td][/tr]
[tr][td=225]
关闭显示匹配的括号
[/td][td=147]
~
[/td][td=257]
set nosm
[/td][/tr]
[tr][td=225]
关闭语法着色(默认是开启的)
[/td][td=147]
~
[/td][td=257]
syntax off
[/td][/tr]
[tr][td=225]
开启语法着色
[/td][td=147]
~
[/td][td=257]
syntax on
[/td][/tr]
[tr][td=225]
开启搜索结果高亮显示
[/td][td=147]
~
[/td][td=257]
set hlsearch
[/td][/tr]
[tr][td=225]
关闭搜索结果高亮显示
[/td][td=147]
~
[/td][td=257]
set nohlsearch
[/td][/tr]
[/table]以上设置更改之后等下次再打开还会按原来的设置显示,要想修改编辑配置文件Vim的配置文件:全局:/etc/vimrc 只有管理员才有权限修改配置修改之后对所有用户都有效个人:~/.vimrc(这个文件实际不存在,自己创建即可)修改之后只对当前用户自己有效对其他用户无效
下有附件Vimtutor中文版,根据内容学习查看练习一遍,对vim的功能操作基本便会应用。
本文出自 “起点梦想” 博客,请务必保留此出处http://pangge.blog.51cto.com/6013757/1251408

vim 的多窗口功能也很好用
在末行模式下输入

sp {filename}

filename 可有可无,有的话在新窗口创建了指定的文件,否则出现的是同一个文件的多窗口显示

目前简单文本操作用vim 量大的操作都用gedit文本打开 习惯了文本里面操作