折叠入门

回忆上次

  • 上次学习了一种新的容器 tabs选项卡
  • tabs选项卡 包含多个选项卡tab

    • 可以列两个tab
    • 一个编写文件
    • 一个执行指令
    • 互不影响
  • 每个 tab选项卡 还可以对应多个window

    • 可以开两个 window 对比不同
    • 或者在很长的文档上下对比
    • 新建tab - :tabnew
    • 切换tab - gt、gT
    • 指定tab - 1gt 2gt 3gt
    • 关闭tab - :tabc
    • 列表tab - :tabs
  • 除了这些之外还有别的容器吗?
  • 还是有的!

折叠folding

  • 这次的容器不在 buffer缓存 之外
  • 而在 buffer缓存 内部
  • 是折叠文字
  • 怎么折叠呢?

  • 好比说我们这里有个 css 文件
  • http://github.com/overmind1980/oeasyvim.git里面
  • 找到 oeasy.css

创建折叠

  • zf6G

    • 报错了

  • :h E350

E350

  • :set foldmethod?
  • :h foldmethod

手动模式

  • 把折叠模式设置为manual

    • :set foldmethod=manual
  • 我们的folding折叠都和字母z相关

    • 因为 z 就像一摞纸张打包之后的样子
    • zf 就是打包 fold
    • zf 后面可以加 motion
  • zf4G

    • 从光标位置到第4行
    • 打一个包
    • 然后我们就可以看到这几行变成了一行
  • 真的发生了折叠!

开关折叠

  • 我们可以把光标放到折叠之后的那一行
  • zo 可以打开折叠

    • 第一个z 是折叠
    • 第二个oopen打开
  • zc 可以关闭

    • 第一个z 是折叠
    • 第二个cclose关闭
  • 这两个是折叠最常用的命令

    • 打开
    • 关闭

折叠树

  • 我们可以设置左侧折叠树foldcolumn

    • :set foldcolumn=4
    • 就在最左边有4列专门负责打开和关闭折叠的显示

      • +是关闭
      • -是打开
    • 可以反复横跳来玩

      • 只要有+、-的地方就可以zc、zo
  • 多重折叠

    • 可以折叠带有折叠的行
    • 也就是折叠的嵌套
  • 折叠多了容易乱
  • 我们要手动删除折叠

取消和再次折叠

  • 删除折叠的快捷键是 zd

    • 顾名思义

      - z 是折叠
    • d 是删除
  • 来试试
  • 在左侧foldcolumn+的地方

    • 使用命令zd删除当前光标位置对应的折叠
  • 如果折叠是嵌套的

    • 先删除内层的折叠
  • zD 是递归地删除折叠

    • 可以把当前光标的递归折叠都删除

  • 如果折叠都被删没有了

    • 可以先 zf2j 创建一些折叠
  • 好,我们把所有的折叠都删干净了
  • 然后我们试试创建折叠更好的方法

利用{}创建折叠

  • zf是创建折叠
  • zf2j中的2jmotion
  • 可以在{}内使用zfa{创建当前标记的折叠
  • 可用zfi{创建折叠
  • 效果如下图
  • 试一下

  • 能不能一把打开所有的折叠呢?

折叠层次

  • 有这样一个属性叫做foldlevel
  • 折叠层次
  • 到底怎么用呢?
  • :set foldlevel=0

    • 折叠都关了
  • :set foldlevel=1

    • 折叠都开了
  • 还是挺方便的
  • 不过每个大括号都要自己创造折叠

    • 是否能够自动创建折叠呢?

缩进折叠

  • 首先我们退出当前这个文件
  • 然后重新打开
  • 打开之后先观察当前的折叠模式

    • :set foldmethod?
  • 如果是manual

    • :set foldmethod=indent
    • 把他强制设置为缩进折叠
    • 可以把这句话写进~/.vimrc这样每次都是缩进折叠了
    • 我觉得缩进折叠还是很方便的
  • :set foldcolumn=4

    • 出现折叠树
  • :set foldlevel=0

    • 全部隐藏
  • :set foldlevel=1

    • 全部打开
  • indent折叠要求缩进必须严格符合要求

    • gg=G可以帮助你控制缩进

总结

  • 这次我们讲的是折叠
  • 折叠有很多options

    • foldlevel - 显示折叠层次
    • foldcolumn - 折叠树宽度
    • foldmethod - 折叠方式

      • manual - 手动
      • indent - 缩进
  • 折叠的定义

    • zf2j

      • 当前行和下面两行建立折叠
    • zfa{

      • 用大括号(包含)建立折叠
    • zfi{

      • 用大括号(不包含)建立折叠
  • 折叠的删除

    • zd
  • 折叠的打开和关闭

    • zo open
    • zc close
    • :set foldlevel=1 设置折叠层次
  • 这个缩进折叠可以对于程序文件使用么?
  • 下次再说!

[Github地址] (GitHub - overmind1980/oeasyvim: 这是oeasy制作的的一套关于vim的教程 可以在 https://www.lanqiao.cn/teacher/courses/2840 做实验 邀请码FJWYIMGB 本教程从0基础开始,到精通vim配置,和高级命令。希望能让vim是你的开发更高效。)

[Gitee地址] (overmind1980/oeasyvim)

[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 vim_Linux - 蓝桥云课)

oeasy教您玩转vim - 69 - # 折叠folding入门的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  9. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  10. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. Java面试题:SpringBoot异常捕获,让程序“免疫”一切错误!

    在Spring Boot应用程序中,捕获全局异常是一个重要的方面,它可以帮助我们处理在应用程序运行时可能发生的各种错误情况.通过适当地捕获和处理这些异常,我们可以改善用户体验并及时采取必要的措施. 使 ...

  2. 基于 OAuth2.0 协议的单点登录系统方案设计

    一.什么是单点登录? 单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一.SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用 ...

  3. CSS---鼠标悬浮时逐渐变大样式

    .tuijian_2:hover{ transform: scale(1.3); transition: all 1s; }

  4. vue-cli 中使用 Axios

    安装 axios: 1 npm install axios --save-dev 接着在src目录下创建一个http.js脚本中,导入axios并通过create方法实例化一个http请求对象,这样我 ...

  5. CSS——渐变色

    <!DOCTYPE html> <html> <head> <style> div { width: 210px; height: 50px; floa ...

  6. WPF+Emgucv实现在图像上画出感兴趣的区域 并进行掩膜获取 得到图像均值 和简单的 漫水填充

    <Grid.RowDefinitions></Grid.RowDefinitions> <Grid> <UniformGrid Columns="2 ...

  7. File Browser 安装及使用

    最后更新时间:2019年1月16日 大家如果想随时随地查看和修改文件,一般会选择将文件保存至网盘,很方便,而且空间还比较大.但是由于国内的网盘环境现在比较差,再加上我们不可能把所有文件都搬上网盘,那就 ...

  8. zabbix笔记_007 zabbix 分布式架构

    1. zabbix 分布式架构[服务器数量较大的场景下使用] 现有架构: agent --> zabbix server proxy架构: agent --> zabbix proxy - ...

  9. k8s集群创建阿里云版本

    阿里云创建k8s集群实例 创建两个8G内存的抢占实例(青岛),能ssh 默认关闭防火墙,且没有交换分区 配置/etc/hosts,主机名 配置k8s仓库 配置命令补全 安装docker(需要conta ...

  10. node child_process模块exec

    child_process是Node.js自带的核心模块之一,无需额外安装即可使用. child_process模块提供了创建子进程的功能,可以在Node.js中执行外部命令.脚本文件等,并与其进行交 ...