视图view

回忆上次折叠的细节

  • 折叠方式很多

    • 我们一般就用默认的就行
    • indent 很好用
    • 前提是缩进语法严格到位
    • 这样语法和排版都能同时确保
  • 打开关闭

    • zczo 是打开关闭当前行
    • zmzr 可以改变foldlevel
  • 配合 {range}

    • :{range}foldopen! 可以在范围内打开行
    • :{range}foldclose! 可以在范围内关闭行
  • 但是这个折叠
  • 一关闭vim就没了
  • 这个折叠状态可以保存住么?

mkview 创造视图

  • mkview可以创造一个视图
  • make a view

  • 这个视图存储在 viewdir
  • 我们可以查看这个 option 的位置
  • :set viewdir?
  • 位置在 $VIM/vimfiles/view 下面
  • 我们具体去看一下

viewdir

  • :!ls $VIM/vimfiles/view
  • 貌似现在还没有这个文件夹

  • 原因应该是还没有:mkview
  • 我们退出帮助
  • 回到 oeasy.javamkview

  • 无法写入?

强制创建文件夹

  • :!mkdir -p ~/.vim/view/

    • mkdir -p 是建立相应的文件夹

  • 用户文件夹和系统文件夹

    • ~/.vim/当前用户 对应的vim配置文件夹
    • /usr/share/vim/vim81系统共享 vim配置文件夹
    • 然后:mkview

创建结果

  • 成功了

  • 这个东西存在哪里呢?

    • :!ls ~/.vim/view/
    • 找到了这样一个文件

view的内容

  • 我们来看看这个里面有啥

    • :!ls ~/.vim/view/
  • 首先我们可以确定文件名

    • :!vi ~/.vim/view/+tab

  • 这是一个vim文件

    • 就像~/.vimrc一样
    • ~/.vimrc是当前用户的vim配置
    • 这个 ~/.vim/view/XXX.vim 是当前窗口 make view
    • 保存了当前窗口的一些 option
  • 载入的时候会加载 localoption 到当前 window

    • 用的命令是:setlocal ...=...
    • 所以只对当前 window窗口 有用
    • 相对:set ...对所有窗口有用
  • 其实我主要关心的是折叠信息的保存还有光标位置的情况

保存状态

  • 我们重新回到oeasy.java
  • 把光标位置设置在 8,20

  • 然后 :mkview
  • 进行一些简单的折叠

    • :set foldcolumn=4
    • :set foldmethod=indent
    • zC
  • gg

装载状态视图

  • 然后 :loadview
  • 发现一切都回来了!!!

    • 光标位置和折叠信息都在
  • 我觉得这还是挺实用的

具体存储的信息

  • 我们可以看到
  • 除了 localoption 之外
  • 折叠和位置的信息也可以保留到 view

  • 如果我关闭了再打开oeasy.java

    • 还能loadview么?
  • 试试

加载视图

  • 重新打开oeasy.java

    • :loadview
    • 加载视图成功
    • 这样就能回到上次编辑的位置了
    • 但是我能够定义多个编辑位置么?
    • 这样我就可以像切地图位置一样切换光标位置了?

多个视图view

  • 找一个位置比如(8,20)

    • 坐标可以在 statusline 里面的 ruler 中找到
    • 定义一个 view
    • :mkview
  • 再找一个位置(1,1)

    • :mkview 1
  • 恢复到第一个位置

    • :loadview
  • 恢复到第二个位置

    • :loadview 1
  • 总共九个数字可以给你用

    • 还可以自定义view的名字
    • 可以说是很方便了
    • 随意传送
  • 其实这个用ma也能做到

    • 视图view里面是不只是可以保存光标位置
    • 一个view里面到底保存了什么?

view内容

  • 打开的文件列表(参数),也就是:args,包括索引顺序
  • 当前文件
  • 当前窗口的本地属性

    • 缩写(abbreviations)
    • 映射(mappings)
  • 折叠(fold)
  • 为什么可以保存这么多东西呢?

