Linux06 vim文本编辑器的使用

vim编辑器

vi:Visual Interface
vim:Visual Interface # vim是vi的增强版    

编辑模式(命令模式),默认处于编辑模式
输入模式:输入文件内容,输入的内容会被保存下来。
末行模式:在末行模式下,可以输入编辑模式以外的文件管理类的命令,末行模式所提供的命令支持能力比编辑模式更多。要想进入末行模式,必须从输入模式转到编辑模式(按ESC),之后输入 :  


输入模式 <------>编辑模式<------>末行模式


模式转换:
编辑-->输入:
	i:在当前光标所在字符的前面,转为输入模式;
	a:在当前光标所在字符的后面,转为输入模式;
	o:在当前光标所在行的下方,新建一行,并转为输入模式;
	I:在当前光标所在行的行首,转为输入模式;
	A:在当前光标所在行的行尾,转为输入模式; 
	O:在当前光标所在行的上方,新建一行,并转为输入模式   
输入-->末行: 按下ESC,输入 :
    10d  # 删除第10行
	10,20d  # 删除10到20行
	set nu # 显示行号
	
	在末行模式下,使用  "! 命令",还可以在在操作当前文件的同时执行其他命令:
    	:! cat /etc/passwd  # 执行之后可以按ENTER键返回

末行-->编辑:按ESC

一、打开文件    
# vim /path/to/somefile    
vim +number 文件名  # 表示打开此文件,光标并停留在该文件的第number行的行首
vim + 文件名  # 表示打开该文件时,光标在该文件的底部
vim +/PARTTERN 文件名 # 表示打开文件,定位至第一次被PARTTERN匹配到的行的行首

二、关闭文件:
1.末行模式关闭文件
	:q # 仅退出,并未保存文件
	:wq # 保存并退出
	:q! # 不保存并退出
	:w # 保存
	:w! # 强行保存
	:x # wq的简写,也能实现保存并退出
2.编辑模式下退出:
	ZZ(shift+zz) # 保存并退出,无须转到末行模式退出
	Ctrl+z

三、移动光标
1.逐字符移动:(编辑模式)
    h:  左
    l:  右
    j:  下
    k:  上
	5h:  表示一次向左移动5个字符
	5l:  表示一次向右移动5个字符
	5j:  表示一次向下移动5行
	5k:  表示一次向上移动5行
2.以单词尾单位移动:(编辑模式)
    w # 表示移到下一个单词的词首
    e # 跳至当前或下一个单词的词尾
    b # 跳至当前或前一个单词的词首
    这三个字母也支持其前加数字,表示一次跳多少个单词:
    5w  5e  5b

3.行内跳转:(编辑模式)
    0: 表示跳到行首(绝对行首)
    ^: 表示跳到行首的第一行个非空白字符(shift+6)
    $: 表示跳到行尾(绝对行尾)
4.行间跳转:(编辑模式)
	#G:跳转至第#行
	G:最后一行
	
	末行模式下,直接给出行号即可

四、翻屏
在编辑模式下:
	Ctrl+f:向下翻一屏
	Ctrl+b:向上翻一屏
	Ctrl+d:向下翻半屏
	Ctrl+u:向上翻半屏

五、删除单个字符(编辑模式)
	x:删除光标所在处的单个字符
	#x:删除光标所在处及向后的共#个字符

六、删除命令:d
	按下d,表示要删除内容了,至于是从当前光标处向上还是向下删除,删除多少行,还需要指定:
		d0:表示从当前光标处删到行首  
		d$:从当前光标处删除到行尾
		#d,#dw,#db

	dd:删除当前光标所在行
	#dd: 删除包括当前光标所在行之内的#行
	
	末行模式下:
		startNumber,EndNumberd
		.:  表示当前行
		$:最后一行
		+#:向下的#行
		.,$-3d  表示从当前行删到倒数第2行
		比如:
			3,8d  # 从第3行删到第8行

七、粘贴命令 p

vim删除的内容会被保存到缓冲区,最后一次删除的内容可以被粘贴到别的地方。

P: 如果删除或复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的的后面;
p: 如果删除或复制为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的的前面;

