vim学习笔记

常用命令

  • 命令可以保存到/etc/vim/vimrc配置文件中
  • set number 显示行号
  • set nu 显示行号

模式

  • i , o , a 输入模式
  • R替换模式
  • :命令模式
  • ESC普通模式
  • 视图模式(常用于块复制粘贴)

光标移动

单个字符移动:

  • h: 向左移动
  • l: 向右移动
  • j: 向下移动
  • k: 向上移动
  • xh: 向左移动 x 个字符距离

单词移动:

  • w: 将光标移动到下一个单词的开头
  • b: 将光标移动到前一个单词的开头
  • e: 将光标移动到下一个单词的词末
  • E: 移动到单词的结尾(忽略标点符号)
  • ge: 将光标移动到上一个单词的词末
  • 2w: 指定移动的次数

行移动:

  • $: 将光标移动到当前行的行尾
  • 0:将光标移动到当前行的行首
  • ^:将光标移动到当前行的第一个非空字符
  • 2|:移到当前行的第 2 列
  • fx:将光标移动到当前行的第一个字符 x 上
  • 3fx: 将光标移动到航前行的第 3 个字符 x 上
  • tx: 将光标移动到目标字符 x 的前一个字符上
  • fx 和 tx 可以通过;和,进行正向或反向重复移动
  • %: 用于符号间的移动,它会在一对()、[]、{}之间跳跃文本块移动:
  • (:移到当前句子的开头
  • ): 移到下一个句子的开头
  • {: 移到当前一段的开头
  • }:移到下一段的开头
  • [[: 移到当前这一节的开头
  • ]]: 移到下一节的开头
  • 在屏幕中移动
  • xG: 跳转到指定的第 x 行,G 移动到文件按末尾,
  • ``(2 次单引号)返回到跳转前的位置
  • gg: 移动到文件开头
  • x%: 移动到文件中间,就使用 50%
  • H: 移动到 home
  • M: 移动到屏幕中间
  • L: 移动到一屏末尾
  • ctrl+G: 查看当前的位置状态

滚屏与跳转

  • 半屏滚动: ctrl+u/ctrl+d
  • 全屏滚动: ctrl+f/ctrl+b
  • 定位光标的位置
  • zz:将光标置于屏幕的中间
  • zt: 将光标移动到屏幕的顶部
  • zb:将光标移动到屏幕的底部
  • 设置跳转标记
  • mx,my,mz 设置三个位置
  • x,y,z 跳转到设置

文本插入操作

  • i: 在当前光标的前面插入字符
  • a: 在当前光标的后面追加字符
  • o: 在当前光标的下一行行首插入字符
  • I:在一行的开头添加文本
  • A:在一行的结尾处添加文本
  • O:在光标当前行的上一行插入文本
  • s:删除当前光标处的字符并进入到插入模式
  • S:删除光标所在处的行,并进入到插入模式
  • u: 撤销修改

文本删除

字符删除

  • x: 删除当前光标所在处的字符
  • X:删除当前光标左边的字符

单词删除

  • dw: 删除一个单词(从光标处到空格)
  • daw: 删除光标所在的整个单词(包括空白字符)
  • diw: 删除整个单词文本,但是保留空格字符不删除
  • d2w: 删除从当前光标开始处的 2 个单词
  • d$: 删除从光标到一行末尾的整个文本
  • d0: 删除从光标到一行开头的所有单词
  • dl: 删除当前光标处的字符=x
  • dh: 删除当前光标左边的字符=X

行删除

  • dd: 删除当前光标处的一整行=D
  • 5dd: 删除从光标开始处的 5 行代码
  • dgg: 删除从光标到文本开头
  • dG: 删除从光标到文本结尾

行合并

  • J:删除一个分行符,将当前行与下一行合并

文本复制、剪切与粘贴

  • y: 复制,p:粘贴
  • yw: 复制一个单词
  • y2w: 复制 2 个单词
  • y$: 复制从当前光标到行结尾的所有单词
  • y0: 复制从当前光标到行首的所有单词
  • yy: 复制一整行
  • 2yy: 复制从当前光标所在行开始的 2 行

复制文本块

1.首先进入 visual 模式:v
2.移动光标选择文本
3.复制与粘贴的操作

