命令 command

回忆

  • 关于 函数function

    • 可以调用别的函数

      • :call append(0,"oeasy o2z o3z")
    • 还可以执行表达式

      • :call execute(gg=G)
  • 这样就可以把一系列的操作封装到一个函数里面

    • 然后在命令行模式调用就可以了
    • 但如果我想不用`:call Init()"
    • 而是像:ls一样执行:init,可能么?

命令列表

  • ls 是一个 命令command
  • 我们可以 :command 查看所有用户定义的命令
  • 也可以 :command TOhtml 查询指定的命令

    • 这个TOhtml命令可以按照当前的颜色模式把文件输出成html文件

自定义命令command

  • :command DeleteFirst :1delete

    • :command 自定义命令command
    • 自定义命令 叫做 - DeleteFirst
    • 自定义命令DeleteFirst 对应的操作 - :1delete 删除第1行
  • 执行命令

    • :DeleteFirst
    • 执行成功
    • 第一行被删掉

再定一个命令command

  • :command Delete5Lines :.,+5delete

    • 尝试从当前行开始删除5行
  • :Delete5Lines

    • 可以调用
    • 但是总共删除6行
    • 要注意删除从当前行到当前行下方第5行
    • 总共6行
    • u 回来修改
  • :command! Delete5Lines :.,+4delete

    • 使用!重新定义命令command
  • :Delete5Lines

    • 执行成功

恢复选区命令

  • :normal '<v'>

    • normal 模式执行后续命令
    • '< 跳到原选区开头
    • v 进入字符可视化
    • '> 跳到原选区结尾
  • command RestoreSelection :normal '<v'><cr>

    • command 定义命令
    • RestoreSelection 命令名称
    • normal '<v'><cr>

      • normal 模式下执行命令
      • <cr> 回车
  • 尝试恢复选区

    • :RestoreSelection

最初的函数

  • :call Init()

    • 调用函数
    • 注意一定是在java文件中定义这个命令
    • 因为这个函数放在了java的ftplugin中

使用命令调用函数

  • :command Init :call Init()

    • 命令定义Init
    • 执行:call Init()
  • :Init

    • 执行命令
  • :command Init

    • 观察命令
    • 这些命令和前面的删除命令很类似
    • 都没有参数

  • 其实应该定义的时候更加明确命令参数

明确参数

  • :h command

  • 明确指定0个参数

    • :command! -nargs=0 DeleteFirst :1delete
    • :command! -nargs=0 Delete5Lines :.,+4delete
  • 那如果有个命令是一个参数的怎么办呢?

一个参数

  • :command -nargs=1 Say :echo "<args>"

    • command定义一个命令
    • 只有一个参数
    • 作用是把Say后面的参数echo出来

命令执行

  • :Say oeasy say easy

    • 后面的三个单词作为一个参数
  • 想在字符串里面使用引号的话

    • 需要进行转义

多个参数调用函数

  • 定义函数

  • 实验函数

    • :call Oeasy("oeasy","o2z","o3z")
    • 成功,函数没有问题
  • 定义命令

    • :command -nargs=* Oeasy :call Oeasy(<args>)
    • 命令Oeasy执行函数Oeasy
  • 执行命令

    • :Oeasy "111","222","333"
    • 执行命令成功
  • 但是不能执行

    • :Oeasy 111,222,333
  • 重新定义命令

    • :command! -nargs=* Oeasy :call Oeasy(<q-args>)
    • 注意这里command!是重新定义命令
    • Oeasy aaa bbb ccc
    • 执行命令成功
  • 执行命令

命令范围range

  • :h command
  • /range

  • :command -range SaveIt :<line1>,<line2>write! save_file

  • 当然还可以把他变成带参数的
  • :command -range -nargs=1 SaveIt :<line1>,<line2>write! <args>

注释命令

function! Comment(line1, line2)
execute a:line1.','.a:line2.'s/^/#/'
endfunction command! -range=% Comment call Comment(<line1>,<line2>)

删除和清空命令

  • :delcommand SaveIt

    • 删除命令
  • :comclear

    • 清空命令
  • 我们最后总结一下吧

总结

  • 我们可以自己定义命令command
  • 也可以执行自定义的命令
  • 可以修改删除命令
  • 命令可以带上

    • 参数
    • 范围
  • 除了自定义命令之外
  • 系统也有一些built-in的命令
  • 系统有什么好玩的命令么?
  • 下次再说!

oeasy教您玩转vim - 84 - # 命令command的更多相关文章

  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教您玩转linux-010110内容回顾

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

  5. oeasy教您玩转linux010203显示logo

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

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

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

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

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

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

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

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

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

  10. oeasy教您玩转linux010109clear清屏

     回忆上次内容 上次讲了灵魂三问 whatis whereis which 通过这三个问题,可以对命令基本了解,我们来试一下!!

随机推荐

  1. .NET中特性+反射 实现数据校验

    .NET中特性+反射 实现数据校验 在.NET中,我们可以使用特性+反射来实现数据校验.特性是一种用于为程序中的代码添加元数据的机制.元数据是与程序中的代码相关联的数据,但不直接成为代码的一部分.通过 ...

  2. 通过 Wireshark 解密 Kerberos 票据

    前言 在使用 Wireshark 分析 Active Directory 的 Kerberos 的流量时,会遇到加密票据的情况,这对进一步探究 AD 下的漏洞篡改事件的详细过程造成了影响.在查询资料时 ...

  3. 【C#】字符串按条件替换关键字

    private string MyReplace(string json, string keyWord, string newWord, Func<string, string, bool&g ...

  4. 原生Django出现同源策略跨域的解决方式

    解决方式: 在返回数据的时候,添加响应头信息: 例如:

  5. itestwork(爱测试) 一站式接口测试&敏捷测试工作站 9.0.1 发布,ui 及Bug fix

    (一)itest 简介 itest work (爱测试)  一站式工作站让测试变得简单.敏捷.itest work 包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1 ...

  6. 网页唤起qq加群

    今天在网上大浪淘沙了一番,90%的教程都是使用的鹅厂官方的加群组件,但是有个致命bug就是这个加群组件只能唤起自己创建的群,这就很尴尬了,后来偶然发现在qq群资料那边就可以直接获取到加群的链接,害得我 ...

  7. 【WPF】Dispatcher 与消息循环

    这一期的话题有点深奥,不过按照老周一向的作风,尽量讲一些人鬼都能懂的知识. 咱们先来整个小活开开胃,这个小活其实老周在 N 年前写过水文的,常阅读老周水文的伙伴可能还记得.通常,咱们按照正常思路构建的 ...

  8. kettle从入门到精通 第五十五课 ETL之kettle Excel输入

    1. Excel输入,Microsoft Excel输入步骤的作用是从Microsoft Excel中读取数据,如下图所示: 1)Excel输入步骤从文件D:\data\测试数据.xlsx读取数据. ...

  9. 让Easysearch运行在LoongArch(3C5000L)上

    简介 在上一次,我介绍了在国产操作系统 Kylin V10 (Lance)-aarch64 上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen,小伙伴们可查 ...

  10. 【译】Visual Studio 17.10 发布了新版扩展管理器

    我们将更新的扩展管理器带给所有用户!在过去的一年里,我们已经将更新后的扩展管理器作为可选的预览功能提供,并一直期待您的反馈.基于您令人难以置信的反馈,我们现在准备从 Visual Studio 17. ...