linux day10 vim详细用法

一、文本编辑器--vim

1.什么是vim

vi和vim命令是linux中强大的文本编辑器, 由于Linux系统一切皆文件,而配置一个服务就是在修改其配置文件的参数。
vim编辑器是运维工程师必须掌握的一个工具, 没有它很多工作都无法完成。
vim其实是vi的升级版

vim和vi的区别:
	vi 不高亮显示语法
	vim 高量显示语法
	
#服务默认安装完没有vim命令
yum install -y vim

二、vim模式介绍

Vim编辑器中设置了三种模式: 命令模式、编辑模式、末行模式,每种模式分别又支持多种不同的命令快捷键,
大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手。要想高效率地操作文本,
就必须先搞清这三种模式的操作区别以及模式之间的切换方法。

命令模式: 控制光标移动, 可对文本进行查看、翻页、复制、粘贴、删除、剪切等工作。
使用vim filename 编辑一个文件时,一进入该文件就是命令模式了。
在这个模式下,可以进行光标移动、复制、删除、粘贴操作。 

编辑模式: 正常的文本写入。
从命令模式进入编辑模式,只需你按一个键即可(i, I, a, A, o, O, r, R,s,S)。
当进入编辑模式时,会在屏幕的最下一行出现“INSERT”的字样。
从编辑模式回到命令模式只需要按键盘左上方的 ESC 键即可。 

末行模式: 保存或退出文档,以及设置编辑环境
在命令模式下,输入 ":" 或者 "/" 即可进入末行模式。
在该模式下,可以进行的操作有,显示行号、搜索、替换、保存、退出。

1.命令模式

1)光标跳转

G(shift + g)	      #跳转文件最后一行
gg		      #跳转到文件首行
Ngg		      #跳转到第N行,N是行数
home		      #跳转到行首
^(shift + 6)	      #跳转到行首有字符的位置
0		      #跳转到行首
end		      #跳转到行尾
$(shift + 4)	      #跳转到行尾
u		      #撤销  
ctrl键 + r	      #回滚你的撤销 
r		      #在当前光标上面进行替换   没有进入编辑模式 
R		      #连续替换  
~		      #把当前光标所在字符替换为大小写 
>>		      #将当前行向后进行缩进
<<		      #将缩进取消  
fi		      #将光标快速移动到当前行的第一个i字符     ;   跳转到下一个  
*		      #高亮显示当前光标所在的字符串  向下跳转 
#		      #向上跳转

2)查看数据翻页

ctrl + f		#向下翻页
ctrl + b		#想上翻页

3)复制黏贴

yy				#复制光标所在行
yNy				#复制光标所在下面N行,N表示多少行
p				#粘贴复制的内容,到光标所在下一行
P				#粘贴复制的内容,到光标所在上一行
Np				#粘贴N遍,N表示遍数

4)删除和剪切

dd				#删除和剪切光标所在行
dNd				#删除和剪切光标以下N行
dG				#删除和剪切光标所在以下到结尾所有内容
dgg				#删除和剪切光标所在以上到开头所有内容
D				#删除和剪切光标所在位置到行末的所有内容,包括光标位置的内容
d + home		        #删除和剪切光标所在位置到行首的所有内容,不包括光标位置的内容
x				#删除和剪切光标所在位置的内容
X				#删除和剪切光标所在位置前面的内容

5)撤销

u				#撤销上一次操作
ctrl + r		        #取消撤销

6)替换命令

r				#替换光标所在位置的字符
R				#替换多个字符,直到按ESC结束替换

2.编辑模式

#进入编辑模式的按键

i			#进入编辑模式
I			#进入编辑模式,光标跳到行首

a			#进入编辑模式,光标后移一位
A			#进入编辑模式,光标跳到行尾

o			#进入编辑模式,光标下移一行
O			#进入编辑模式,光标上移一行

s			#进入编辑模式,并删除光标所在位置的内容
S			#进入编辑模式,并删除光标所在行的内容

3.末行模式

1)作用

1.搜索
2.保存
3.退出
4.替换
5.优化查看

#输入 ":" 或者 "/" 即可进入末行模式

2)冒号进入末行模式

:w			#保存文件修改
:q			#退出编辑文件
:wq			#保存并退出
!			#强制
:w!			#强制保存文件
:q!			#强制退出,修改的内容不会被保存
:wq!		#强制保存并退出
:x			#先保存再退出
ZZ			#保存退出(在命令模式下)

:N			#跳转到N行,N代表行数
:set nu		#显示行号

3)末行模式搜索

#搜索内容
/ + 字符串			搜索字符串
	n:		#匹配下一条搜索
       /rootc		#搜索的时候,忽略大小写 	
            N:		#匹配上一条搜索

