Linux Vim 编辑器的使用笔记

1、vim简介

vi编辑器是由加州大学伯克利分校、 bill joy研发的。它是 Linux下最基本的文本编辑器,而且也是一款文本模式编辑器。vim是vi的增强型,被推崇为类vi编辑器中最好的编辑器。vim命令的操作方法与vi一模一样,只是在vi基础上对内容显示上进行了颜色的衬托,对相关指令以变色,以区别其它文字,更加人性化了。通常我们称vi与vim,都为vi。nvim更更好用。
它有三种模式:命令、行底、编辑模式,三种模式之间的切换如下图所示:
Linux Vim 编辑器的使用笔记_第1张图片

2、进入退出方式

"进入vi的方式"
vi 
vi newfile     #打开或新建文件
vi newfile +   #打开文件之后光标处于文件最末行
vi newfile +n  #打开文件之后光标处于文件第n行
"保存文件的方式"
:w [filepath]  #保存当前编辑的文件,若filepath有指定则表示另存为文件
:w! [filepath] #强制保存文件,若文件存在则覆盖
"退出vi的方式"
命令模式下:连续按两次大写Z键,保存并退出
行末模式下:
	:q         #退出vi,前提是该文件没有被编辑过
	:q!        #强制退出vi,放弃修改
	:wq        #保存并退出vi
	:wq!       #强制保存并退出vi

3、命令模式下

1.光标可移动的单位:

  • (1)字符: 汉字由二个ASCII字符宽度,移动的单位是一个汉字,英文或数字等是一个ASCII字符宽度
  • (2)行: 文本的一行,可用行号定位
  • (3)屏幕: 分成半个屏幕高或整个屏幕高(页)
  • (4)行首和行尾:文本行的行尾和行首
  • (5)字: 广义字和狭义字
    广义字:由空格作为间隔符
    狭义字:英文单词、标点符号及一些特殊字符均作为一个字
  • (6)句: 以逗号、句号、问号、感叹号结尾且后面有二个以上(含二个)空格或一个换行符的字符序列。
  • (7)段: 以一个空白行开始和结束的字符序列
"光标移动"
##按字符移动##
	四个方向键
	k j h l      :各自按上下左右移动一个字符
	space backspace ctrl+n ctrl+p  :各自向右左下上移动一个字符
##按行移动##
	0     :本行行首
	^     :第一个非空白字符
	$     :本行行尾
	-     :上一行行首
	<n>G  :跳到第n行行首,缺省则为最末行
##按字移动##
	w     :安照单词的首字母向后移动,不忽略标点符号
    W     :安装单词的首字母向后移动,忽略标点符号
    b     :按照单词的首字母向前移动,不忽略标点符号
    B     :按照单词的首字母向前移动,忽略标点符号
    e     :按照单词末尾字母向后移动,不忽略标点符号
    E     :按照单词末尾字母向后移动,忽略标点符号
	
按句、段落移动:
	(     :将光标移到当前句句首,如果已处在句首,则移到前一句句首
	)     :将光标移到下一个句子的开头
	{     :将光标移到当前段段首,如果已处在段首,则移到前一段段首
	}     :将光标移动到下一段段首
"翻页"
	Ctrl + f 向后翻一页
	Ctrl + b 向前翻一页
	Ctrl + d 向后翻半页
	Ctrl + u 向前翻半页
	Ctrl + e 屏幕向下翻一行
	Ctrl + y 屏幕项上翻一行
"剪切/删除"
	x     : 删除光标处的字符
	nx    : 删除光标位置起的右n个字符
	X     : 删除光标前的字符
	nX    : 删除光标位置前的左n个字符
	dd    : 删除当前行
	ndd   : 删除从当前行算起随后的n行
	D(d$): 删除光标起到行尾的内容
	d0    : 删除光标前一个字符到行首的内容
	dw    : 删除一个单词
	ndw   : 删除n个单词
"文本的修改"
	c object : 改变光标位置起到object位置的内容.
	C(c$)   : 改变光标位置起到行尾的内容.
	nC       : 改变光标位置起的n行内容
	cc       : 改变当前行的内容.等价于dd和O的组合
	ncc      : 改变当前行起n行的内容
	r(R)     : 替换光标所在的字符,替换后依然为命令模式
	s(S)     : 替换光标所在的字符,替换后切换为插入模式
"复制/粘贴"
##字复制命令##
	yb     复制光标前的一个字
	yw     复制光标后的一个字
##行复制命令##
	<n>yy 复制光标下面的N行
	y$    复制光标后面所有的字符
	y0    复制光标前面所有的字符
##粘贴命令##
	p     把已经复制的字或者行粘贴到光标之后
