VIM编辑器入门

VIM简介

VIM是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是纯粹的自由软件。


VIM的使用

在介绍基本使用前,先了解下VIM的基本模式

基本模式可分为三种:命令模式、输入模式、末行模式 
命令模式:Vim启动后的默认模式,通过输入指令完成对应的编辑操作。输入模式和末行模式从命令模式进入 
输入模式:可以正常输入字符、编辑文本的状态 
末行模式:可以理解为Vim内置的命令行接口,可以进行保存退出等操作

  • 打开文件

格式:vim [OPTION]… FILE… 
选项: 
+#:打开文件后,直接让光标处于弟#行的行首 
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首 
:如果不指定文件,将会出现如下界面 
VIM编辑器入门

  • 模式转换

命令模式–>输入模式 
i:insert,在光标所在处输入 
I:在当前光标所在行的行首输入 
a:append,在光标所在处后面输入 
A:在当前光标所在行的行尾输入 
o:在当前光标所在行的下方打开一个新行 
O:在当前光标所在行的上方打开一个新行

输入模式–>命令模式 
按ESC键

命令模式–>末行模式 
键入

末行模式–>命令模式 
按ESC键后稍等或者连按两次ESC键

  • 关闭文件

末行模式下 
:q 退出 
:q! 强制退出。丢弃作出的修改 
:wq 保存退出 
: x 保存退出 
:w /PATH/TO/SOMEWHERE 表示当前文本所有内容保存到指定路径 
命令模式下 
ZZ:保存退出

  • 光标跳转

字符间跳转: 
h:左 
l:右 
j:下 
k:上 
#COMMAND:跳转由#指定个数的字符 
注:#为数字,COMMAND为上述字符

单词间跳转: 
w:下一个单词的词首 
e:当前或下一个单词的词尾 
b:当前或前一个单词的词首 
#COMMAND:由#指定一次跳转的单词数

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

行间移动: 
#G:跳转至由#指定行 
G:跳转至最后一行 
1Ggg:跳转至第一行