4)替换

#把文件中tcp都换成udp
:%s#tcp#udp#g
%:		#代表所有行
s:		#代表替换
g:		#代表所有内容

#替换指定行数内容
:1,10s#tcp#udp#g
1,10:	#代表只替换1-10行的内容

:1,10s#tcp#udp#gc			#替换内容前询问
replace with udp (y/n/a/q/l/^E/^Y)?			#询问内容
y:	yes	确认替换
n:	no	不替换
a:	all	全部替换
q:  quit  退出
l:	last  只替换一次,退出

4.视图模式(可视块模式)

ctrl + v 进入块模式
	作用:
	1.批量删除:进入块模式,选中内容,按x删除
	2.批量注释:进入块模式,选中要加注释的行,shfit + i进入编辑模式并到行首,输入#,按ESC
	3.批量替换:进入块模式,选中要替换的内容,按r,然后输入要替换的值
	
shift + v 进入行模式
	作用:
	1.批量复制:进入行模式,选中内容,按y复制,按p粘贴
	2.批量删除:进入行模式,选中内容,按x删除

5.vim常用的环境变量

1)临时环境变量

:set nu			#显示行号
:set nonu		#取消显示行号
:set ic			#搜索时忽略大小写
:set list 		#显示制表符

2)一般配置

[root@Centos7 ~]# vim  ~/.vimrc
syntax on
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
set number
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set ruler
set incsearch
set showmatch
set matchtime=10
set ignorecase
set cursorline
set t_Co=256

#语法高亮
syntax on
#配置默认编码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
#显示行号
set number
#自动对齐
set autoindent
set smartindent
#控制tab键为四个空格
set tabstop=4
#设置当行之间交错时使用4个空格
set shiftwidth=4
#设置在编辑过程中,于右下角显示光标位置的状态行
set ruler
#设置增量搜索,这样的查询比较smart
set incsearch
#高亮匹配括号
set showmatch
#高亮匹配括号时间
set matchtime=10
#忽略大小写
set ignorecase
#高亮显示当前行
set cursorline
#支持颜色代码
set t_Co=256

6.vim扩展知识

1)如何同时编辑多个文件

#水平打开两个文件,可以进行对比
[root@Centos7 ~]# vim -o host.sh host1.sh

#垂直打开两个文件,可以进行对比
[root@Centos7 ~]# vim -O host.sh host1.sh

#ctrl+ww 文件间切换

2)相同文件之间差异对比

#diff  文件对比(用的不多)    
[root@Centos7 ~]# diff host.sh host1.sh 
13,14c13
< ajksdhalsd
< qwueyqiwe
---
> 

#vimdiff  以vim方式打开两个文件对比,标记不同的内容
[root@Centos7 ~]# vimdiff host.sh host1.sh

3)注意事项

#在编辑文件时报错
Swap file ".host.sh.swp" already exists!

#说明文件已打开,或者错误关闭
只需要删除.swp文件即可
[root@Centos7 ~]# rm -rf .host.sh.swp

#  故障
E325: ATTENTION
Found a swap file by the name ".passwd.swp"
          owned by: root   dated: Thu Jul 16 20:14:27 2020
         file name: ~root/passwd
          modified: YES
         user name: root   host name: qls
        process ID: 81955
While opening file "passwd"
             dated: Thu Jul 16 19:11:50 2020

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r passwd"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".passwd.swp"
    to avoid this message.

Swap file ".passwd.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
#故障
vim非正常退出导致的
按照提示 进行恢复   保存退出之后 
在手动的删除这个文件 
[root@qls ~]# rm -f .passwd.swp 

4)vim执行过程

1. vim打开一个文件进行编辑
2. 系统会生成一个临时文件 ,以点开头的临时文件 后缀名为.swp
3. 刚进入文件的模式的命令模式
4. 通过命令模式可以进入编辑模式,进行编辑文件
5. 编辑文件完成之后需要输入Esc键,退出编辑模式进入命令模式
6. 从命令模式进入底行模式,进行保存退出 
7. 保存退出之后,系统会将临时文件的内容覆盖到源文件,之后删除临时文件 

5) vim写入导入文件


#  文件另存为

:w	new1.txt    #将文件的内容另存为一个新文件 

:1,10w new2.txt	    #将文件的第一行到第十行内容另存为一个新文件


#  导入其他文件内容进入这个文件

:$r	/etc/hosts		#导入/etc/hosts文件中的内容到此文件的结尾 

:0r	 /etc/hosts		#导入/etc/hosts文件中的内容到此文件的行首

vim命令执行步骤

原文地址:https://www.cnblogs.com/xiaolang666/p/13187212.html