八、复制命令 y
	用法同d命令
	末行模式下:
		1,100y  # 复制从1到100行
	编辑模式下:	
		y$:复制当前行光标处到行尾的内容
		y0:复制当前行光标处到行首的内容
		yy:复制当前行内容

九、先删除内容,再转换为输入模式
	c(change):用法同d命令
	cc:表示删除当前行内容,并再其下方再创建一行
	c$: 表示删除光标当前处到行末的内容,并进入到输入模式
	
十、替换
	r6: 表示替换当前光标处的单个字符,此处表示将当前光标处字符替换成6
	
十一、撤销编辑操作
u(undo):可连续撤销此前的n次操作,但只在内存缓冲区保存50次的操作,最多只能撤销50次的操作。
#u: 直接撤销最近#次编辑操作

撤销最近一次的撤销操作:Ctrl+r

十二、重复前一次编辑操作
	.

十三、可视化模式
v:按字符选取
V:按矩形块选取(一次选中一行)

十四、查找 (末行模式)
/PARTTERN  # 输入完后按ENTER键,会将匹配到的内容,高亮显示,这是再敲 n 键,会逐个向下显示,敲 N 键会逐个向上显示;
?PARTTERN  当前光标往首部查找

十五、查找并替换(末行模式)
g:全局替换
i:忽略大小写
:.,$-1s/c/C/g  # 表示将当前行到倒数第2行的c替换成C   和sed命令相似

1,$: 表示从第1行到最后一行,表示全文查找,可以使用 % 取代 1,$
%: 表示全文

十六、使用vim编辑多个文件
vim FILE1 FILE2 FILE3
:next 切换到下一个文件
:prev 切换到前一个文件
:last 表示切换到最后一个文件
:first 切换至第一个文件

退出
:qa   全部退出

十七、分屏显示一个文件
Ctrl+w,s  水平拆分窗口  先按Ctrl+w松开,再按s
Ctrl+w ,向下箭头  #进入拆分的下一个窗口
要想退出:输入q退出当前窗口,输入 qa 退出所有窗口

Ctrl+w,v   垂直拆分窗口  先按Ctrl+w松开,再按v
Ctrl+w ,向右箭头  # 切换到另一个拆分窗口
要想退出:输入q退出当前窗口,输入 qa 退出所有窗口


十八、分窗口显示多个文件
vim -o FILE1 FILE2  # 分窗口水平显示多个文件
vim -O ILE1 FILE2   # 分窗口垂直显示多个文件

十九、将当前文件中部分内容另存为另外一个文件
末行模式下使用w命令
:w
:ADDR1,ADDR2w /path/to/somewhere

二十、将另外一个文件中的内容填充再当前文件中光标所在行下方位置
:r /path/to/flie

二十一、跟shell交互
末行模式下:
	:!COMMAND   # 不用退出文件的情况下执行其他命令,执行完,再次按ENTER键返回来

二十二、高级话题
1.显示或取消显示行号
:set number
:set nu  显示行号
:set nonu 取消行号


2.显示忽略或区分字符大小写
:set ignorecase
:set ic

:set noignorecase
:set noic  # 取消忽略大小写
3.设定自动缩进
:set autoindent  # 写脚本时自动缩进比较方便
:set ai
:set noai  # 取消自动缩进

4.查找到的文本高亮显示或取消
:set hisearch
:set nohisearch  # 取消搜索到的文本高亮显示

5.语法高亮
:syntax on # 开启语法高亮
:syntax off  # 关闭语法高亮

二十三、vim配置文件
/etc/vimrc  # 全局配置文件
~/.vim

想让某个文件在使用vim打开时自动显示行号:
	在/etc/vimrc文件中,随便找个位置,添加一行:
		set nu  # 在这个配置文件中的设置,对所有用户都生效

如果仅想对某个用户设置行号,可以修改此用户家目录下的 .vimrc文件,此文件如果不存在,可以自己创建一个:
	set nu

vimtutor: 此命令是关于vim的一个使用手册

练习:

将/etc/yum.repos.d/server.repo文件中的ftp://instructor.example.com/pub替换为http://172.16.0.1/yum

%s/ftp://instructor.example.com/pub/http://172.16.0.1/yum/gi

%s@ftp://instructor.example.com/pub@http://172.16.0.1/yum@g
原文地址:https://www.cnblogs.com/zhangchaocoming/p/14692187.html