view选项

  • :h viewoptions可以看到view保存内容的选项

    • 可以选择保存什么不保存什么
    • 内容是一个列表
  • :set viewoptions?

    • 目前是默认的
    • :set viewoptions=folds,options,cursor,curdir
  • curdir指的是当前路径

    • 在使用:view .的时候可以明确相对路径
    • view 保存了好多配置信息
    • 但是不会影响到最终编辑的文档
    • 是蓝布棉门帘

总结

  • 这次了解到了:mkview:loadview
  • 保存和加载视图
  • 可保存内容的选项在 viewoption
  • 还可以保存多个视图

    • 在整个文档中跳来跳去
  • 视图里面可以有很多本地窗口的设置

    • 折叠
    • 缩写
    • 映射
  • 那么到底什么是缩写(abbreviations)和映射(mappings)呢?
  • 下次再说!

[Github地址] (https://github.com/overmind1980/oeasyvim)

[Gitee地址] (overmind1980/oeasyvim)

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

oeasy教您玩转vim - 71 - # 视图view的更多相关文章

  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. (1)semantic-kernel入门课程

    (1)semantic-kernel入门课程 获取OpenAI在线API 由于在国内的限制,我们并没有办法直接访问OpenAI,所以下面的教程我们会推荐使用https://api.token-ai.c ...

  2. uniapp-vue3-oadmin手机后台实例|vite5.x+uniapp多端仿ios管理系统

    原创vue3+uniapp+uni-ui跨端仿ios桌面后台OA管理模板Uni-Vue3-WeOS. uniapp-vue3-os一款基于uni-app+vite5.x+pinia等技术开发的仿ios ...

  3. OpenOCD + DAP-LINK调试ESP32的失败经历(2)

    背景 https://www.cnblogs.com/liteng0305/p/17018299.html 上次使用乐鑫编译好的OpenOCD失败,可能是因为没有开启CMSIS-DAP支持,手动开启编 ...

  4. claude3国内API接口对接

    众所周知,由于地理位置原因,Claude3不对国内开放,而国内的镜像网站使用又贵的离谱! 因此,团队萌生了一个想法:为什么不创建一个一站式的平台,让用户能够通过单一的接口与多个模型交流呢?这样,用户就 ...

  5. SwiftUI(一)- VStack、HStack、ZStack布局

    SwiftUI是什么 懒得写,直接找了一篇博客: 初识 SwiftUI 三种布局 SwiftUI包括三种布局: VStack: 纵向布局,默认居中对齐 HStack: 横向布局,默认居中对齐 ZSta ...

  6. 未来5年,只有这种产品团队才能开启上帝视角【玩转IPD】

    一家企业如何在波涛汹涌的市场浪潮中站稳脚跟?一个团队如何快速识别风险发现机遇,成为行业的标杆?市场瞬息万变,如何准确地响应市场动向,紧跟用户需求?这些问题,已成为企业发展乃至生存的重要保障.尽管市场和 ...

  7. Mysql 创建索引语句

    mysql有哪些索引 index 普通索引 alter table table_name add index index_name(column) 最基本的索引,没有任何限制 primary key ...

  8. Console LDAP 配置解密

    之前通过短视频向大家介绍了 Console 如何集成 LDAP,但很多小伙伴反映按照视频里的配置后不成功.今天就结合小伙伴们反映的问题来跟大家详细介绍一下. Console LDAP 完整的配置参数如 ...

  9. 老张,你的服务是不是挂了?论全局 SLI 的重要性

    场景再现 你正在午休,正梦见中了彩票,突然收到电话告警,说服务对外接口 95 分位延迟突增,惊出一身冷汗,睡意全无,抓紧打开监控系统,查看服务的 SLI 指标,发现确实有问题,已经持续 1 分钟,这服 ...

  10. 🌟 简单理解 React 的 createContext 和 Provider 🚀

    在 React 应用中,我们经常需要在组件之间共享状态和数据.而 React 的 createContext 和 Provider 就是为了解决这个问题而诞生的. createContext:创建自定 ...