Vim的使用

一、vim的模式


模式功能
命令模式进行查看文件内容, 修改文件, 关键的搜索等操作。
编辑模式对文件内容进行修改和内容添加
末行模式执行Linux命令, 保存文件, 进行行的跳转, 窗口分屏等操作

具体关系如图 image


二、命令模式


#以vim方式打开/创建 文件 vim 文件名

1.保存退出

ZZ

2.代码格式化

gg=G

3.光标移动

快捷键功能备注
h光标左移<--
j光标下移
k光标上移
l光标右移-->
0光标移动到行首/
$光标移动到行尾部/
gg光标移动到文件头第一行的开始
G光标移动到文件尾部最后一行的开始
nG行跳转跳转到第n行
n+回车相对跳转 n 行向下跳转n行

4.删除命令

vim中其实没有删除操作,所谓的删除都是剪切

快捷键功能备注
x删除光标后边的字符光标盖住的字符
X删除光标前边的字符/
dw删除单词要先把光标移动到单词的第一个字母上再删除,否则单词只能被删除一部分
d0删除光标前的字符串从字符串开头到光标当前位置的字符串被删除了
d$删除光标后的字符串从光标当前位置到字符串尾部的字符串被删除了
dd删除光标所在行
ndd删除n行从光标所在行开始删除n行,n对应的是一个整数

5.撤销和反撤销

快捷键功能备注
u撤销相当于windows中的 ctrl+z
ctrl+r反撤销相当于ctrl+y

6.复制和粘贴

由于vim没有删除只有剪切,所以删除的数据可以用来粘贴

快捷键功能备注
p粘贴到光标所在行的下边小写的 p
P粘贴到光标所在行的上边大写的 P
yy复制光标所在行/
nyy从光标所在行向下复制 n 行n 是要复制的行数,代表一个整数

7.可视模式

可视模式类似于windows中鼠标选择一块区域(进行多选)

v: 进入的字符可视化模式(Characterwise visual mode),文本选择是以字符为单位的。 V :进入的行可视化模式(Linewise visual mode),文本选择是以行为单位的。 ctrl-v: 进入的块可视化模式(Blockwise visual mode),可以选择一个矩形内的文本。
快捷键功能备注
h光标向左移动移动光标用于可视模式下的数据块选择
j光标向下移动移动光标用于可视模式下的数据块选择
k光标向上移动移动光标用于可视模式下的数据块选择
l光标向右移动移动光标用于可视模式下的数据块选择
d删除(剪切)删除可视模式下选中的数据块
y复制复制可视模式下选中的数据块
p数据粘贴到光标的后边粘贴在可视模式下复制或剪切的数据块
P数据粘贴到光标的前边粘贴在可视模式下复制或剪切的数据块

通过可视模式进行代码注释

1.通过 ctrl+v 进入块可视模式 2.移动光标上移(k)或者下移(j),选中多个代码行的开头 3.选择完毕后,按大写的的I键,进入“insert” 模式,输入注释符,例如: // 4.最后按ESC键 同样 Ctrl+v 进入列选择模式,移动光标把要删除的注释符选中,按下d,注释就被删除了

8.替换

命令模式下的替换功能并不强大,常用于单字符的切换

快捷键功能备注
r替换光标后的单个字符
R替换光标后的多个字符按 esc 结束替换

9.查找

/查找的关键词 回车 使用n/N切换搜索到的关键词们

搜索快捷键关键字遍历描述备注
/n从当前位置向下/
N从当前位置向上/
?n从当前位置向上/
N从当前位置向下/
#n从当前位置向上光标需要先放在被搜索的关键字上,键盘上按 #
N从当前位置向下

10.查看man文档

man 文档, 是Linux中自带的帮助文档, 可查询shell命令或标准API函数或系统自带的配置文件格式的说明等信息。

但是man也是分章节的

章节说明
section 1Linux提供的所有shell命令
section 2系统函数(由内核提供的)
section 3库调函数(程序库中的函数)
section 4特殊文件(通常在/dev目录中可以找到)
section 5系统配置文件格式和约定,比如:/etc/passwd
section 6游戏(如果有的话)
section 7杂项(包括宏包和约定)
section 8系统管理命令(通常仅针对root用户)
section 9内核例程[非标准]
#查询第一章的shell命令 man 1 cp #查询第二章的系统函数 (如: read, write, open 等) man 2 read # 查询第三章的标准的库函数 (如: fread, fwrite, fopen 等) man 3 fread # 查询第五章的特殊的配置文件说明, 比如: /etc/passwd 或者 /etc/group man 5 passwd

如果不写章节号,从第一章开始搜索查询的关键字,如果查询到了, 直接就结束了 比如当查询 printf 函数时不加章节号,就得不到我们我们想要的结果

当我们在vim的命令模式下使用man 1.找到要查看的函数,将光标放上去 2.输入 章节号 + K ,就可以了


三、编辑模式

如果要切换到编辑模式需要从命令模式通过快捷键来切换

快捷键功能
i从光标前边开始输入
a从光标的后边开始输入
o在光标下边创建新行,在新行中输入
s删除光标后边的字符,从删除位置开始输入
I从当前行行首开始输入
A从当前行行尾开始输入
O在光标上边创建新行,在新行中输入
S删除当前行,从当前行开始输入

编辑完成后,按 Esc 就可以回到命令模式


四、末行模式

1.模式切换

#命令模式切换到末行模式 : #末行模式切换到命令模式 1. 按两下 Esc 2. 在末行模式执行一个完整指令后自动回到命令模式

2.保存退出

末行模式下输入的命令功能
q退出,如果退出时文件没有保存,vim会提示是否要保存
q!直接退出,不保存 (强制退出)
w保存,不退出 (相当于在Windows中按了 Ctrl + S)
wq保存并退出
x保存并退出

3.替换

末行模式下的替换功能强大的多

末行模式下的替换命令说明
s/被替换的关键字/新的关键字/g只对光标所在行进行替换
行号1, 行号2s/被替换的关键字/新的关键字/g[行号1, 行号2] 是一个从小到大的范围,对这个范围进行替换
%s/被替换的关键字/新的关键字/g% 代表对所有行进行替换

g的功能是一整行都进行替换 如果不加g,效果是每一行的第一个关键词被替换


4.分屏

末行模式命令或者快捷键说明备注
sp水平分屏,多个窗口垂直排列多个窗口中显示同一个文件里的内容
vsp垂直分屏,多个窗口水平排列多个窗口中显示同一个文件里的内容
ctrl+w+w光标在打开的屏幕之间切换快捷键操作 (按住 Ctrl 然后按两次 w)
qall同时退出多个屏幕/
wqall同时保存退出多个屏幕/
sp 文件名分屏的同时指定打开的文件的名字在新窗口中显示指定的文件的内容
vsp 文件名分屏的同时指定打开的文件的名字在新窗口中显示指定的文件的内容

除了在命令模式下分屏, 我们也可以在使用vim打开文件的时候直接分屏, 下边是需要用到的参数: -o: 水平分屏 -O: 垂直分屏

# 水平分屏 vim -o 文件1, 文件2, 文件3 ... # 垂直分屏 vim -O 文件1, 文件2, 文件3 ...

5.行跳转

:行号 #即可跳转到指定行号

6.执行shell命令

#语法格式 :!shell命令 #eg: :!ll #回车即可

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

VBox 启动虚拟机失败

在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern

FLV文件格式

1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  

SpringBoot整合Redis乱码原因及解决方案

问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa