Vim的基本操作


vim 是 vi 的增强版(vi Improved),与 vi 编辑器完全兼容,而且实现了很多增强功能。
转载://https://www.wangt.cc/2019/09/fa6e891029/

一、基础使用

1.打开,新建文件

$> vi hello.c //打开,新建一个叫hello.c的文件

2.进入 vi 后,光标处于文件中特定的某行上,可在 vi 命令上加上行号和文件名,

$> vi +5 hello.c 

进入 vi ,光标处于文件最末行,则只需去掉命令中+后面的数字 n 即可

$> vi + hello.c

3.模式匹配
进入 vi ,光标就处于文件中第一个与指定模式串相匹配的那行上开头。

$> vi +/模式字符串  文件名$> vi +/main hello.c

二、理论概述

1命令模式(操作模式)

按esc键进入,如果不确 定自己在什么模式,多按几下esc

1)插入
```xml
o 可以在光标下面新建一行(不论在该行的那个位置)

O 在光标上面新建一行

a 在光标后面插入


A 在当前行的末尾输入文本


i 进入编辑模式,在光标前面插入


I 在当前行前输入文本
```

2)移动光标

h 光标左移一个字符
	
	k 光标上移一行
	
	j 光标下移一行
	
	l 光标右移一个字符
	
	w 光标右移至下一个单词的字首
	
	W 光标右移到下一个空格分割单词的字首
	
	e 光标右移至本单词的字尾
	
	E 光标右移至下一个空格分割的字尾
	
	b 光标左移至上一个单词的字首
	
	B 光标左移到上一个空格分割单词的字首
	{ 光标向前移至上一个段落的开头
	
	} 光标向后移至下一个段落的开头
	
	$ 调转到行尾
	
	
	0 调转至行首
	
	gg 文章开头
	
	
	G 文章结尾
	
	
	nG 调转到第n行

3)复制、剪切、粘贴

yw 将从光标开始往后到空格为止(包含空格)(复制一个单词)复制(之后仍处于命令模式)
		
		
		y0 将从光标开始到行首的所有字符复制(之后仍处于命令模式)
		
		y$ 将从光标开始到行末的所有字符复制(之后仍处于命令模式)
		
		
		Y同y$
		
		
		y( 复制到上一句开始的所有字符
		
		y) 复制到下一句开始的所有字符
		
		y{ 复制到上一段开始的所有字符
		
		y} 复制到下一段开始的所有字符
		
		yy 复制当前行    
		
		
		nyy 复制从当前行后开始数n行
		
		
		 
		
		 
		
		x 将光标处显示的字符移到缓冲区(之后仍处于命令模式)
		
		
		X 将光标显示的光标之前的字符移到缓冲区(之后仍处于命令模式)
		
		
		dw 将从光标开始往后到空格为止(包含空格)(删除一个单词)移到缓冲区(之后仍处于命令模式)
		
		
		dG 将光标所在行到文末的所有行删除
		
		
		cw 将从光标开始往后到空格为止(包含空格)(删除一个单词)移到缓冲区,之后进入编辑模式
		
		
		ce 同cw
		
		cb 将从光标开始往前到空格为止(包含空格)(删除一个单词)移到缓冲区,之后可以直接输入新的文本
		
		d0 将从光标开始到行首的所有字符移到缓冲区(之后仍处于命令模式)
		
		
		d$ 将从光标开始到行末的所有字符移到缓冲区(之后仍处于命令模式)
		
		
		D 同d$
		
		
		d( 删除到上一句开始的所有字符
		
		d) 删除到下一句开始的所有字符
		
		d{ 删除到上一段开始的所有字符
		
		d} 删除到下一段开始的所有字符
		
		d)
		
		c$ 将从光标开始到行末的所有字符移到缓冲区,之后进入编辑模式 
		
		
		C 同c
		
		$dd 将当前行移到缓冲区(剪切操作)(之后仍处于命令模式)
		
		
		ndd 将从当前行往后开始数n行移到缓冲区
		
		
		cc 将当前行移到缓冲区(剪切操作),之后进入编辑模式
		
		
		ncc 将从当前行往后开始数n行移到缓冲区,之后进入编辑模式
		
		 
		
		 
		
		p 光标下一行开始粘贴一行/光标之后字符串
		
		P 光标上一行开始粘贴一行/光标之前字符串

4)替换

		r 替换单个字符,光标显示的那个
		R 一直替换字符,直到按esc截至	

5)撤销

		u 撤销上一步
		
		U 撤销到上一次保存

6)查找

/ 光标处向后查找字符

? 光标处向前查找字符

n 显示搜索命令定位到的下一个字符串


N 显示搜索结果定位到的上一个字符串


