Vim 视图view详解

回忆上次折叠的细节

mkview 创造视图

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

图片描述

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

viewdir

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

图片描述

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

图片描述

  • 无法写入?

强制创建文件夹

  • :!mkdir -p ~/.vim/view/
    • ~/.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 是当前窗口 makeview
    • 保存了当前窗口的一些 option
  • 载入的时候会加载 localoption 到当前 window
    • 用的命令是:setlocal ...=...
    • 所以只对当前 window窗口 有用
    • 相对:set ...对所有窗口有用
  • 其实我主要关心的是折叠信息的保存还有光标位置的情况

重来

  • 我们重新回到oeasy.java
  • :set foldcolumn=4
    • 进行一些简单的折叠
  • 把光标位置设置在8,20
  • 然后 :mkview
  • 然后打开所有折叠
  • 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,感谢overmind1980大佬的无私奉献,致敬!

技术教程推荐

MySQL实战45讲 -〔林晓斌〕

玩转Git三剑客 -〔苏玲〕

Electron开发实战 -〔邓耀龙〕

接口测试入门课 -〔陈磊〕

职场求生攻略 -〔臧萌〕

Vim 实用技巧必知必会 -〔吴咏炜〕

Flink核心技术与实战 -〔张利兵〕

陈天 · Rust 编程第一课 -〔陈天〕

手把手带你写一个Web框架 -〔叶剑峰〕