文本修改与替换

  • cw: 删除从光标处到单词结尾的文本并进入到插入模式
  • cb: 删除从光标处到单词开头的文本并进入到插入模式
  • cc: 删除一整行并进入到插入模式
  • ~: 修改光标下字符的大小写
  • r: 替换当前光标下的字符
  • R:进入到替换模式
  • xp: 交换光标和下一个字符

组合命令使用

更改删除复制从光标位置到…
cHdHyH屏幕顶端
cLdLyL屏幕低端
c+d+y+下一行
c5ld5ly5l本行的第 5 列
2c)2d)2y)往下第 2 个句子
c{d{y{上一段
cGdGyG文件结尾
c13Gd13Gy13G第 13 行

文本查找与替换

字符串查找

  • /string 正向查找
  • ?string 反向查找

设置高亮显示

  • :set hls
  • *按键将当前光标处的单词高亮显示
  • 使用 n 浏览下一个查找高亮的结果

字符串替换

  • 😒/old/new 将当前行的第一个字符串 old 替换为 new
  • 😒/old/new/g 将当前行的所有字符串 old 替换为 new
  • :90s/old/new/g 将指定行的所有字符串 old 替换为 new
  • :90,93s/old/new/g 将 90 到 93 行的所有字符串 old 替换为 new
  • :%s/old/new/g 将文本中所有的字符串 old 替换为 new
  • :%s/old/new/gc 依次替换每个字符串关键字
  • :%s/^struct/int/g 将所有以 struct 开头的字符串替换为 int

修改的撤销、重做和保存

  • u: 撤销上一步的操作。
  • Ctrl+r: 将原来的插销重做一遍
  • U:恢复一整行原来的面貌(文件打开时的文本状态)
  • q: 若文件没有修改,直接退出
  • q!: 文件已经被修改,放弃修改退出
  • wq: 文件已经被修改,保存修改并退出
  • e!: 放弃修改,重新回到文件打开时的状态

编辑多个文件

文件和缓冲区的区别

  • 文件是保存在磁盘上的,而打开的文件的文件是在内存中
  • 在内存中有一个缓冲区,用来存放打开的文件
  • vim 每次打开文件时都会创建一个缓冲区,vim 支持打开多个文件
  • :buffers 查看缓冲区列表==ls
  • :buffer N 根据缓冲区列表的编号跳转到指定缓冲区
  • :bnext/bprev 遍历缓冲区列表
  • :bfirst/blast 分别调到缓冲区列表的开头和结尾
  • :write 将缓冲区的修改保存到磁盘上
  • :edit! e!放弃缓冲区的修改,恢复到文件打开时的状态
  • :edit file 编辑另一个文件
  • :wnext 保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件
  • :set autowrite

标签页与折叠栏

  • 标签页的新建:tabedit file/tab split
  • 标签页的切换: tabn/tabp
  • 按键:gt/gT
  • 标签页的关闭: tabclose
  • 关闭当前的标签页:tabonly

创建一个折叠

  • zf200G: 将光标和 200 行之间的代码折叠起来

折叠的打开与关闭

  • za: 打开和关闭折叠
  • zr/zm: 一层一层地打开和关闭折叠
  • zR/zM: 分别打开和关闭所有的折叠

折叠键的光标移动

  • zj: 跳转到下一个折叠处
  • zk: 跳转到上一个折叠处

删除折叠

  • zd: 删除光标下的折叠
  • zD: 删除光标下的折叠以及嵌套的折叠
  • zE: 删除所有的折叠标签
  • 创建的折叠当退出 vim 之后失效

多窗口操作

分割窗口

  • split/vsplit filename
    在这里插入图片描述
    在这里插入图片描述

窗口间跳转

  • ctrl+w hjkl
  • ctrl+w w

移动窗口

  • ctrl+w HJKL

调整窗口尺寸

  • ctrl+w +/- 调整窗口的高度
  • ctrl+w </> 调整窗口的宽度
  • ctrl+w = 所有的窗口设置相同的尺寸
  • :resize n 将当前窗口尺寸调整为 N 行

关闭窗口

  • close: 关闭一个窗口
  • qall: 退出所有窗口
  • qall!: 放弃修改,退出所有窗口
  • wqall: 保存并退出所有窗口
  • wall: 保存所有窗口
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值