欢迎光临散文网 会员登陆 & 注册

oeasy教您玩转vim - 84 - # 命令command

2022-01-09 08:11 作者:oeasy  | 我要投稿

命令 command

回忆

  • 关于 函数function

    • :call execute(gg=G)

    • :call append(0,"oeasy o2z o3z")

    • 可以调用别的函数

    • 还可以执行表达式

  • 这样就可以把一系列的操作封装到一个函数里面

    • 然后在命令行模式调用就可以了

    • 但如果我想不用`: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>

    • normal 模式下执行命令

    • <cr> 回车

    • command 定义命令

    • RestoreSelection 命令名称

    • normal '<v'><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的评论 (共 条)

分享到微博请遵守国家法律