b 光标移动到当前单词/上一个单词的开始


w 光标移动到下一个单词的开始


e 光标移动到当前单词/下一个单词的末尾

7)文本选择

v 按字选择

V 按行选择

8)文本移动

n>> 光标当前行及其下面共n行都右移 8 个空格

n<< 光标当前行及其下面共n行都左移 8 个空格

9)重复上一步

. 重复上一步命令,减少重复操作

10)滚屏命令

<C-u> <PgUp> 将屏幕向前(文件头方向)翻滚半屏

<C-d> <PgDn> 将屏幕向后(文件尾方向)翻滚半屏

<C-b> 将屏幕向文件首方向翻滚一整屏

<C-f> 将屏幕向文件尾方向翻滚一整屏

11)保存退出

ZZ 同末行命令模式下的 :wq

注意:所输入的命令并不回显在屏幕上。

    若输入不是vim的合法的指令,Vim会鸣笛报警

2编辑模式

撤销

3末行命令模式(ex 转义模式)

这些操作如设置快捷键等退出之后再次进入就不管用了,若要永久起作用就写配置文件

1)新建、打开、保存、退出
进入末行命令行模式

:e filename 创建新文件,在同一个目录

:n filename 加载其他文件,在同一个目录

:w 相当于

:w filename 另存为一个新的文件

:w!

:w! filename

:q

:q!

:wq

:wq! 不是所有人都可以使用,只有文件所有者与root才能在文件仅r–的情况下使用

:x 强制退出

2)跳转、删除、撤销、导入

:n 调转到改行

:n1,n2d 删除从n1到n2的行

:e! 撤销到上一次保存的结果

:r /etc/issue 在光标处导入一个新文件

:!命令 在不退出vi的情况下执行命令

:r !date //将文本编辑时间直接输入到光标所在位
3)替换

:imj 将第 i 行替换到第 j 行下一行

:10m5 //将第10行放到第5行后面
:%s/要替换的字符串/新的字符串/g 进行全文替换

/* % 表示全文 * $ 表示文件尾 * . 当前行 */ :.,$s/prinft/printf/g //将当前行到结尾当中的prift替换成printf
:n1,n2s/要替换的字符串/新的字符串/g 在n1到n2之间替换,不询问

:1,4s/^/#/g //在1到4行的行首插入
:n1,n2s/要替换的字符串/新的字符串/c 在n1到n2之间替换,询问

:1,4s/^/#/c //在1到4行的行首插入,并且询问
**

二、vim的一些小技巧

**
1.Vim的分割窗口split命令

:split 水平分割

:vsplit 垂直分割

:split hello.c //分割窗口打开hello.c:new    //分割形式新建文件
:close 关闭窗口

vim -o one.txt two.txt three.txt //终端下使用的,就是一次性打开3个文件并使用分割形式显示
<C-w> 窗口间跳转

<C-w> h 跳转到左边的窗口
<C-w> j 跳转到下面的窗口
<C-w> k 跳转到上面的窗口
<C-w> l 跳转到右边的窗口

<C-w> t 跳转到最顶上的窗口
<C-w> b 跳转到最底下的窗口

2.Vim的文件间切换命令

//vim还未启动,同时打开多个文件vim file1 file2 ... filen  //可以打开所有想要打开的文件//vim启动以后,想打开其他文件:open file
:bn—下一个文件
:bp—上一个文件

3.Vim的便捷设置

:set nu 显示行号

:set nonu 不显示行号

:set hlsearch 搜索的词显示高亮

:set nohlsearch 搜索的词显示高亮

:syntax on 语法高亮

:syntax off 语法取消高亮

3.Vim定义快捷键
:map I# ctrl加上v在加上需要定义的快捷键(这里举例是p)定义该快捷键是等价于在命令模式将每一行行首添加一个#

Vim的基本操作

:map iyangbingxue19990502@gmail.com 定义插入邮箱地址,并退回到命令模式

Vim的基本操作

:ab mymail yangbingxue19990502@gamil.com 在文中将mymail替换成yangbingxue19990502@gmail.com 只要敲击完之后按“Space”或者”Enter”就会替换

Vim的基本操作

:unab mymail 取消mymail关联

Vim的基本操作

三、永久生效
在用户的家目录下创建.vimrc将操作写入即可(里面只能放一些编辑模式的命令)

针对root用户

#> vi /root/.vimrc //针对root用户 set nu 设置行号 map ^p I# //定义快捷键 ab mymail yangbingxue19990502@gamil.com //定义快捷键

针对普通用户Tony

#> vi /home/Tony/.vimrc (针对普通用户Tony) set nu 设置行号 map ^p I# //定义快捷键 ab mymail yangbingxue19990502@gamil.com //定义快捷键

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值