句间和段间移动: 
):下一句 
(:上一句 
}:下一段 
{:上一段 
#COMMAND:由#指定一次跳转的句数或段数

  • 命令模式的命令

字符编辑: 
x:删除光标处的字符 
#x:删除光标处起始的#个字符 
xp:交换光标所在处的字符及后面字符的位置

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

删除命令: 
d:删除命令。可结合光标跳转字符,实现范围删除 
例:d$删除光标所在处到行尾的字符,d^和d0表示删除光标所在处到行首的字符 
#COMMAND:例如3dl表示删除光标所在处及其右两位字符 
dd:删除光标所在的行 
#dd:多行删除 
注意:最后一次删除的内容会被保存至缓冲区

粘贴命令: 
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面 
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面

复制命令 
y:复制命令,可结合光标跳转字符,实现范围复制 
:y命令使用方式与d命令相似,参照即可

修改命令: 
c:使用修改命令会触发模式转换,由命令模式–>输入模式,其功能表现为先删除,在转换为输入模式,可结合光标跳转字符使用。 
cc:删除光标所在行的字符并转换为输入模式 
C:删除光标所在处到行尾的所有字符并转换为输入模式

其它编辑操作: 
可视化模式: 
v:按字符选定 
V:按行选定 
注意:经常结合编辑命令(d,y,c)使用 
撤销此前的编辑: 
u:撤销此前的操作 
#u:撤销由#指定次数的操作 
撤销此前的撤销:Ctrl+r 
重复前一个编辑操作:. 
翻屏操作: 
Ctrl+f:向文件尾部翻一屏 
Ctrl+b:向文件首部翻一屏 
Ctrl+d:向文件尾部翻半屏 
Ctrl+u:向文件首部翻半屏 
vim自带练习教程:vimtutor

  • 末行模式的操作

注:默认已进入末行模式,以下命令就不加

地址定界 
格式:star_pos,end_pos 
#:具体第#行,例如2表示第2行 
#,#:从左侧#行表示起始,到右侧#行表示行尾 
#,+#:从左侧#表示的行起始,加上右侧#表示的行数 
.:当前行 
$:最后一行 
.,$-1:当前行到倒数第二行 
%:全文,相当于1,$ 
/pat1/,/pat2/:从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 
使用方法:后跟一个编辑命令 
d:删除 
y:复制 
w /PATH/TO/SOMEWHERE:将范围内的行另存至指定文件中 
r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容

查找 
/PATTERN:从当前光标所在处向文件尾部查找 
?PATTERN:从当前光标所在处向文件首部查找 
n:跳转到下一个与命令同方向的结果 
N:跳转到下一个与命令反方向的结果

查找并替换 
s:在末行模式下完成查找替换操作 
s/要查找的内容/替换为的内容/修饰符 
要查找的内容:可使用模式 
替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容 
修饰符: 
i:忽略大小写 
g: 全局替换 
注:默认情况下,每一行只替换第一次出现 
查找替换中的分隔符/可替换为其它字符,例如s/123/321/g可替换为s#123#321#g

多文件模式 
启动格式:vim FILE1 FILE2 FILE3 … 
next:下一个文件 
prev:前一个文件 
first:第一个文件 
last:最后一个文件 
wall:保存所有 
qall:退出所有

窗口分割模式 
启动格式:vim -o|-O FILE1 FILE2 … 
-o: 水平分割 
-O::垂直分割 
在窗口间切换:Ctrl+w,Arrow(↑↓←→) 
单文件窗口分割: 
Ctrl+w,s:split,水平分割 
Ctrl+w,v:vertical,垂直分割

  • 定制VIM的工作特性

配置文件:永久有效 
全局:/etc/vimrc 
个人:~/.vimrc(需要自行创建) 
末行模式:当前vim进程有效

(1) 行号 
显示:set number, 简写为set nu 
取消显示:set nonumber, 简写为set nonu

(2) 括号匹配 
匹配:set showmatch, 简写为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

原创文章,作者:Net18-海滨,如若转载,请注明出处:http://www.178linux.com/14053

(0)
Net18-海滨Net18-海滨
上一篇 2016-04-05
下一篇 2016-04-05

相关推荐

  • shell 脚本的编辑基础

          shell脚本是Linux运维工程师必须掌握的技能之一,shell脚本的使用让我们更好的操作Linux系统,方便了我们的执行。 一,编程基础 编程基本概念 编程逻辑处理方式:顺序执行,循环执行,选择执行 程序:指令+ 数据 shell 编程:过程式、解释执行 shell程序:提供了编程能力,解释执…

    Linux干货 2016-08-22
  • 简述硬盘参数和ext2文件系统

    硬盘类型: HDD机械硬盘和SSD固态硬盘: HDD是现在最普通的硬盘,容量大,稳定,是存储数据的首选。SSD是现在新兴的硬盘,相比HDD,它的并发i/o高,传输速度可达HDD的几倍以上,无噪音低功耗,而且轻便防震,随着各大厂商发力,性价比也越来越高,要求性能高或者数据轻度使用者可以优先考虑SSD。   容量:存储数据的空间大小,一般来说HDD每G…

    Linux干货 2016-04-19
  • 第3周作业

    一、列出当前系统上的所有已经登录的用户的用户名 [root@bogon tmp]# who | cut -d ” ” -f1 | sort -urootwing[root@bogon tmp]# who | cut -d ” ” -f1 | uniqrootwing 二、取出最后登录到当前系统的用户相关信息 […

    Linux干货 2017-07-25
  • keepalived+lvs 实现站点高可用

    lvs实现负载均衡
    keepalived 解决 director单点和realserver监控检测

    2017-12-13
  • Web缓存核心技术点需知

    Edit Web缓存核心技术点需知 5.1 HTTP首部控制 5.2 基于新鲜度检测机制: 2.1 特征1:时间局部性 2.2 特征2:空间局部性 2.3 缓存的优点 2.4 哪类数据应该被缓存 2.5 哪类数据可缓存但不应该被缓存 2.6 缓存命中率决定缓存有效性 2.7 缓存数据生命周期 2.8 缓存处理步骤 2.9 缓存和普通数据读取的区别 1. 完整…

    Linux干货 2016-11-14
  • Linux的哲学思想

    Linux的哲学思想 一切皆文件 在linux中所有的一切,都是可以通过ls进行查询的到的,甚至可以说ll查看详细信息时表现形式为文件,所有的设备,所有的文件不论后缀,只是一个单纯文件通过vim可以编辑一切 单一目的的小程序,组合小程序完成复杂任务 在linux中,每一个命令都是对应一个功能,通过不同的参数来完成不同的要求,通过繁多的小的命令来完成大型的要求…

    Linux干货 2016-10-30

评论列表(1条)

  • stanley
    stanley 2016-04-05 22:54

    写标签有助文章收录,
    markdown 火候不足,加油