"撤销"
	u     恢复最后一个指令之前的结果。
	U     恢复光标该行之所有改变
"命令模式常用操作:"
dd      :删除光标所在的行;
3dd     :删除从当前光标开始起的3行内容;
4dd     :就是删除从当前光标开始起的4行内容;
yy      :剪切当前光标行;
3yy     :剪切从当前光标行开始起的3行。(包括当前光标行);
p       :paste粘贴;
u       :undo撤销;
$       :直接定位到当前行的行末;

4、行底模式下

"命令->行底"
	: 命令
	/ 查找(自顶向下)往光标之后寻找该字符串
	? 查找(自底向下)往光标之前寻找该字符串
"复制/粘贴"
	:1,5 co 20 #将1到5行拷贝到20行下。
"撤销"
	:undo      #恢复上一个指令之前的结果
"搜索与替换"
	/ 查找(自顶向下)往光标之后寻找该字符串
	? 查找(自底向下)往光标之前寻找该字符串
	n 搜到相应字符后,往下继续寻找下一个相同的字符串
	N 搜到相应字符后,往上继续寻找下一个相同的字符串
	s 搜索某行范围,search
	g 搜索改行所有匹配的字符
##例子##
  替换10到20行之间,匹配到的字符:
	: 10,20s/old/new 替换10到20行的第一个匹配到的字符
	: 10,20s/old/new/g 替换10到20行所有匹配到的字符
  替换文本中所有匹配到的字符:
	: %s/old/new 替换所有行第一个匹配到的字符
	: %s/old/new/g 替换所有行所有匹配到的字符
  注:替换时没有指定到的行中出现了需要匹配的字符串时,该字符串会高亮显示。
  注:有些字符不能直接替换,需要加上转义符‘\’。
"设定vi环境"
	:set autoindent    设置自动对齐
	:set smartindent   设置智能对齐
	:set tabstop=n     设置制表符tab的空格数
	:set shiftwidth=n  设置换行时对齐的空格数
	:set showmatch     设置智能匹配,左括号与右
括号匹配
	:set vb t_vb=         去取命令错误时的响声
	:set nu               显示行号 number
	:set nonu             取消显示行号 nonumber
	:set background=dark  设置背景颜色为暗色
    :set background=light 设置背景颜色为亮色
	:syntax [on | off ]   语法打开/关闭高亮
	:set hls              高亮关键字
	:set nohls            取消高亮关键字
"vi启动时自动加载设定"
	vi启动时自动加载环境配置:
	vi在启动时会自动加载当前用户目录下.vimrc文件,可以在该文件中设定启动的环境配置。
  方法:在用户根目录下打开.vimrc :
	vi ~/.vimrc
  将之前所述的环境设定加入到该配置文件中的最末尾处,保存并退出。

5、编辑模式下

"命令->编辑"
##追加模式## append
	a 由光标之后加入资料。
	A 由该行之末加入资料。
##插入模式## insert
	i 由光标之前加入资料。
	I 由该行之首加入资料。
##新增行模式## open
	o 新增一行于该行之下供输入。
	O 新增一行于该行之上供输入。

6、常用命令

"下面这几个命令要好好记住,用得很多!!!"
移动到开始、结束和结尾。 
    gg:移动到文件顶端开始
     G:移动到文件底端开始
     M:移动到文件中间位置
"命令模式"
	ggVG       全选  
	dd         删除  
	“+y        复制 #英文状态下的双引号
	p          粘贴
	zz         退出(大写)
	2,7 co 10  将第二行到第七行拷贝到第十行下面
    a          :在光标之后,插入内容;
    A          :在光标的行末,插入内容;
    i          :在光标之前,插入内容;
    I          :在光标的行首,插入内容;
    o          :在光标的下一行,插入内容;
    O          :在光标的上一行,插入内容; 
"行底模式"
	:wq         表示“保存退出”;  
    :wq!        表示“保存并强制退出”; 
    :q!         表示“强制退出”;  
	:set nu     显示行号;
	:set nonu   不显示行号;
	:num        num为10就表示跳转到第10行(一般显示行号后再用这个);
	:/单词       寻找单词,多个单词时用n向后寻找,N向前寻找,默认会高亮显示;
	:noh        取消高亮显示;

vi提供同时编辑多个文件的功能,方法如下:

"打开多个文件"
	vi file1 [file2] [file3] .....  
"在多个文件之间的编辑切换"
##在末行模式下##
	:n 载入下一个文件
	:N 载入上一个文件
	当完成一个文件的编辑后,需要保存该文件,才可切换
##两个文件之间的编辑切换##
命令模式下:
	ctrl+shift+6
末行模式下:
	:e#

你可能感兴趣的:(Linux,vim,linux,shell)