Vim从入门到放弃


文章目录

  • 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保存退出
2. Vim的模式 为什么Vim进入之后不想其他编辑器一样直接增删改查?
大部分情况下你是在浏览而不是编辑,所以Vim默认是normal模式,使用Esc从插入回到普通模式,在普通模式下可以进行各种命令操作和移动。
2.1 Insert(插入)模式 插入模式下Vim可以直接编辑,和其他编辑器一样
  • 使用i(insert)a(append)o(open a line below)进入插入模式
  • 使用Esc退出插入模式到normal模式
2.2 Command(命令)模式 Normal模式下输入冒号之后执行命令,比如保存退出:wq
  • 顾名思义该模式下用来执行Vim命令,比如保存:w,退出:q。
  • 比如分屏:vs(vertical split) , :sp(split)。
  • 比如使用:%s/foo/bar/g全局替换。
2.3 Visual(可视)模式
  • 在Normal 模式下使用v进入visual模式来进行选词选句
  • 使用V选择整行
  • 使用ctrl+v进行方块单词选择
3.Vim基本编辑 3.1 快速修正与纠错(撤回)
  • 进入Vim之后首先使用a/i/o之一进入插入模式
  • 编辑模式下ctrl+h 删除上一个字符,ctrl+w删除上一个单词,ctrl+u删除当前行
  • 命令模式下,u撤回
  • 以上快捷键也可以在linux终端下使用
3.2 快速移动大法 众所周知,vim normal模式使用了反人类的hjkl来移动
  • 据说编辑器作者在编写vim的时候键盘还没流行上下左右按键
  • 左(h),j(下),k(上),右((1),移动也不会让手指脱离主键盘区
  • 逼着自己使用hjkl一段时间之后,你会体会到它非常有效率
Vim从入门到放弃
文章图片

3.3 在单词之间飞舞 在单词之间移动是我们浏览操作中最常使用的命令
  • w/W移到下一个word/WORD开头。e/E下一个word/WORD尾
  • b/B回到上一个word/WORD开头,可以理解为backword
  • word 指的是以非空白符分割的单词,WORD以空白符分割的单词
3.4 行间搜索移动 同一行快速移动的方式其实是搜索一个字符并且移动到该字符
  • 使用f char可以移动到char字符上,t移动到char的前一个字符
  • 如果第一次没搜到,可以用分号;/逗号,继续搜该行下一个/上一个
  • 大写的F表示反过来搜前面的字符
3.5 Vim水平移动 如何快速移动到一行的行首或者行尾呢?
  • 0移动到行首第一个字符,移动到第一个非空白字符
  • $移动到行尾,g_移动到行尾非空白字符
  • 记住常用的0和$就可以满足日常需求了,0+w配合行首
3.6 Vim页面移动
  • gg/G移动到文件开头和结尾,你可以使用ctrl+o快速返回
  • H/M/L跳转到屏幕的开头(Head),中间(Middle)和结尾(Lower)
  • Ctrl+u ctrl+f.上下翻页.(upword/forward)。zz把屏幕置为中间
4. Vim编辑技巧 4.1 增删改查 4.1.1 增加字符就是进入插入模式
  1. 进入插入模式编辑文本
  2. 使用a/i/o进入插入模式
4.1.2 如何快速删除一个字符或者单词呢?
  • Vim在normal模式下使用x快速删除一个字符
  • 使用d(delete)配合文本对象快速删除一个单词dw(daround word),dd删除行,dt)删除直到括号,d$删到行尾,d0删到开头
  • d和x都可以搭配数字来执行多次,4x删4个字符
4.1.3 Vim快速修改
相比删除,更常用修改,一般是删除之后改成我们期望的文本
  • 常用有三个,r(replace),c(change),s(substitute)
  • normal模式下使用r可以替换一个字符。s替换并进入插入模式
  • 使用c配合文本对象,我们可以快速进行修改
4.1.4 Vim查询
  • 使用/或者?进行前向或者反向搜索
  • 使用n/N跳转到下一个或者上一个匹配
  • 使用*或者#进行当前单词的前向和后向匹配
4.2 Vim搜索替换 :range s /pattern/string/flags
如: :% s/self/this/g
  • range 表示范围比如:10,20表示10-20行,%表示全部
  • pattern是要替换的模式,string是替换后文本(string为空时则返回匹配数)
Flag:
  • g(global)表示全局范围内执行
  • c(confirm)表示确认,可以确认或者拒绝修改
  • n(number)报告匹配到的次数而不替换,可以用来查询匹配次数
支持正则,如精确匹配单词:
:% s/\/jiao/g
5. Vim多文件操作
  • Buffer是指打开的一个文件的内存缓冲区
  • 窗囗是Buffer可视化的分割区域
  • Tab 可以组织窗口为一个工作区
5.1 Buffer-什么是缓冲区? Vim打开一个文件后会加载文件内容到缓冲区
之后的修改都是针对内存中的缓冲区,并不会直接保存到文件
直到我们执行:w(write)的时候才会把修改内容写入到文件里
5.2 如何在 buffer之间切换呢? 使用:ls会列举当前缓冲区,然后使用:bn跳转到第n个缓冲区
:bpre :bnext :bfirst :blast
或者用:b buffer_name加上tab补全来跳转
5.3 Window窗口 窗口是可视化的分割区域
  • 一个缓冲区可以分割成多个窗口,每个窗囗也可以打开不同缓冲区
  • s水平分割,v垂直分割。或者:sp 和:vs
Vim从入门到放弃
文章图片

切换窗口命令
:e b.txt 打开不同的文件
Vim从入门到放弃
文章图片

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复制粘贴与寄存器使用
  1. normal模式下复制粘贴分别使用y(yank)和p(put),剪贴d和p
  • 我们可以使用v(visual)命令选中所要复制的地方,然后使用p粘贴
  • 配合文本对象:比如使用yiw 复制一个单词,yy复制一行
  1. Insert模式下的复制粘贴
很多人会使用鼠标进行选中,然后使用ctrl+v或者cmd+v粘贴
这个和其他的文本编辑器差不多,但是粘贴代码要注意:
  • 在vimrc中设置了autoindent,导致粘贴Python 代码缩进错乱
  • 这个时候需要使用:set paste 和:set nopaste解决
Vim在普通模式下复制/剪切的内容去哪了?
  • Vim里操作的是寄存器而不是系统剪贴板,这和其他编辑不同
  • 默认我们使用d删除或者y复制的内容都放到了“无名寄存器”
  • 用x删除一个字符放到无名寄存器,然后p粘贴,可以调换俩字符
:set clipboard=unnamed 可以让你直接复制粘贴系统剪贴板内容
6.3 批量操作 如:给所有行加上双引号
  1. V G 全选
  2. :normal I" 在行首加入”
  3. :normal A" 在行尾加入”
6.4 常见的Vim补全
  • 使用ctrl+n和ctrl+p补全单词
  • 使用ctrl+x ctrl+f补全文件名
  • 使用ctrl+x ctrl+o补全代码,需要开启文件类型检查,安装插件
7. Vim更换配色主题
  • 使用:colorscheme显示当前的主题配色,默认是default
  • 用:colorscheme 可以显示所有的配色
  • 有中意的配色后,用:colorscheme 配色名就可以修改配色
【Vim从入门到放弃】学习自https://www.imooc.com/learn/1129,感谢PegasusWang大佬!

    推荐阅读