oeasy教您玩转vim - 84 - # 命令command
命令 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的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转linux010109clear清屏
回忆上次内容 上次讲了灵魂三问 whatis whereis which 通过这三个问题,可以对命令基本了解,我们来试一下!!
随机推荐
- Redis内存容量评估
业务侧申请redis服务器资源时,需要事先对redis容量做一个大致评估,之前的容量评估公式基本只是简单的 (key长度 value长度)* key个数,误差较大,后期经常需要进行缩扩容调整,因此提出 ...
- Chart.js (v2.9.4) 2-主要的函数和对象介绍
Color() :主要负责渲染图表时候,针对颜色处理相关函数 helpers_core:工具对象,提供了基础的工具函数功能,遍历数组,扩展对象,合并对象,克隆对象等等. core_defaults:负 ...
- es 排序突然很慢的原因
今天突然之间发现一个访问es的查询很慢.由刚上线之前测试的100ms直接到了5s左右.瞬间懵逼. 这个用户索引大概200w的数据. 查询语句如下 GET /user/_search{"fro ...
- 机器学习策略篇:详解理解人的表现(Understanding human-level performance)
理解人的表现 人类水平表现这个词在论文里经常随意使用,但现在告诉这个词更准确的定义,特别是使用人类水平表现这个词的定义,可以帮助推动机器学习项目的进展.还记得上个博客中,用过这个词"人类水平 ...
- C++笔记(5)浅拷贝和深拷贝
1. 定义 浅拷贝(shallow copy):多个对象共用同一块资源,同一块资源释放多次,崩溃或者内存泄漏 深拷贝(deep copy):每个对象共同拥有自己的资源,必须显式提供拷贝构造函数和赋值运 ...
- Linux Shell命令提示样式修改
对linux shell命令样式进行美化. 修改前的效果: 修改后的效果: 直接给出.bashrc脚本代码: 1 # ~/.bashrc: executed by bash(1) for non-lo ...
- .NET 8 IApplicationBuilder详解
在上节中我们已经得知 WebApplication 实现了 IApplicationBuilder,我们浅谈了其pipe特质和构建方法,本节中将深入了解 ApplicationBuilder 以窥探 ...
- OOP第二阶段题集总结
一.前言 知识点:考察继承和多态为多,其中还涉及迭代器的使用,在每个题集中都有一个综合性题目设计多方面知识点考试,有List类和HashMap的使用以及正则表达式的运用,并且注重考查设计,理解类与类之 ...
- CentOS 7- 配置阿里镜像源
1.备份CentOS 7系统自带yum源配置文件/etc/yum.repos.d/CentOS-Base.repo命令: mv /etc/yum.repos.d/CentOS-Base.repo /e ...
- Mybatis中#{}和${}的区别:
简单来说 #{} 会在将参数加上引号,例如: SELECT * FROM user WHERE username=#{username} ; 带上参数后的SQL语句即: SELECT * ...