admin 管理员组文章数量: 887021
1 引言
VIM是unxi或类unix操作系统必备的一款文本编辑器(当然目前也有windows版本GVim),其基本功能还是用来浏览编辑文本文件的。本文也是阐述文件的编辑保存功能,其他的一些高级功能请另行查阅相关文档。
编辑文件前确定键盘大写锁定未开启。先看一个实例:
打开文件test.txt,并将第一行删除:
vim test.txt --> gg --> dd --> shift + : --> wq
vim test.txt : VIM打开文件test.txt,如果文件不存在就是新建
gg : 跳转到第一行
dd : 删除当前光标所在行
shift + : : 同时按下键盘shift键和:(L旁边的冒号分号键),进入命令模式
wq : 在上一步执行后的光标出,输入wq,保存文件并退出
关于保存文件的一点说明:
w : 英文write的缩写,即写入更新文件,也叫保存文件
q : 英文quit的缩写,退出当前文件编辑
w filename : 保存到文件filename中
q! : 放弃更改,强制退出
VIM的熟练使用,可以解放鼠标及光标,双手一直在键盘字母输入区域,可以大大提高输入效率。另外由于VIM的操作涉及各个字符按键,多用VIM也可以提高对键盘操作熟练度。
2 操作模式
VIM的灵魂在于它的操作模式,不同模式间切换,能够极大的丰富按键功能。VIM的操作模式有正常模式、插入模式、命令模式,以上三种是最基本必用的,还有一种可视模式,主要用于块操作,可用要不用,但对程序员来说其列编辑模式还是十分有用的。
正常模式(normal-mode)
在其他模式下,按下Esc按键(一次不行多按几次)就能回到正常模式。
正常模式,各种按键就相当于是一个功能键,代表的是某个功能。
正常模式也是最主要的一种模式,也是用的最多的,通常切换到其他模式下,都要先切换到正常模式,即其他模式间是不支持相互切换的。
插入模式(insert-mode)
插入模式,就是普通文本输入模式。
从正常模式进入到插入模式有多种方式,以下列举出一些常用的:
i : 在光标前插入
I : 在行首插入
a : 在光标后插入
A : 在行尾新增输入(**大写字母,未开启大写锁定,可以shift+字母,**)
o : 在光标下方新增一行,进行输入
O : 在光标上方新增一行,进行输入
s : 删除光标所在字符,后进行插入
S : 删除光标所在行,后进行输入
命令模式(command-mode)
命令模式下,可以执行各种命令,如w保存文件命令,还有诸如查找、替换、配置VIM选项等命令。
正常模式下,输入:(shift+冒号分号键)可进入到命令模式,在屏幕出现:命令行,可输入功能命令。
可视模式(visual-mode)
可视模式,主要是用来高亮选中一大段块内容,正常模式只能移动光标,但不能选中一段内容。选中一段数据后,可以用于复制、保存、删除等操作(此处的保存相当于实现部分保存功能,选中某部分内容,另存为文件)。
可视模式有三种常见的模式,在可视模式下,即可相互切换:
v : 普通可视,移动光标可以选中一段数据
V : 可视行,移动光标*以行为单位*选中一段数据
ctrl + v : 可视列,移动光标*以列为单位*选中一段数据,可进行可视列编辑
3 基本操作
文件的打开,保存在引言部分已有说明,在此不再复述。
本章节操作无特别说明都是在正常模式下使用,其他模式下会特意说明。
光标移动
基本移动
h j k l 分别相当于光标 ←↓↑→,hjkl用于移动光标用得是最基本也是最多的。其他的光标移动
按键 功能说明 备注 0 行首 按下按键0,光标会移动到所在行的行首 $ 行尾 b 单词起始 b是begin首字母 e 单词结尾 e是end首字母 w 下一个单词 w是word首字母 + 下一行行头 行头表行第一个非空字符 - 上一行行头
光标移动的操作是其他一切操作的基础。
输入内容
切换到插入模式,即可输入文本内容,见第2节操作模式部分。
剪切、更改、复制、粘贴
剪切
按键 功能说明 备注 x 剪切字符 将光标所在字符剪切 dd 剪切整行 D 剪切到行尾 dw 从光标处剪切到下个单词起始位置 d是一个组合功能按键,单独按没有意义 db 从光标处剪切到所在单词起始位置 de 从光标处剪切到所在单词结束位置 d0 剪切到行首 行头表行第一个非空字符 d$ 剪切到行尾 与D效果一致,比D要多按个键 d… d还可以接其他的光标移动操作按键,此处不再一一列举
关于剪切组合功能d, d是delete的首字母,其与光标移动的操作配合,能实现灵活的剪切操作功能,所有的光标移动操作都能与d组合使用。另外还可配合重复操作(下文有介绍),可快速实现多项的剪切,如5dd,表示删除5行。剪切的数据存在于vim的缓冲区。更改
按键 功能说明 备注 cc 更改整行 先剪切整行,进入插入模式,进行输入 C 更改至行尾 先剪切至行尾,进入插入模式,进行输入 cw 更改到下个单词起始位置 c是一个组合功能按键,与d用法相似 c… c还可以接其他的光标移动操作按键,此处不再一一列举
其实更改d功能与剪切c功能相比,就是多了个进入插入模式功能。cw与dwi是一样的效果。 c是单词change的首字母。复制
按键 功能说明 备注 yy 复制整行 将光标所在行复制下来,复制到行尾只能用y$ Y 同上 同上 yw 复制到下个单词起始位置 y也是一个组合功能按键,与d用法相同 y… y还可以接其他的光标移动操作按键,此处不再一一列举
y组合按键的的用法,同剪切d的用法,与光标移动按键及重复操作配合,灵活实现复制操作。y用于复制,是单词yank的首字母,之所以不用copy的首字母c, 是因为c同时也是change的首字母,用于更改。复制的数据也是存在于vim的缓冲区。粘贴
p : 字母p,是用于正常模式下的粘贴,粘贴来自vim缓冲区的内容,包括剪切、更改去除、复制的内容。p是paste的首字母p如果要粘贴外部复制的数据,如在vim外的crtl+c复制来的数据,那么切换到插入模式下,使用shift+Insert组合按键来实现粘贴,vim内部是不支持crtl+c、ctrl+v。
小结:剪切(d)、更改(c)、复制(y)都是可以配合光标移动按键使用,用法相同,需要熟练掌握。
查找、替换
查找
vim的查找支持基本的正则表达式查找。按键 功能说明 备注 /[pattern] 向下查找模式[pattren],按下Enter键开开始查找 /a 表示向下查找字母a; /[1-9] 表示向下查找1-9的任意一位数字 ?[pattern] 向上查找模式[pattren] n 顺方向查找下一处 n是next的首字母 N 反方向查找下一处 % 括号匹配 显示匹配的括号,程序编写检查括号常用
有些字符有特殊功能使用,需要转义字符/转义,如查找/, 要用“/\/”。下方的替换操作也是如此。
/及?查找,最后需要按下Enter键才开始执行动作。tips:
查找单词全词匹配: /\<plus\> 查找单词plus。
其中\是转义字符,<表示单词开头,>表示单词结尾。查找时忽略大小写:/plus\c 结尾使用\c表示忽略大小写。
如果要默认忽略大小写,需要通过设置命令,下文会加以介绍。替换
s替换操作要切换到命令模式,在命令行上输入,支持正则表达式模式操作。按键 功能说明 备注 r+单字符 单字符替换,将光标所在字符替换为r后的字符 正常模式下使用,r是replace首字母 R 连续替换多个字符 正常模式下使用 s/old/new 将所在行匹配到的第一个old替换成new s/old/new/g 将所在行匹配到的所有old替换成new g是global的首字母 s/old/new/c 将所在行匹配到的所有old替换成new,但替换前会提示确定 c是confirm的首字母 %s/old/new/gc 将整个文件匹配到的old替换成new #,#s/old/new/gc 是一个数字表行数,将两个数字之间的行中的old替换成new 10,20s/old/new/g 表示将10到20行中的old替换成new
s替换操作,也是最后要按下Enter键才开始执行
重复及撤销类操作
重复操作
重复操作在前面已有提及,5dd表示删除5行。
重复操作就是在动作前面加个一个数字,表示用于连续执行动作次数。
5j 向下移动五行;
5dd 删除5行;
5yy 复制5行。
撤销类操作
撤销类的操作,是针对文件修改的撤销,未修改操作如光标移动,没有撤销说法,即光标移动后,再撤销按键,是无法回到上次光标位置。按键 功能说明 备注 u 撤销上一次的修改操作 ctrl+r 恢复撤销 r是recover的首字母;如果误操作撤销,可按ctrl+r恢复 U 撤销或者恢复整行的修改 按下U,撤销整行的修改,撤销后再按一次U是恢复整行的修改
文件定位及状态
本节主要介绍文件的定位操作(包括跳转,翻页等功能),以及查看文件状态。
按键 | 功能说明 | 备注 |
---|---|---|
ctrl+g | 在屏幕下方显示当前文件状态 | |
gg | 跳转到文件开头 | |
G | 跳转到文件末尾 | |
数字+G | 跳转指定数字行 | |
数字+gg | 同上 | |
ctrl+f | 前滚一屏,也即下一页 | |
ctrl+b | 后滚一屏,也即上一页 |
命令模式操作
本节介绍下命令模式下的一些常用命令操作,顾名思义,首先得按:进入到命令模式下。
按键 | 功能说明 | 备注 |
---|---|---|
set xxx | 设置类命令,设置xxx选项,支持简写为se | |
w FILENAME | 以文件名FILENAME保存文件,相当于另存为 | w 保存当前文件 |
r FILENAME | 提取文件FILENAME内容插入到当前光标处 | |
r ![shell cmd] | 执行shell cmd提取其标准输出内容,插入到当前光标处 | 如r !ls表示在外部shell下执行ls命令并将其输出内容,插入到当前光标处 |
!shell cmd | 在外部shell中执行shell cmd |
关于设置类常用命令:
按键 | 功能说明 | 备注 |
---|---|---|
se nu | 在每一行前显示出行号 | se是set的简写,number的简写 |
se nonu | 取消设置行号,即不显示出行号 | 取消设置某一命令,都是在相应命令前加上no组成取消命令,nonu就是nonumber的简写 |
se ic | 设置查找时忽略大小写 | ic是igorecase的简写 |
se hls | 将查找到的字符串高亮显示 | hls是hlsearch的简写 |
se is | 在输入查找内容时,就实时显示出第一个找到的内容 | is是incsearch的简写 |
help cmd | 获取命令帮助 | 如:help set、help incsearch |
列块操作,不常用(notepad++支持,程序员用的多)
1、保存部分内容
shift+v --> 移动光标选中若干行 --> : w FILENAME
2、列编辑插入
crtl+v --> 移动光标选中若干列 --> shift+i 列插入--> 输入文本 --> 连按两次Esc键 --> 选中的列前都有输入文本
crtl+v --> 移动光标选中若干列 --> d --> 删除选中列
例:
//a[0].no = 1;
//a[0].name = "XiaoMing";
//a[0].grade = 1;
//a[0].class = 2;
将每行前的//删除,且将a[0]中的0改成1
按如下操作:
光标移动到第一行行首处 --> crtl+v --> 按j跟l选中所有的// --> d --> 光标移动到第一行的0上 --> 移动j选中所有的0 --> 输入r1,将所有0替换成1 --> 结束
tips:
I : 列编辑下,在光标处插入
A : 列编辑下,在光标后插入
小结
掌握以上基本操作,相信就可以实现大部分的文件编辑功能。当然VIM的功能按键多如牛毛,往往在正常模式误按到某个键而调用了其相应功能,只要使用撤销操作,以及Esc键,回到正常模式下。
版权声明:本文标题:VIM基本操作,掌握这些就够了 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1724514361h754014.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论