文章目录
- 1. 初试Vim
- 2. Vim的模式
- 2.1 Insert(插入)模式
- 2.2 Command(命令)模式
- 2.3 Visual(可视)模式
- 3.Vim基本编辑
- 3.1 快速修正与纠错(撤回)
- 3.2 快速移动大法
- 3.3 在单词之间飞舞
- 3.4 行间搜索移动
- 3.5 Vim水平移动
- 3.6 Vim页面移动
- 4. Vim编辑技巧
- 4.1 增删改查
- 4.1.1 增加字符就是进入插入模式
- 4.1.2 如何快速删除一个字符或者单词呢?
- 4.1.3 Vim快速修改
- 4.1.4 Vim查询
- 4.2 Vim搜索替换
- 5. Vim多文件操作
- 5.1 Buffer-什么是缓冲区?
- 5.2 如何在 buffer之间切换呢?
- 5.3 Window窗口
- 6. Vim文本操作
- 6.1 文本操作对象
- 6.2 Vim复制粘贴与寄存器使用
- 6.3 批量操作
- 6.4 常见的Vim补全
- 7. Vim更换配色主题
1. 初试Vim 首先进入Vim时默认是Normal模式,进入编辑模式后才可以进行正常编辑。
- 使用i(insert)进入编辑模式,开始输入文字
- i表示(insert),a(append),o(open a line below)
- 使用Esc又可以回到 normal模式。使用:wq保存退出
大部分情况下你是在浏览而不是编辑,所以Vim默认是normal模式,使用Esc从插入回到普通模式,在普通模式下可以进行各种命令操作和移动。
2.1 Insert(插入)模式 插入模式下Vim可以直接编辑,和其他编辑器一样
- 使用i(insert)a(append)o(open a line below)进入插入模式
- 使用Esc退出插入模式到normal模式
- 顾名思义该模式下用来执行Vim命令,比如保存:w,退出:q。
- 比如分屏:vs(vertical split) , :sp(split)。
- 比如使用:%s/foo/bar/g全局替换。
- 在Normal 模式下使用v进入visual模式来进行选词选句
- 使用V选择整行
- 使用ctrl+v进行方块单词选择
- 进入Vim之后首先使用a/i/o之一进入插入模式
- 编辑模式下ctrl+h 删除上一个字符,ctrl+w删除上一个单词,ctrl+u删除当前行
- 命令模式下,u撤回
- 以上快捷键也可以在linux终端下使用
- 据说编辑器作者在编写vim的时候键盘还没流行上下左右按键
- 左(h),j(下),k(上),右((1),移动也不会让手指脱离主键盘区
- 逼着自己使用hjkl一段时间之后,你会体会到它非常有效率
文章图片
3.3 在单词之间飞舞 在单词之间移动是我们浏览操作中最常使用的命令
- w/W移到下一个word/WORD开头。e/E下一个word/WORD尾
- b/B回到上一个word/WORD开头,可以理解为backword
- word 指的是以非空白符分割的单词,WORD以空白符分割的单词
- 使用f char可以移动到char字符上,t移动到char的前一个字符
- 如果第一次没搜到,可以用分号;/逗号,继续搜该行下一个/上一个
- 大写的F表示反过来搜前面的字符
- 0移动到行首第一个字符,移动到第一个非空白字符
- $移动到行尾,g_移动到行尾非空白字符
- 记住常用的0和$就可以满足日常需求了,0+w配合行首
- gg/G移动到文件开头和结尾,你可以使用ctrl+o快速返回
- H/M/L跳转到屏幕的开头(Head),中间(Middle)和结尾(Lower)
- Ctrl+u ctrl+f.上下翻页.(upword/forward)。zz把屏幕置为中间
- 进入插入模式编辑文本
- 使用a/i/o进入插入模式
- Vim在normal模式下使用x快速删除一个字符
- 使用d(delete)配合文本对象快速删除一个单词dw(daround word),dd删除行,dt)删除直到括号,d$删到行尾,d0删到开头
- d和x都可以搭配数字来执行多次,4x删4个字符
相比删除,更常用修改,一般是删除之后改成我们期望的文本
- 常用有三个,r(replace),c(change),s(substitute)
- normal模式下使用r可以替换一个字符。s替换并进入插入模式
- 使用c配合文本对象,我们可以快速进行修改
- 使用/或者?进行前向或者反向搜索
- 使用n/N跳转到下一个或者上一个匹配
- 使用*或者#进行当前单词的前向和后向匹配
如: :% s/self/this/g
- range 表示范围比如:10,20表示10-20行,%表示全部
- pattern是要替换的模式,string是替换后文本(string为空时则返回匹配数)
- g(global)表示全局范围内执行
- c(confirm)表示确认,可以确认或者拒绝修改
- n(number)报告匹配到的次数而不替换,可以用来查询匹配次数
:% s/\
5. Vim多文件操作
- Buffer是指打开的一个文件的内存缓冲区
- 窗囗是Buffer可视化的分割区域
- Tab 可以组织窗口为一个工作区
之后的修改都是针对内存中的缓冲区,并不会直接保存到文件
直到我们执行:w(write)的时候才会把修改内容写入到文件里
5.2 如何在 buffer之间切换呢? 使用:ls会列举当前缓冲区,然后使用:bn跳转到第n个缓冲区
:bpre :bnext :bfirst :blast
或者用:b buffer_name加上tab补全来跳转
5.3 Window窗口 窗口是可视化的分割区域
- 一个缓冲区可以分割成多个窗口,每个窗囗也可以打开不同缓冲区
s水平分割, v垂直分割。或者:sp 和:vs
文章图片
切换窗口命令
:e b.txt 打开不同的文件
文章图片
6. Vim文本操作 6.1 文本操作对象 之前我们已经使用过文本对象了,回忆下dw(删除一个单词)
格式
number command text object
- number表示次数,command 是命令,d (elete),c (hange)并进入插入模式,y (yank)
- text object 是要操作的文本对象,比如单词w,句子s,段落p,i表示内部inner
2dw 、 cw 、 vi"
选择引号内6.2 Vim复制粘贴与寄存器使用
- normal模式下复制粘贴分别使用y(yank)和p(put),剪贴d和p
- 我们可以使用v(visual)命令选中所要复制的地方,然后使用p粘贴
- 配合文本对象:比如使用yiw 复制一个单词,yy复制一行
- Insert模式下的复制粘贴
这个和其他的文本编辑器差不多,但是粘贴代码要注意:
- 在vimrc中设置了autoindent,导致粘贴Python 代码缩进错乱
- 这个时候需要使用:set paste 和:set nopaste解决
- Vim里操作的是寄存器而不是系统剪贴板,这和其他编辑不同
- 默认我们使用d删除或者y复制的内容都放到了“无名寄存器”
- 用x删除一个字符放到无名寄存器,然后p粘贴,可以调换俩字符
6.3 批量操作 如:给所有行加上双引号
- V G 全选
- :normal I" 在行首加入”
- :normal A" 在行尾加入”
- 使用ctrl+n和ctrl+p补全单词
- 使用ctrl+x ctrl+f补全文件名
- 使用ctrl+x ctrl+o补全代码,需要开启文件类型检查,安装插件
- 使用:colorscheme显示当前的主题配色,默认是default
- 用:colorscheme
可以显示所有的配色 - 有中意的配色后,用:colorscheme 配色名就可以修改配色
推荐阅读
- Linux|109 个实用 shell 脚本
- linux笔记|linux 常用命令汇总(面向面试)
- Linux|Linux--网络基础
- linux|apt update和apt upgrade命令 - 有什么区别()
- linux|2022年云原生趋势
- Go|Docker后端部署详解(Go+Nginx)
- 开源生态|GPL、MIT、Apache...开发者如何选择开源协议(一文讲清根本区别)
- GitHub|7 款可替代 top 命令的工具