vim的使用(超详细)

目录

一、vim模式

回到目录

1、正常模式:按Esc或者Ctrl+[进入 左下角显示文件名或者为空

2、插入模式:按i进入 左下角显示--INSERT—

3、可视模式:按v进入 左下角显示--VISUAL—

二、打开文件

回到目录

  • vim file_name 打开单个文件

  • vim file_name1 file_name2 同时打开多个文件

  • :open [new_file] 在vim窗口打开一个新文件

    例子:当前打开1.txt

    • :open! 放弃1.txt的修改,重新打开未修改的文件

    • :open 2.txt 直接退出对1.txt的修改,打开2.txt

三、插入命令

回到目录

  • i 在当前位置前一格插入

  • I 在当前行首插入

  • a 在当前位置后一格插入

  • A 在当前行尾插入

  • o 在当前行后一行插入

  • O 在当前行前一行插入

四、查找命令

回到目录

1、简单查找

  • /text 查找含有text的单词,按n查找下一个,按N查找上一个

  • ?text 反向查找,同/text

  • :set ignorecase 忽略大小写的查找

  • :set noignorecase 不忽略大小写的查找

2、快速查找

  • */# 向后/前查找游标所在处的单词

3、精确查找

  • /text\> 表示查找text位于尾部的单词

  • /^text 表示查找text位于行首的行

  • /text$ 表示查找text位于行尾的行

五、替换命令

回到目录

  • ~ 反转游标字母大小写

  • r 在正常模式下替换当前字符

  • R 在正常模式下连续替换字符

  • cc 删除当前行,并进入插入模式

  • cw 删除当前单词,并进入插入模式

  • :%s/old/new/g 用new替换old,加g表示全部替换,不加g表示替换所有行的第一个匹配

六、撤销和重做

回到目录

  • u 撤销

  • U 撤销对整行的操作

  • Ctrl + r 撤销的撤销

七、删除命令

回到目录

1、以字符为单位删除

  • x 删除当前字符

  • nx 删除当前字符n次

  • X 删除当前字符的前一个字符

  • nX 删除当前字符的前n个字符

  • D 删除当前字符至行尾(D=d$)

  • d^ 删除当前字符至行首

2、以单词为单位删除

  • dw 删除当前字符到单词尾

  • daw 删除当前字符所在单词

3、以行为单位删除

  • dd 删除当前行

  • dj 删除下一行

  • dk 删除上一行

  • dgg 删除当前行至文档首部(dgg=d1G)

  • dG 删除当前行至文档尾部

  • kdgg 删除当前行之前所有行(不包括当前行)

  • jdG 删除当前行之后所有行(不包括当前行)

  • nd 删除当前行开始的n行

  • :m,nd 删除m~n行

  • :n,$d 删除n行及以后所有行

  • J 合并两行

八、复制粘贴

回到目录

  • yy 复制光标所在行(nyy表示复制复制n行)

  • y^ 复制至行首(y^=y0)

  • y$ 复制至行尾

  • yw 复制一个单词(ynw表示复制n个单词)

  • yG 复制至文本末

  • y1G 复制至文本开头

  • p(小写) 代表粘贴至光标后面

  • P(大写) 代表粘贴至光标前面

九、剪切粘贴

回到目录

  • dd 剪切当前行

  • ddp 可用于实现当前行与下一行交换位置

    正常模式下按v(逐字选择)或V(逐行选择)进入可视模式,选择后按下d进行剪切

  • ndd 剪切当前行之后n行

  • :m,nd 剪切m~n行

  • :1,10 m 20 将第1~10行移动到20行之后

十、退出保存

回到目录

  • :wq 退出并保存

  • zz 退出并保存

  • :q! 强制退出

  • :e! 放弃所有修改,并打开原来文件

  • zz 保存并退出

  • :sav(eas) new.txt 另存为一个新文件,退出原文件编辑并不保存

  • :f(ile) new.txt 新开一个文件,并退出原文件的编辑且不会保存

十一、移动命令

回到目录

1、以字符为单位移动

  • f/F 定位字符

  • fx 找到光标后第一个位x的字符

  • 3fd 找到光标后第三个为d的字符

  • F 同F,反向查找

2、以行为单位移动

  • 10h/10l/10k/10j 左/右移动10个字符,上/下移动10行

  • $ 移动到行尾

  • 3$ 移动到下面3行的行尾

3、以单词为单位移动

  • w 向前移动一个单词

  • b 向后移动一个单词

4、以句为单位移动

  • ( 移动到句首

  • ) 移动到句尾

5、具名标记跳转

  • ma 将光标处标记为a(可以为任意字符),使用’a跳转到此处

  • :marks 查看所有标记

  • :dell! 可以删除所有标记

6、打开文件时指定跳转

  • vim + test.txt 代开test文档时直接跳转到最后一行

  • vim test.txt +n 代开test文档时指定跳转到20行

7、返回上一次位置

  • Ctrl+o

十二、排版功能

回到目录

1、缩进

  • :set shift width? 查看缩减值

  • :set ts=4 设置缩减值为4

  • >> 向右缩进

  • << 向左缩减

2、排版

  • :ce 居中

  • :le 靠左

  • :ri 靠右

十三、注释命令

回到目录

1、多行注释

​ 按Ctrl+v进入visual block模式,然后按j/k选中多行,按大写I,然后插入注释符号(如//),再按esc即可注释多 行

2、取消多行注释

​ 按Ctrl+v进入visual block模式,按h/l选中多列(如//要选中两列),再按j/k选择需要取消注释的行,最后按d即 可

3、复杂注释

  • :%s/^/#/g 注释整个文档(用#注释)

  • :%s/^#//g 取消整个文档的注释(指定#注释)

十四、调整视野

回到目录

  • zz 把当前行设置为屏幕正中央

  • zt 把当前行置于屏幕顶端

  • zb 把当前行置于屏幕底端

  • Ctrl+e 向下滚动一行

  • Ctrl+d 向下滚动半屏

  • Ctrl+f 向下滚动一屏

  • Ctrl+y 向上滚动一行

  • Ctrl+u 向上滚动半屏

  • Ctrl+b 向上滚动一屏

  • :n 跳到第n行

  • nG 同跳到第n行

十五、区域选择

回到目录

在命令行模式中按下v(以字符为单位选择)或者V(以行为单位选择)加入可视化模式进行选择

选择后可进行d(剪切/删除)或者y(复制)操作

  • Ctrl+v 用于在各个模式中跳转(V—>v v—>普通模式 普通模式—>v)

  • ggVG 选择全文

十六、窗口控制

回到目录

1、新建窗口

  • vim -o 1.txt 2.txt 同时打开多个文件,分属多个窗口
  • :sp 3.txt 开启一个横向的窗口,编辑3.txt
  • :vsp 4.txt 开启一个纵向的窗口,编辑4.txt
  • :split 将当前窗口再复制一个出来,内容同步,游标可以不同步
  • :split 在新窗口打开2.txt的横向窗口
  • Ctrl+w s 将当前窗口分成两个相同的水平窗口(s可以不同时按下,没加+表示可以不同时按下)
  • Ctrl+w v 将当前窗口分成两个相同的竖直窗口
  • Ctrl+w q 等同于:q(即关闭当前窗口)
  • Ctrl+w o 打开一个视窗并且隐藏之前所有的视窗

2、窗口切换

  • Ctrl+w h 切换到左边窗口
  • Ctrl+w l 切换到右边窗口
  • Ctrl+w j 切换到下边窗口
  • Ctrl+w k 切换到上边窗口
  • :n 切换到下一个窗口(非全屏模式)
  • :N 切换到上一个窗口(非全屏模式)
  • :bn 切换到下一个窗口(全屏模式)
  • :bN 切换到上一个窗口(全屏模式)

3、窗口移动

  • Ctrl+w J 将当前视窗移至最下面
  • Ctrl+w K 将当前视窗移至最上面
  • Ctrl+w H 将当前视窗移至最左边
  • Ctrl+w L 将当前视窗移至最右边
  • Ctrl+w w 按顺序切换窗口(非全屏模式下)

4、调整尺寸

  • Ctrl+w + 增加窗口高度
  • Ctrl+w - 减小窗口高度

5、退出窗口

  • :close 关闭当前窗口
  • :close! 强制关闭当前窗口
  • :q / :wq / :q! / :wq! 功能不变
  • :w [路径/]文件名 另存为
  • :savesa [路径/]文件名 另存为
  • :only[!] 关闭所有窗口,只保留当前窗口
  • :qall 放弃所有操作并退出
  • :wall 保存所有
  • :wqall 保存所有并退出

十七、文档加密

回到目录

  • vim -x file 注意必须要保存,不然密码不生效

十八、执行命令

回到目录

  • :!pwd 在vim中执行shell命令(超级有用,写脚本时可以不用退出就能看到执行效果)
  • :!perl -c script.perl 检查perl脚本语法
  • :!perl script.perl 执行perl脚本
  • :suspend / Ctrl+z 挂起vim,回到shell,按fg可以返回vim

十九、帮助命令

回到目录

  • :help 显示整个帮助
  • :help i 显示i的帮助

二十、宏的使用

回到目录

1、应用场景

  • 多次重复输入一段相同文本
  • 生成一段序列化文本
  • 每行文本插入一段相同文本

2、宏的录制

​ 在正常模式(normal)中按下q,然后再按下宏名(只能为一个字母)

​ 比如宏名为w,则在按下qz后,底部会出现recording @z的字符串,这时按下i开始编辑也即录制宏

​ 录制完成后,退回到正常模式下(normal),按下q,底下的recording @z会消失,表示宏已经录制完成

3、宏的运行

​ 在正常模式(normal)按下@接宏名,比如说@z,就会运行宏一次

​ 若要运行宏多次,就按下次数接@宏名,如3@z

4、利用宏生成序列化文本

​ 只要记住宏就是重复我们录制的动作的工具,就可以理解了,举例如下

# 首先输入一个数字
#	开始录制宏,如按下qy
# 复制该行数字到下一行,按下Ctrl+a让这个数字加1,再按下q结束录制
# 接下来使用@y就可以重复录制的动作

​ 补充:Ctrl+a和Ctrl+x可以使数字增加或减小1

5、利用宏在文件的每一行添加相同文本

​ 同上,理解宏的意义,就是重复我们录制的动作,举例如下

# 现在假设文本中有下面这么几行数据,我们要把这些数据插入数据库中,需要使用INSERT语句,为了避免重复性动作,可
# 以使用宏来录制我们的动作,过程如下
# 1、光标移动到第一行开始,按下qy(宏名为y)开始录制
# 2、接下来的动作都会被录制下来,所以要仔细操作
#    先按下i开始编辑,输入INSERT INTO TABLE VALUES(
#		 这时按下Esc退回到正常(normal)没事下,连续按下w、yw3次(w用于移动到下一个单词,yw用于复制一个单词)
#    之后在按i编辑,把语句补全,即输入);
#    然后还要退回到正常(normal)模式,按下j跳转到下一行(要记住宏是严格执行我们录制的动作,不要遗漏动作)
#    再按下q结束录制即可,然后就可以运行宏了,注意运行时光标一定要在该行的开始处
100, xzj
101, wy
102, wjy
103, ygc
104, xxg
105, lj

二十一、vim查找与替换的扩展补充

回到目录

1、查找

  • /\<text 查找单词,该单词以text开头
  • /text\> 查找单词,该单词以text结尾
  • /^text 查找单词,该单词位于一行的首部
  • /text$ 查找单词,该单词位于一行的尾部
  • /text* *表示通配符
  • /text/e e(end)表示从文件末尾开始查找
  • /text/b+3 b(begin)+3表示光标从移动到查找到的结果中的第4个开始,效果同s(start)+3

2、替换

替换的格式为:<range> s/<search_str>/<repalce_str>/<modifier>

  • range 定义执行查找和替换的范围

    • % 表示对整个文件执行

    • <start_line>,<end_line> 表示在指定范围的行内执行

  • search_str 待替换的字符串

  • replace_str 用于替换的新字符串

  • modifier 确定替换行为

    • g 表示全局替换

    • gc 在每次替换前要求确认

    • gn 忽略替换功能突出显示查找结果

3、替换的补充

  • <search_str>\c 表示搜索时忽略大小写

  • 选择gc(在每次替换前确认)时,会有以下几个选项

    • y 运行修改
    • n 禁止修改
    • a 替换全部
    • l 只替换这种情况,然后退出
  • :% s/python\|py\|py3/python3/g 该命令表示全局替换,将python、py、py3都替换为python3

资料来源:

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值