oeasy教您玩轉(zhuǎn)vim - 84 - # 命令command
命令 command
回憶
關(guān)于 函數(shù)
function
:call execute(gg=G)
:call append(0,"oeasy o2z o3z")
可以調(diào)用別的函數(shù)
還可以執(zhí)行表達(dá)式
這樣就可以把一系列的操作封裝到一個(gè)函數(shù)里面
然后在命令行模式調(diào)用就可以了
但如果我想不用`:call Init()"
而是像
:ls
一樣執(zhí)行:init
,可能么???
命令列表
ls
是一個(gè) 命令command
我們可以
:command
查看所有用戶定義的命令也可以
:command TOhtml
查詢指定的命令這個(gè)TOhtml命令可以按照當(dāng)前的顏色模式把文件輸出成html文件

自定義命令command
:command DeleteFirst :1delete
:command
自定義命令command自定義命令 叫做 -
DeleteFirst
自定義命令DeleteFirst 對(duì)應(yīng)的操作 -
:1delete
刪除第1行執(zhí)行命令
:DeleteFirst
執(zhí)行成功
第一行被刪掉

再定一個(gè)命令command
:command Delete5Lines :.,+5delete
嘗試從當(dāng)前行開(kāi)始刪除5行
:Delete5Lines
可以調(diào)用
但是總共刪除6行
要注意刪除從當(dāng)前行到當(dāng)前行下方第5行
總共6行
u回來(lái)修改
:command! Delete5Lines :.,+4delete
使用!重新定義命令command
:Delete5Lines
執(zhí)行成功
恢復(fù)選區(qū)命令
:normal '<v'>
用
normal
模式執(zhí)行后續(xù)命令'<
跳到原選區(qū)開(kāi)頭v
進(jìn)入字符可視化'>
跳到原選區(qū)結(jié)尾command RestoreSelection :normal '<v'><cr>
normal 模式下執(zhí)行命令
<cr> 回車
command 定義命令
RestoreSelection 命令名稱
normal '<v'><cr>
嘗試恢復(fù)選區(qū)
:RestoreSelection

最初的函數(shù)

:call Init()
調(diào)用函數(shù)
注意一定是在java文件中定義這個(gè)命令
因?yàn)檫@個(gè)函數(shù)放在了java的ftplugin中
使用命令調(diào)用函數(shù)
:command Init :call Init()
命令定義Init
執(zhí)行
:call Init()
:Init
執(zhí)行命令
:command Init
觀察命令
這些命令和前面的刪除命令很類似
都沒(méi)有參數(shù)

其實(shí)應(yīng)該定義的時(shí)候更加明確命令參數(shù)
明確參數(shù)
:h command

明確指定0個(gè)參數(shù)
:command! -nargs=0 DeleteFirst :1delete
:command! -nargs=0 Delete5Lines :.,+4delete
那如果有個(gè)命令是一個(gè)參數(shù)的怎么辦呢?
一個(gè)參數(shù)
:command -nargs=1 Say :echo "<args>"
command定義一個(gè)命令
只有一個(gè)參數(shù)
作用是把Say后面的參數(shù)echo出來(lái)

命令執(zhí)行
:Say oeasy say easy
后面的三個(gè)單詞作為一個(gè)參數(shù)
想在字符串里面使用引號(hào)的話
需要進(jìn)行轉(zhuǎn)義
多個(gè)參數(shù)調(diào)用函數(shù)
定義函數(shù)

實(shí)驗(yàn)函數(shù)
:call Oeasy("oeasy","o2z","o3z")
成功,函數(shù)沒(méi)有問(wèn)題
定義命令
:command -nargs=* Oeasy :call Oeasy(<args>)
命令Oeasy執(zhí)行函數(shù)Oeasy
執(zhí)行命令
:Oeasy "111","222","333"
執(zhí)行命令成功
但是不能執(zhí)行
:Oeasy 111,222,333
重新定義命令
:command! -nargs=* Oeasy :call Oeasy(<q-args>)
注意這里command!是重新定義命令
Oeasy aaa bbb ccc
執(zhí)行命令成功
執(zhí)行命令
命令范圍range
:h command
/range

:command -range SaveIt :<line1>,<line2>write! save_file

當(dāng)然還可以把他變成帶參數(shù)的
: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
清空命令
我們最后總結(jié)一下吧
總結(jié)
我們可以自己定義命令command
也可以執(zhí)行自定義的命令
可以修改刪除命令
命令可以帶上
參數(shù)
范圍
除了自定義命令之外
系統(tǒng)也有一些built-in的命令
系統(tǒng)有什么好玩的命令么???
下次再說(shuō)!