📄 ex_cmds.h
字号:
/* vi:set ts=8 sts=4 sw=4:
*
* VIM - Vi IMproved by Bram Moolenaar
*
* Do ":help uganda" in Vim to read copying and usage conditions.
* Do ":help credits" in Vim to see a list of people who contributed.
*/
/*
* This file defines the Ex commands.
* When DO_DECLARE_EXCMD is defined, the table with ex command names and
* options results.
* When DO_DECLARE_EXCMD is NOT defined, the enum with all the Ex commands
* results.
* This clever trick was invented by Ron Aaron.
*/
/*
* When adding an Ex command:
* 1. Add an entry in the table below.
* 2. Add a "case: CMD_xxx" in ex_docmd.c.
* 3. Add a line in ../doc/index.txt.
* 4. Add documentation in ../doc/xxx.txt. Add a tag for both the short and
* long name of the command.
*/
#undef EXCMD /* just in case */
#ifdef DO_DECLARE_EXCMD
# define EXCMD(a, b, c) {(char_u *)b, c}
#else
# define EXCMD(a, b, c) a
#endif
#ifdef RANGE
# undef RANGE /* SASC on Amiga defines it */
#endif
#define RANGE 0x01 /* allow a linespecs */
#define BANG 0x02 /* allow a ! after the command name */
#define EXTRA 0x04 /* allow extra args after command name */
#define XFILE 0x08 /* expand wildcards in extra part */
#define NOSPC 0x10 /* no spaces allowed in the extra part */
#define DFLALL 0x20 /* default file range is 1,$ */
#define NODFL 0x40 /* do not default to the current file name */
#define NEEDARG 0x80 /* argument required */
#define TRLBAR 0x100 /* check for trailing vertical bar */
#define REGSTR 0x200 /* allow "x for register designation */
#define COUNT 0x400 /* allow count in argument, after command */
#define NOTRLCOM 0x800 /* no trailing comment allowed */
#define ZEROR 0x1000 /* zero line number allowed */
#define USECTRLV 0x2000 /* do not remove CTRL-V from argument */
#define NOTADR 0x4000 /* number before command is not an address */
#define EDITCMD 0x8000 /* has "+command" argument */
#define BUFNAME 0x10000 /* accepts buffer name */
#define FILES (XFILE + EXTRA) /* multiple extra files allowed */
#define WORD1 (EXTRA + NOSPC) /* one extra word allowed */
#define FILE1 (FILES + NOSPC) /* 1 file allowed, defaults to current file */
#define NAMEDF (FILE1 + NODFL) /* 1 file allowed, defaults to "" */
#define NAMEDFS (FILES + NODFL) /* multiple files allowed, default is "" */
/*
* This array maps ex command names to command codes. The order in which
* command names are listed below is significant -- ambiguous abbreviations
* are always resolved to be the first possible match (e.g. "r" is taken
* to mean "read", not "rewind", because "read" comes before "rewind").
* Not supported commands are included to avoid ambiguities.
*/
#ifdef DO_DECLARE_EXCMD
static struct cmdname
{
char_u *cmd_name; /* name of the command */
long_u cmd_argt; /* command line arguments permitted/needed/used */
} cmdnames[] =
#else
enum CMD_index
#endif
{
EXCMD(CMD_append, "append", BANG+RANGE+ZEROR+TRLBAR),
EXCMD(CMD_all, "all", RANGE+NOTADR+COUNT+TRLBAR),
EXCMD(CMD_abbreviate,"abbreviate", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_abclear, "abclear", TRLBAR),
EXCMD(CMD_amenu, "amenu", RANGE+NOTADR+ZEROR+EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_anoremenu,"anoremenu", RANGE+NOTADR+ZEROR+EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_args, "args", BANG+NAMEDFS+EDITCMD+TRLBAR),
EXCMD(CMD_argument, "argument", BANG+RANGE+NOTADR+COUNT+EXTRA+EDITCMD+TRLBAR),
EXCMD(CMD_ascii, "ascii", TRLBAR),
EXCMD(CMD_autocmd, "autocmd", BANG+EXTRA+NOTRLCOM+USECTRLV),
EXCMD(CMD_augroup, "augroup", WORD1+TRLBAR),
EXCMD(CMD_aunmenu, "aunmenu", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_buffer, "buffer", BANG+RANGE+NOTADR+BUFNAME+COUNT+EXTRA+TRLBAR),
EXCMD(CMD_ball, "ball", RANGE+NOTADR+COUNT+TRLBAR),
EXCMD(CMD_badd, "badd", NEEDARG+FILE1+EDITCMD+TRLBAR),
EXCMD(CMD_bdelete, "bdelete", BANG+RANGE+NOTADR+BUFNAME+COUNT+EXTRA+TRLBAR),
EXCMD(CMD_behave, "behave", NEEDARG+WORD1+TRLBAR),
EXCMD(CMD_blast, "blast", BANG+RANGE+TRLBAR),
EXCMD(CMD_bmodified,"bmodified", BANG+RANGE+NOTADR+COUNT+TRLBAR),
EXCMD(CMD_bnext, "bnext", BANG+RANGE+NOTADR+COUNT+TRLBAR),
EXCMD(CMD_bNext, "bNext", BANG+RANGE+NOTADR+COUNT+TRLBAR),
EXCMD(CMD_bprevious,"bprevious", BANG+RANGE+NOTADR+COUNT+TRLBAR),
EXCMD(CMD_brewind, "brewind", BANG+RANGE+TRLBAR),
EXCMD(CMD_break, "break", TRLBAR),
EXCMD(CMD_browse, "browse", NEEDARG+EXTRA+NOTRLCOM),
EXCMD(CMD_buffers, "buffers", TRLBAR),
EXCMD(CMD_bunload, "bunload", BANG+RANGE+NOTADR+BUFNAME+COUNT+EXTRA+TRLBAR),
EXCMD(CMD_change, "change", BANG+RANGE+COUNT+TRLBAR),
EXCMD(CMD_cabbrev, "cabbrev", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_cabclear, "cabclear", TRLBAR),
EXCMD(CMD_call, "call", RANGE+NEEDARG+EXTRA+NOTRLCOM),
EXCMD(CMD_cc, "cc", RANGE+NOTADR+COUNT+TRLBAR+BANG),
EXCMD(CMD_cd, "cd", NAMEDF+TRLBAR),
EXCMD(CMD_center, "center", TRLBAR+RANGE+EXTRA),
EXCMD(CMD_cfile, "cfile", TRLBAR+FILE1+BANG),
EXCMD(CMD_chdir, "chdir", NAMEDF+TRLBAR),
EXCMD(CMD_checkpath,"checkpath", TRLBAR+BANG),
EXCMD(CMD_clist, "clist", TRLBAR+BANG),
EXCMD(CMD_close, "close", BANG+TRLBAR),
EXCMD(CMD_clast, "clast", RANGE+NOTADR+COUNT+TRLBAR+BANG),
EXCMD(CMD_cmap, "cmap", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_cmapclear,"cmapclear", TRLBAR),
EXCMD(CMD_cmenu, "cmenu", RANGE+NOTADR+ZEROR+EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_cnext, "cnext", RANGE+NOTADR+COUNT+TRLBAR+BANG),
EXCMD(CMD_cNext, "cNext", RANGE+NOTADR+COUNT+TRLBAR+BANG),
EXCMD(CMD_cnewer, "cnewer", RANGE+NOTADR+COUNT+TRLBAR),
EXCMD(CMD_cnoremap, "cnoremap", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_cnoremenu,"cnoremenu", RANGE+NOTADR+ZEROR+EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_cnoreabbrev,"cnoreabbrev",EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_copy, "copy", RANGE+EXTRA+TRLBAR),
EXCMD(CMD_colder, "colder", RANGE+NOTADR+COUNT+TRLBAR),
EXCMD(CMD_command, "command", EXTRA+BANG+NOTRLCOM+USECTRLV),
EXCMD(CMD_comclear, "comclear", TRLBAR),
EXCMD(CMD_continue, "continue", TRLBAR),
EXCMD(CMD_confirm, "confirm", NEEDARG+EXTRA+NOTRLCOM),
EXCMD(CMD_cprevious,"cprevious", RANGE+NOTADR+COUNT+TRLBAR+BANG),
EXCMD(CMD_cquit, "cquit", TRLBAR+BANG),
EXCMD(CMD_crewind, "crewind", RANGE+NOTADR+COUNT+TRLBAR+BANG),
EXCMD(CMD_cscope, "cscope", EXTRA+NOTRLCOM),
EXCMD(CMD_cstag, "cstag", BANG+TRLBAR+WORD1),
EXCMD(CMD_cunmap, "cunmap", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_cunmenu, "cunmenu", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_cunabbrev,"cunabbrev", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_delete, "delete", RANGE+REGSTR+COUNT+TRLBAR),
EXCMD(CMD_delcommand,"delcommand", NEEDARG+WORD1+TRLBAR),
EXCMD(CMD_delfunction,"delfunction",NEEDARG+WORD1+TRLBAR),
EXCMD(CMD_display, "display", EXTRA+NOTRLCOM+TRLBAR),
EXCMD(CMD_digraphs, "digraphs", EXTRA+TRLBAR),
EXCMD(CMD_djump, "djump", BANG+RANGE+DFLALL+EXTRA),
EXCMD(CMD_dlist, "dlist", BANG+RANGE+DFLALL+EXTRA),
EXCMD(CMD_doautocmd,"doautocmd", EXTRA+TRLBAR),
EXCMD(CMD_doautoall,"doautoall", EXTRA+TRLBAR),
EXCMD(CMD_dsearch, "dsearch", BANG+RANGE+DFLALL+EXTRA),
EXCMD(CMD_dsplit, "dsplit", BANG+RANGE+DFLALL+EXTRA),
EXCMD(CMD_edit, "edit", BANG+FILE1+EDITCMD+TRLBAR),
EXCMD(CMD_echo, "echo", EXTRA+NOTRLCOM),
EXCMD(CMD_echohl, "echohl", EXTRA+TRLBAR),
EXCMD(CMD_echon, "echon", EXTRA+NOTRLCOM),
EXCMD(CMD_else, "else", TRLBAR),
EXCMD(CMD_elseif, "elseif", EXTRA+NOTRLCOM),
EXCMD(CMD_endif, "endif", TRLBAR),
EXCMD(CMD_endfunction,"endfunction",TRLBAR),
EXCMD(CMD_endwhile, "endwhile", TRLBAR),
EXCMD(CMD_ex, "ex", BANG+FILE1+EDITCMD+TRLBAR),
EXCMD(CMD_execute, "execute", EXTRA+NOTRLCOM),
EXCMD(CMD_exit, "exit", RANGE+BANG+FILE1+DFLALL+TRLBAR),
EXCMD(CMD_file, "file", BANG+FILE1+TRLBAR),
EXCMD(CMD_files, "files", TRLBAR),
EXCMD(CMD_fixdel, "fixdel", TRLBAR),
EXCMD(CMD_function, "function", EXTRA+BANG),
EXCMD(CMD_global, "global", RANGE+BANG+EXTRA+DFLALL),
EXCMD(CMD_grep, "grep", NEEDARG+EXTRA+TRLBAR+XFILE),
EXCMD(CMD_gui, "gui", BANG+NAMEDFS+EDITCMD+TRLBAR),
EXCMD(CMD_gvim, "gvim", BANG+NAMEDFS+EDITCMD+TRLBAR),
EXCMD(CMD_help, "help", EXTRA+NOTRLCOM),
EXCMD(CMD_highlight,"highlight", BANG+EXTRA+TRLBAR),
EXCMD(CMD_hide, "hide", BANG+TRLBAR),
EXCMD(CMD_insert, "insert", BANG+RANGE+TRLBAR),
EXCMD(CMD_iabbrev, "iabbrev", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_iabclear, "iabclear", TRLBAR),
EXCMD(CMD_if, "if", EXTRA+NOTRLCOM),
EXCMD(CMD_ijump, "ijump", BANG+RANGE+DFLALL+EXTRA),
EXCMD(CMD_ilist, "ilist", BANG+RANGE+DFLALL+EXTRA),
EXCMD(CMD_imap, "imap", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_imapclear,"imapclear", TRLBAR),
EXCMD(CMD_imenu, "imenu", RANGE+NOTADR+ZEROR+EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_inoremap, "inoremap", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_inoremenu,"inoremenu", RANGE+NOTADR+ZEROR+EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_inoreabbrev,"inoreabbrev",EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_intro, "intro", TRLBAR),
EXCMD(CMD_isearch, "isearch", BANG+RANGE+DFLALL+EXTRA),
EXCMD(CMD_isplit, "isplit", BANG+RANGE+DFLALL+EXTRA),
EXCMD(CMD_iunmap, "iunmap", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_iunmenu, "iunmenu", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_iunabbrev,"iunabbrev", EXTRA+TRLBAR+NOTRLCOM+USECTRLV),
EXCMD(CMD_join, "join", BANG+RANGE+COUNT+TRLBAR),
EXCMD(CMD_jumps, "jumps", TRLBAR),
EXCMD(CMD_k, "k", RANGE+WORD1+TRLBAR),
EXCMD(CMD_list, "list", RANGE+COUNT+TRLBAR),
EXCMD(CMD_last, "last", EXTRA+BANG+EDITCMD+TRLBAR),
EXCMD(CMD_left, "left", TRLBAR+RANGE+EXTRA),
EXCMD(CMD_let, "let", EXTRA+NOTRLCOM),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -