命令 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 '
- 用
normal
模式执行后续命令 '<
跳到原选区开头v
进入字符可视化'>
跳到原选区结尾
- 用
command RestoreSelection :normal '
- command 定义命令
- RestoreSelection 命令名称
- normal '
- normal 模式下执行命令
回车
- 尝试恢复选区
: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 ""
- command定义一个命令
- 只有一个参数
- 作用是把Say后面的参数echo出来
文章图片
命令执行
文章图片
:Say oeasy say easy
- 后面的三个单词作为一个参数
- 想在字符串里面使用引号的话
- 需要进行转义
- 定义函数
文章图片
- 实验函数
:call Oeasy("oeasy","o2z","o3z")
- 成功,函数没有问题
- 定义命令
:command -nargs=* Oeasy :call Oeasy()
- 命令Oeasy执行函数Oeasy
- 执行命令
:Oeasy "111","222","333"
- 执行命令成功
- 但是不能执行
:Oeasy 111,222,333
- 重新定义命令
:command! -nargs=* Oeasy :call Oeasy(
) - 注意这里command!是重新定义命令
- Oeasy aaa bbb ccc
- 执行命令成功
- 执行命令
:h command
/range
文章图片
:command -range SaveIt :
, write! save_file
文章图片
- 当然还可以把他变成带参数的
:command -range -nargs=1 SaveIt :
, write!
function! Comment(line1, line2)
execute a:line1.','.a:line2.'s/^/#/'
endfunction command! -range=% Comment call Comment(,)
删除和清空命令
:delcommand SaveIt
- 删除命令
:comclear
- 清空命令
- 我们最后总结一下吧
- 我们可以自己定义命令command
- 也可以执行自定义的命令
- 可以修改删除命令
- 【oeasy教您玩转vim - 84 - # 命令command】命令可以带上
- 参数
- 范围
- 除了自定义命令之外
- 系统也有一些built-in的命令
- 系统有什么好玩的命令么?
- 下次再说!
推荐阅读
- oeasy教您玩转vim - 89 - # 高亮细节Highlight
- oeasy教您玩转vim - 88 - # 自动命令autocmd
- oeasy教您玩转vim - 87 - # 内容查找grep命令
- oeasy教您玩转vim - 85 - # 全局命令
- vim 命令整理(从FreePlane的mm格式导出)
- oeasy教您玩转vim - 82 - # 函数function
- oeasy教您玩转vim - 81 - # 宏macro的进阶
- oeasy教您玩转vim - 80 - # 宏macro
- oeasy教您玩转vim - 79 - # 编码格式encoding