乐趣区

关于vim: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 的命令
  • 零碎有什么好玩的命令么?🤔
  • 下次再说!
退出移动版