Vim 参数argument详解

回忆上次

总结简化出窗口的全键盘操作

  • 新建与退出
    • ctr-ws 相当于:sp[lit] 上下分割
    • ctrl-wv 相当于:vsp[lit] 左右分割
    • ctrl-wq 相当于:q[uit]
    • ctrl-wo 相当于on[ly]全屏
  • 多窗口操作
    • 所有窗口都有
    • 全退出:qall
    • 全保存:wall
    • 全保存并退出:wqall
    • 强制退出:qall!
  • 选择当前窗口
    • ctrl-wh 选择左边的窗口
    • ctrl-wj 选择下边的窗口
    • ctrl-wk 选择上边的窗口
    • ctrl-wl 选择右边的窗口
  • 调整宽度
    • ctrl-w= 所有窗口尽量高度宽度都相等
    • ctrl-w- 当前窗口高度降低
    • ctrl-w+ 当前窗口高度升高
    • ctrl-w< 当前窗口宽度降低
    • ctrl-w> 当前窗口宽度升高

同时打开三个文件

  • 首先man vi查到打开三个文件的方式
    • vi o1 o2 o3
      • 命令是vi
      • o1 o2 o3是参数列表( arguments list)
      • 列表里有3个参数 argument
      • 我们可以在 :ar[gs] 查看所有参数

图片描述

操作参数列表

  • arga
    • 添加到参数列表
    • argument add
    • :arga o4
      • 添加 o4 到参数列表
      • :args 可以看见 o4 进入了参数列表
    • :arga ~/.vimrc 添加一个实际存在的文件
      • :args 可以看见 .vimrc 进入了参数列表
      • ls 可以看到他也进入了 buffer list
      • b .vimrc 可以把当前 window 切换到 .vimrc 这个 buffer
  • :argd
    • 从参数列表删除
    • argument delete
    • argd o4
      • 从参数列表删除o4
      • :args
      • 可以看见 o4 从参数列表消失
    • argd /home/shiyanlou/.vimrc
      • 从参数列表删除 .vimrc
      • :args
      • 可以看到.vimrc从参数列表消失
      • 但是 buffer 还在
  • 参数argument和缓存buffer之间什么关系?

参数argument和缓存buffer

  • arguements是在打开vim时候打开的参数 arguement 文件列表
    • 一开始打开的文件进入参数列表
    • 在内存中加载成为一个个缓冲buffers
    • 也进入缓冲列表 :buffers
  • 这个时候再新打开文件:e o5
    • o5会进入buffers list
    • 但是不会进入arguments list
  • 如果想让他进入的话
    • 就需要:arga o5
  • 想在arguments list删除的话
    • 就需要:argd o5
  • 想在buffers list删除的话
    • 可以bd3或者bd o2
  • 参数 argument 列表和缓存 buffer 列表 关系
    • 他们两个除了开始的时候是一致
    • 后来完全是两个列表
    • 需要分别维护
  • 我们为什么理清这些东西呢
    • 因为以后可能会有针对 缓冲buffers 文件列表的批处理
    • 也会有针对 参数arguments 文件列表的批处理

多参数多窗口

  • 参数多于1的时候可以直接打开多个窗口
    • 开关是-o
    • vi -o o1 o2 o3
    • 这样就可以横向打开3window,每个argument对应一个
  • 或者vi -O o1 o2 o3
    • 纵向打开3个文件

图片描述

vim中打开多个文件

  • 首先在terminal做准备
    • ls -lah > oeasy.txt
    • cp oeasy.txt o2z.txt
    • vi
    • :arga *.txt
  • 有没有进入参数argument列表
    • :args
  • 有没有进入缓冲buffer列表?
    • :buffers
  • 如果:arga */*.txt
    • 可以加载一层目录下面的txt文件
  • 退出vim之后
  • 再来观察
    • e *.txt不能执行
    • e 不支持通配符
    • e o3z.txt可以把文件加载到buffer list
    • 但不进入argument list

直接打开

  • 多个文件作为argments list参数列表
  • terminal中运行
    • sudo find / -mindepth 3 -maxdepth 4 -name passwd
    • 可以用sudo权限找到所有3层目录到4层目录中
    • 名字含有passwd的文件列表
  • 这个文件列表可以交给vi作为argments list参数列表
    • sudo find / -mindepth 3 -maxdepth 4 -name passwd | xargs vi
  • 这样打开之后
    • argments list 参数列表
    • buffers list 缓冲列表
    • 都自动加载好了
  • 如果有不需要的
    • 可以:bd4删除缓冲buffer
    • :argd filename来删除参数argument
  • 如果有需要添加的
    • :e filename 添加缓冲buffer 
    • :arga filename添加 参数argument

图片描述

总结

  • 我们这次参数列表 arguments list
  • 所谓参数列表指的是 vim 打开的 参数列表
  • 参数会加载到内存中成为 buffer
  • 参数的控制
    • :arga filename添加 参数
    • 此操作支持*可以打开多个文件
    • :argd filename来删除参数
    • :args 查询参数列表
  • 缓冲的控制
    • :bd filename来删除缓存
    • :e filename来打开缓存
    • ls可以列出缓存列表
  • 可以在terminal中配合find来找到文件
    • 然后作为参数给vim
    • sudo find / -mindepth 3 -maxdepth 4 -name passwd | xargs vi
  • 精准地控制了参数列表或者缓冲列表
  • 这两个可以怎么用呢?🤔
  • 下次再说 👋

教程来源于Github,感谢overmind1980大佬的无私奉献,致敬!

技术教程推荐

许式伟的架构课 -〔许式伟〕

Swift核心技术与实战 -〔张杰〕

爆款文案修炼手册 -〔乐剑峰〕

如何落地业务建模 -〔徐昊〕

如何讲好一堂课 -〔薛雨〕

攻克视频技术 -〔李江〕

Dubbo源码剖析与实战 -〔何辉〕

Python实战 · 从0到1搭建直播视频平台 -〔Barry〕

AI 应用实战课 -〔黄佳〕