命令 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 的命令
- 零碎有什么好玩的命令么?🤔
- 下次再说!