neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

ex_cmds.lua (83592B)


      1 local bit = require 'bit'
      2 
      3 local M = {}
      4 
      5 -- Description of the values below is contained in ex_cmds_defs.h file.
      6 -- "EX_" prefix is omitted.
      7 local RANGE = 0x001
      8 local BANG = 0x002
      9 local EXTRA = 0x004
     10 local XFILE = 0x008
     11 local NOSPC = 0x010
     12 local DFLALL = 0x020
     13 local WHOLEFOLD = 0x040
     14 local NEEDARG = 0x080
     15 local TRLBAR = 0x100
     16 local REGSTR = 0x200
     17 local COUNT = 0x400
     18 local NOTRLCOM = 0x800
     19 local ZEROR = 0x1000
     20 local CTRLV = 0x2000
     21 local CMDARG = 0x4000
     22 local BUFNAME = 0x8000
     23 local BUFUNL = 0x10000
     24 local ARGOPT = 0x20000
     25 local SBOXOK = 0x40000
     26 local CMDWIN = 0x80000
     27 local MODIFY = 0x100000
     28 local FLAGS = 0x200000
     29 local LOCK_OK = 0x1000000
     30 local PREVIEW = 0x8000000
     31 local FILES = bit.bor(XFILE, EXTRA)
     32 local WORD1 = bit.bor(EXTRA, NOSPC)
     33 local FILE1 = bit.bor(FILES, NOSPC)
     34 
     35 M.flags = {
     36  RANGE = RANGE,
     37  DFLALL = DFLALL,
     38  PREVIEW = PREVIEW,
     39 }
     40 
     41 -- The following table is described in ex_cmds_defs.h file.
     42 M.cmds = {
     43  {
     44    command = 'append',
     45    flags = bit.bor(BANG, RANGE, ZEROR, TRLBAR, CMDWIN, LOCK_OK, MODIFY),
     46    addr_type = 'ADDR_LINES',
     47    func = 'ex_append',
     48  },
     49  {
     50    command = 'abbreviate',
     51    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
     52    addr_type = 'ADDR_NONE',
     53    func = 'ex_abbreviate',
     54  },
     55  {
     56    command = 'abclear',
     57    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
     58    addr_type = 'ADDR_NONE',
     59    func = 'ex_abclear',
     60  },
     61  {
     62    command = 'aboveleft',
     63    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
     64    addr_type = 'ADDR_NONE',
     65    func = 'ex_wrongmodifier',
     66  },
     67  {
     68    command = 'all',
     69    flags = bit.bor(BANG, RANGE, COUNT, TRLBAR),
     70    addr_type = 'ADDR_OTHER',
     71    func = 'ex_all',
     72  },
     73  {
     74    command = 'amenu',
     75    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
     76    addr_type = 'ADDR_OTHER',
     77    func = 'ex_menu',
     78  },
     79  {
     80    command = 'anoremenu',
     81    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
     82    addr_type = 'ADDR_OTHER',
     83    func = 'ex_menu',
     84  },
     85  {
     86    command = 'args',
     87    flags = bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR),
     88    addr_type = 'ADDR_NONE',
     89    func = 'ex_args',
     90  },
     91  {
     92    command = 'argadd',
     93    flags = bit.bor(BANG, RANGE, ZEROR, FILES, TRLBAR),
     94    addr_type = 'ADDR_ARGUMENTS',
     95    func = 'ex_argadd',
     96  },
     97  {
     98    command = 'argdelete',
     99    flags = bit.bor(BANG, RANGE, FILES, TRLBAR),
    100    addr_type = 'ADDR_ARGUMENTS',
    101    func = 'ex_argdelete',
    102  },
    103  {
    104    command = 'argdo',
    105    flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL),
    106    addr_type = 'ADDR_ARGUMENTS',
    107    func = 'ex_listdo',
    108  },
    109  {
    110    command = 'argdedupe',
    111    flags = TRLBAR,
    112    addr_type = 'ADDR_NONE',
    113    func = 'ex_argdedupe',
    114  },
    115  {
    116    command = 'argedit',
    117    flags = bit.bor(BANG, NEEDARG, RANGE, ZEROR, FILES, CMDARG, ARGOPT, TRLBAR),
    118    addr_type = 'ADDR_ARGUMENTS',
    119    func = 'ex_argedit',
    120  },
    121  {
    122    command = 'argglobal',
    123    flags = bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR),
    124    addr_type = 'ADDR_NONE',
    125    func = 'ex_args',
    126  },
    127  {
    128    command = 'arglocal',
    129    flags = bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR),
    130    addr_type = 'ADDR_NONE',
    131    func = 'ex_args',
    132  },
    133  {
    134    command = 'argument',
    135    flags = bit.bor(BANG, RANGE, COUNT, EXTRA, CMDARG, ARGOPT, TRLBAR),
    136    addr_type = 'ADDR_ARGUMENTS',
    137    func = 'ex_argument',
    138  },
    139  {
    140    command = 'ascii',
    141    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
    142    addr_type = 'ADDR_NONE',
    143    func = 'do_ascii',
    144  },
    145  {
    146    command = 'autocmd',
    147    flags = bit.bor(BANG, EXTRA, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    148    addr_type = 'ADDR_NONE',
    149    func = 'ex_autocmd',
    150  },
    151  {
    152    command = 'augroup',
    153    flags = bit.bor(BANG, WORD1, TRLBAR, CMDWIN, LOCK_OK),
    154    addr_type = 'ADDR_NONE',
    155    func = 'ex_autocmd',
    156  },
    157  {
    158    command = 'aunmenu',
    159    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    160    addr_type = 'ADDR_NONE',
    161    func = 'ex_menu',
    162  },
    163  {
    164    command = 'buffer',
    165    flags = bit.bor(BANG, RANGE, BUFNAME, BUFUNL, COUNT, EXTRA, CMDARG, TRLBAR),
    166    addr_type = 'ADDR_BUFFERS',
    167    func = 'ex_buffer',
    168  },
    169  {
    170    command = 'bNext',
    171    flags = bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR),
    172    addr_type = 'ADDR_OTHER',
    173    func = 'ex_bprevious',
    174  },
    175  {
    176    command = 'ball',
    177    flags = bit.bor(RANGE, COUNT, TRLBAR),
    178    addr_type = 'ADDR_OTHER',
    179    func = 'ex_buffer_all',
    180  },
    181  {
    182    command = 'badd',
    183    flags = bit.bor(NEEDARG, FILE1, CMDARG, TRLBAR, CMDWIN, LOCK_OK),
    184    addr_type = 'ADDR_NONE',
    185    func = 'ex_edit',
    186  },
    187  {
    188    command = 'balt',
    189    flags = bit.bor(NEEDARG, FILE1, CMDARG, TRLBAR, CMDWIN, LOCK_OK),
    190    addr_type = 'ADDR_NONE',
    191    func = 'ex_edit',
    192  },
    193  {
    194    command = 'bdelete',
    195    flags = bit.bor(BANG, RANGE, BUFNAME, COUNT, EXTRA, TRLBAR),
    196    addr_type = 'ADDR_BUFFERS',
    197    func = 'ex_bunload',
    198  },
    199  {
    200    command = 'belowright',
    201    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
    202    addr_type = 'ADDR_NONE',
    203    func = 'ex_wrongmodifier',
    204  },
    205  {
    206    command = 'bfirst',
    207    flags = bit.bor(BANG, RANGE, CMDARG, TRLBAR),
    208    addr_type = 'ADDR_OTHER',
    209    func = 'ex_brewind',
    210  },
    211  {
    212    command = 'blast',
    213    flags = bit.bor(BANG, RANGE, CMDARG, TRLBAR),
    214    addr_type = 'ADDR_OTHER',
    215    func = 'ex_blast',
    216  },
    217  {
    218    command = 'bmodified',
    219    flags = bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR),
    220    addr_type = 'ADDR_OTHER',
    221    func = 'ex_bmodified',
    222  },
    223  {
    224    command = 'bnext',
    225    flags = bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR),
    226    addr_type = 'ADDR_OTHER',
    227    func = 'ex_bnext',
    228  },
    229  {
    230    command = 'botright',
    231    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
    232    addr_type = 'ADDR_NONE',
    233    func = 'ex_wrongmodifier',
    234  },
    235  {
    236    command = 'bprevious',
    237    flags = bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR),
    238    addr_type = 'ADDR_OTHER',
    239    func = 'ex_bprevious',
    240  },
    241  {
    242    command = 'brewind',
    243    flags = bit.bor(BANG, RANGE, CMDARG, TRLBAR),
    244    addr_type = 'ADDR_OTHER',
    245    func = 'ex_brewind',
    246  },
    247  {
    248    command = 'break',
    249    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
    250    addr_type = 'ADDR_NONE',
    251    func = 'ex_break',
    252  },
    253  {
    254    command = 'breakadd',
    255    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    256    addr_type = 'ADDR_NONE',
    257    func = 'ex_breakadd',
    258  },
    259  {
    260    command = 'breakdel',
    261    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    262    addr_type = 'ADDR_NONE',
    263    func = 'ex_breakdel',
    264  },
    265  {
    266    command = 'breaklist',
    267    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
    268    addr_type = 'ADDR_NONE',
    269    func = 'ex_breaklist',
    270  },
    271  {
    272    command = 'browse',
    273    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, CMDWIN, LOCK_OK),
    274    addr_type = 'ADDR_NONE',
    275    func = 'ex_wrongmodifier',
    276  },
    277  {
    278    command = 'buffers',
    279    flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    280    addr_type = 'ADDR_NONE',
    281    func = 'buflist_list',
    282  },
    283  {
    284    command = 'bufdo',
    285    flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL),
    286    addr_type = 'ADDR_BUFFERS',
    287    func = 'ex_listdo',
    288  },
    289  {
    290    command = 'bunload',
    291    flags = bit.bor(BANG, RANGE, BUFNAME, COUNT, EXTRA, TRLBAR),
    292    addr_type = 'ADDR_LOADED_BUFFERS',
    293    func = 'ex_bunload',
    294  },
    295  {
    296    command = 'bwipeout',
    297    flags = bit.bor(BANG, RANGE, BUFNAME, BUFUNL, COUNT, EXTRA, TRLBAR),
    298    addr_type = 'ADDR_BUFFERS',
    299    func = 'ex_bunload',
    300  },
    301  {
    302    command = 'change',
    303    flags = bit.bor(BANG, WHOLEFOLD, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK, MODIFY),
    304    addr_type = 'ADDR_LINES',
    305    func = 'ex_change',
    306  },
    307  {
    308    command = 'cNext',
    309    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
    310    addr_type = 'ADDR_UNSIGNED',
    311    func = 'ex_cnext',
    312  },
    313  {
    314    command = 'cNfile',
    315    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
    316    addr_type = 'ADDR_UNSIGNED',
    317    func = 'ex_cnext',
    318  },
    319  {
    320    command = 'cabbrev',
    321    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    322    addr_type = 'ADDR_NONE',
    323    func = 'ex_abbreviate',
    324  },
    325  {
    326    command = 'cabclear',
    327    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    328    addr_type = 'ADDR_NONE',
    329    func = 'ex_abclear',
    330  },
    331  {
    332    command = 'cabove',
    333    flags = bit.bor(RANGE, COUNT, TRLBAR),
    334    addr_type = 'ADDR_UNSIGNED',
    335    func = 'ex_cbelow',
    336  },
    337  {
    338    command = 'caddbuffer',
    339    flags = bit.bor(RANGE, WORD1, TRLBAR),
    340    addr_type = 'ADDR_LINES',
    341    func = 'ex_cbuffer',
    342  },
    343  {
    344    command = 'caddexpr',
    345    flags = bit.bor(NEEDARG, WORD1, NOTRLCOM),
    346    addr_type = 'ADDR_NONE',
    347    func = 'ex_cexpr',
    348  },
    349  {
    350    command = 'caddfile',
    351    flags = bit.bor(TRLBAR, FILE1),
    352    addr_type = 'ADDR_NONE',
    353    func = 'ex_cfile',
    354  },
    355  {
    356    command = 'cafter',
    357    flags = bit.bor(RANGE, COUNT, TRLBAR),
    358    addr_type = 'ADDR_UNSIGNED',
    359    func = 'ex_cbelow',
    360  },
    361  {
    362    command = 'call',
    363    flags = bit.bor(RANGE, NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
    364    addr_type = 'ADDR_LINES',
    365    func = 'ex_call',
    366  },
    367  {
    368    command = 'catch',
    369    flags = bit.bor(EXTRA, SBOXOK, CMDWIN, LOCK_OK),
    370    addr_type = 'ADDR_NONE',
    371    func = 'ex_catch',
    372  },
    373  {
    374    command = 'cbuffer',
    375    flags = bit.bor(BANG, RANGE, WORD1, TRLBAR),
    376    addr_type = 'ADDR_LINES',
    377    func = 'ex_cbuffer',
    378  },
    379  {
    380    command = 'cbefore',
    381    flags = bit.bor(RANGE, COUNT, TRLBAR),
    382    addr_type = 'ADDR_UNSIGNED',
    383    func = 'ex_cbelow',
    384  },
    385  {
    386    command = 'cbelow',
    387    flags = bit.bor(RANGE, COUNT, TRLBAR),
    388    addr_type = 'ADDR_UNSIGNED',
    389    func = 'ex_cbelow',
    390  },
    391  {
    392    command = 'cbottom',
    393    flags = bit.bor(TRLBAR),
    394    addr_type = 'ADDR_NONE',
    395    func = 'ex_cbottom',
    396  },
    397  {
    398    command = 'cc',
    399    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
    400    addr_type = 'ADDR_QUICKFIX',
    401    func = 'ex_cc',
    402  },
    403  {
    404    command = 'cclose',
    405    flags = bit.bor(TRLBAR),
    406    addr_type = 'ADDR_NONE',
    407    func = 'ex_cclose',
    408  },
    409  {
    410    command = 'cd',
    411    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
    412    addr_type = 'ADDR_NONE',
    413    func = 'ex_cd',
    414  },
    415  {
    416    command = 'cdo',
    417    flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL),
    418    addr_type = 'ADDR_QUICKFIX_VALID',
    419    func = 'ex_listdo',
    420  },
    421  {
    422    command = 'center',
    423    flags = bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY),
    424    addr_type = 'ADDR_LINES',
    425    func = 'ex_align',
    426  },
    427  {
    428    command = 'cexpr',
    429    flags = bit.bor(NEEDARG, WORD1, NOTRLCOM, BANG),
    430    addr_type = 'ADDR_NONE',
    431    func = 'ex_cexpr',
    432  },
    433  {
    434    command = 'cfile',
    435    flags = bit.bor(TRLBAR, FILE1, BANG),
    436    addr_type = 'ADDR_NONE',
    437    func = 'ex_cfile',
    438  },
    439  -- Even though 'cfdo' is alphabetically lower than 'cfile', it is after
    440  -- 'cfile' in this cmd list to support the existing ":cf" abbreviation.
    441  {
    442    command = 'cfdo',
    443    flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL),
    444    addr_type = 'ADDR_QUICKFIX_VALID',
    445    func = 'ex_listdo',
    446  },
    447  {
    448    command = 'cfirst',
    449    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
    450    addr_type = 'ADDR_UNSIGNED',
    451    func = 'ex_cc',
    452  },
    453  {
    454    command = 'cgetfile',
    455    flags = bit.bor(TRLBAR, FILE1),
    456    addr_type = 'ADDR_NONE',
    457    func = 'ex_cfile',
    458  },
    459  {
    460    command = 'cgetbuffer',
    461    flags = bit.bor(RANGE, WORD1, TRLBAR),
    462    addr_type = 'ADDR_LINES',
    463    func = 'ex_cbuffer',
    464  },
    465  {
    466    command = 'cgetexpr',
    467    flags = bit.bor(NEEDARG, WORD1, NOTRLCOM),
    468    addr_type = 'ADDR_NONE',
    469    func = 'ex_cexpr',
    470  },
    471  {
    472    command = 'chdir',
    473    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
    474    addr_type = 'ADDR_NONE',
    475    func = 'ex_cd',
    476  },
    477  {
    478    command = 'changes',
    479    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
    480    addr_type = 'ADDR_NONE',
    481    func = 'ex_changes',
    482  },
    483  {
    484    command = 'checkhealth',
    485    flags = bit.bor(EXTRA, TRLBAR),
    486    addr_type = 'ADDR_NONE',
    487    func = 'ex_checkhealth',
    488  },
    489  {
    490    command = 'checkpath',
    491    flags = bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK),
    492    addr_type = 'ADDR_NONE',
    493    func = 'ex_checkpath',
    494  },
    495  {
    496    command = 'checktime',
    497    flags = bit.bor(RANGE, BUFNAME, COUNT, EXTRA, TRLBAR),
    498    addr_type = 'ADDR_OTHER',
    499    func = 'ex_checktime',
    500  },
    501  {
    502    command = 'chistory',
    503    flags = bit.bor(RANGE, COUNT, TRLBAR),
    504    addr_type = 'ADDR_UNSIGNED',
    505    func = 'qf_history',
    506  },
    507  {
    508    command = 'clist',
    509    flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    510    addr_type = 'ADDR_NONE',
    511    func = 'qf_list',
    512  },
    513  {
    514    command = 'clast',
    515    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
    516    addr_type = 'ADDR_UNSIGNED',
    517    func = 'ex_cc',
    518  },
    519  {
    520    command = 'close',
    521    flags = bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK),
    522    addr_type = 'ADDR_WINDOWS',
    523    func = 'ex_close',
    524  },
    525  {
    526    command = 'clearjumps',
    527    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
    528    addr_type = 'ADDR_NONE',
    529    func = 'ex_clearjumps',
    530  },
    531  {
    532    command = 'cmap',
    533    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    534    addr_type = 'ADDR_NONE',
    535    func = 'ex_map',
    536  },
    537  {
    538    command = 'cmapclear',
    539    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    540    addr_type = 'ADDR_NONE',
    541    func = 'ex_mapclear',
    542  },
    543  {
    544    command = 'cmenu',
    545    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    546    addr_type = 'ADDR_OTHER',
    547    func = 'ex_menu',
    548  },
    549  {
    550    command = 'cnext',
    551    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
    552    addr_type = 'ADDR_UNSIGNED',
    553    func = 'ex_cnext',
    554  },
    555  {
    556    command = 'cnewer',
    557    flags = bit.bor(RANGE, COUNT, TRLBAR),
    558    addr_type = 'ADDR_UNSIGNED',
    559    func = 'qf_age',
    560  },
    561  {
    562    command = 'cnfile',
    563    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
    564    addr_type = 'ADDR_UNSIGNED',
    565    func = 'ex_cnext',
    566  },
    567  {
    568    command = 'cnoremap',
    569    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    570    addr_type = 'ADDR_NONE',
    571    func = 'ex_map',
    572  },
    573  {
    574    command = 'cnoreabbrev',
    575    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    576    addr_type = 'ADDR_NONE',
    577    func = 'ex_abbreviate',
    578  },
    579  {
    580    command = 'cnoremenu',
    581    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    582    addr_type = 'ADDR_OTHER',
    583    func = 'ex_menu',
    584  },
    585  {
    586    command = 'copy',
    587    flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY),
    588    addr_type = 'ADDR_LINES',
    589    func = 'ex_copymove',
    590  },
    591  {
    592    command = 'colder',
    593    flags = bit.bor(RANGE, COUNT, TRLBAR),
    594    addr_type = 'ADDR_UNSIGNED',
    595    func = 'qf_age',
    596  },
    597  {
    598    command = 'colorscheme',
    599    flags = bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK),
    600    addr_type = 'ADDR_NONE',
    601    func = 'ex_colorscheme',
    602  },
    603  {
    604    command = 'command',
    605    flags = bit.bor(EXTRA, BANG, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    606    addr_type = 'ADDR_NONE',
    607    func = 'ex_command',
    608  },
    609  {
    610    command = 'comclear',
    611    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
    612    addr_type = 'ADDR_NONE',
    613    func = 'ex_comclear',
    614  },
    615  {
    616    command = 'compiler',
    617    flags = bit.bor(BANG, TRLBAR, WORD1, CMDWIN, LOCK_OK),
    618    addr_type = 'ADDR_NONE',
    619    func = 'ex_compiler',
    620  },
    621  {
    622    command = 'continue',
    623    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
    624    addr_type = 'ADDR_NONE',
    625    func = 'ex_continue',
    626  },
    627  {
    628    command = 'confirm',
    629    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, CMDWIN, LOCK_OK),
    630    addr_type = 'ADDR_NONE',
    631    func = 'ex_wrongmodifier',
    632  },
    633  {
    634    command = 'connect',
    635    flags = bit.bor(BANG, WORD1, NOTRLCOM, NEEDARG),
    636    addr_type = 'ADDR_NONE',
    637    func = 'ex_connect',
    638  },
    639  {
    640    command = 'const',
    641    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
    642    addr_type = 'ADDR_NONE',
    643    func = 'ex_let',
    644  },
    645  {
    646    command = 'copen',
    647    flags = bit.bor(RANGE, COUNT, TRLBAR),
    648    addr_type = 'ADDR_OTHER',
    649    func = 'ex_copen',
    650  },
    651  {
    652    command = 'cprevious',
    653    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
    654    addr_type = 'ADDR_UNSIGNED',
    655    func = 'ex_cnext',
    656  },
    657  {
    658    command = 'cpfile',
    659    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
    660    addr_type = 'ADDR_OTHER',
    661    func = 'ex_cnext',
    662  },
    663  {
    664    command = 'cquit',
    665    flags = bit.bor(RANGE, COUNT, ZEROR, TRLBAR, BANG),
    666    addr_type = 'ADDR_UNSIGNED',
    667    func = 'ex_cquit',
    668  },
    669  {
    670    command = 'crewind',
    671    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
    672    addr_type = 'ADDR_UNSIGNED',
    673    func = 'ex_cc',
    674  },
    675  {
    676    command = 'cunmap',
    677    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    678    addr_type = 'ADDR_NONE',
    679    func = 'ex_unmap',
    680  },
    681  {
    682    command = 'cunabbrev',
    683    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    684    addr_type = 'ADDR_NONE',
    685    func = 'ex_abbreviate',
    686  },
    687  {
    688    command = 'cunmenu',
    689    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
    690    addr_type = 'ADDR_NONE',
    691    func = 'ex_menu',
    692  },
    693  {
    694    command = 'cwindow',
    695    flags = bit.bor(RANGE, COUNT, TRLBAR),
    696    addr_type = 'ADDR_OTHER',
    697    func = 'ex_cwindow',
    698  },
    699  {
    700    command = 'delete',
    701    flags = bit.bor(RANGE, WHOLEFOLD, REGSTR, COUNT, TRLBAR, CMDWIN, LOCK_OK, MODIFY),
    702    addr_type = 'ADDR_LINES',
    703    func = 'ex_operators',
    704  },
    705  {
    706    command = 'delmarks',
    707    flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    708    addr_type = 'ADDR_NONE',
    709    func = 'ex_delmarks',
    710  },
    711  {
    712    command = 'debug',
    713    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
    714    addr_type = 'ADDR_NONE',
    715    func = 'ex_debug',
    716  },
    717  {
    718    command = 'debuggreedy',
    719    flags = bit.bor(RANGE, ZEROR, TRLBAR, CMDWIN, LOCK_OK),
    720    addr_type = 'ADDR_OTHER',
    721    func = 'ex_debuggreedy',
    722  },
    723  {
    724    command = 'defer',
    725    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
    726    addr_type = 'ADDR_NONE',
    727    func = 'ex_call',
    728  },
    729  {
    730    command = 'delcommand',
    731    flags = bit.bor(BANG, NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK),
    732    addr_type = 'ADDR_NONE',
    733    func = 'ex_delcommand',
    734  },
    735  {
    736    command = 'delfunction',
    737    flags = bit.bor(BANG, NEEDARG, WORD1, CMDWIN, LOCK_OK),
    738    addr_type = 'ADDR_NONE',
    739    func = 'ex_delfunction',
    740  },
    741  {
    742    command = 'detach',
    743    flags = TRLBAR,
    744    addr_type = 'ADDR_NONE',
    745    func = 'ex_detach',
    746  },
    747  {
    748    command = 'display',
    749    flags = bit.bor(EXTRA, NOTRLCOM, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
    750    addr_type = 'ADDR_NONE',
    751    func = 'ex_display',
    752  },
    753  {
    754    command = 'diffupdate',
    755    flags = bit.bor(BANG, TRLBAR),
    756    addr_type = 'ADDR_NONE',
    757    func = 'ex_diffupdate',
    758  },
    759  {
    760    command = 'diffget',
    761    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, MODIFY),
    762    addr_type = 'ADDR_LINES',
    763    func = 'ex_diffgetput',
    764  },
    765  {
    766    command = 'diffoff',
    767    flags = bit.bor(BANG, TRLBAR),
    768    addr_type = 'ADDR_NONE',
    769    func = 'ex_diffoff',
    770  },
    771  {
    772    command = 'diffpatch',
    773    flags = bit.bor(EXTRA, FILE1, TRLBAR, MODIFY),
    774    addr_type = 'ADDR_NONE',
    775    func = 'ex_diffpatch',
    776  },
    777  {
    778    command = 'diffput',
    779    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR),
    780    addr_type = 'ADDR_LINES',
    781    func = 'ex_diffgetput',
    782  },
    783  {
    784    command = 'diffsplit',
    785    flags = bit.bor(EXTRA, FILE1, TRLBAR),
    786    addr_type = 'ADDR_NONE',
    787    func = 'ex_diffsplit',
    788  },
    789  {
    790    command = 'diffthis',
    791    flags = bit.bor(TRLBAR),
    792    addr_type = 'ADDR_NONE',
    793    func = 'ex_diffthis',
    794  },
    795  {
    796    command = 'digraphs',
    797    flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    798    addr_type = 'ADDR_NONE',
    799    func = 'ex_digraphs',
    800  },
    801  {
    802    command = 'djump',
    803    flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA),
    804    addr_type = 'ADDR_LINES',
    805    func = 'ex_findpat',
    806  },
    807  {
    808    command = 'dlist',
    809    flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK),
    810    addr_type = 'ADDR_LINES',
    811    func = 'ex_findpat',
    812  },
    813  {
    814    command = 'doautocmd',
    815    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    816    addr_type = 'ADDR_NONE',
    817    func = 'ex_doautocmd',
    818  },
    819  {
    820    command = 'doautoall',
    821    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    822    addr_type = 'ADDR_NONE',
    823    func = 'ex_doautoall',
    824  },
    825  {
    826    command = 'drop',
    827    flags = bit.bor(BANG, FILES, CMDARG, NEEDARG, ARGOPT, TRLBAR),
    828    addr_type = 'ADDR_NONE',
    829    func = 'ex_drop',
    830  },
    831  {
    832    command = 'dsearch',
    833    flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK),
    834    addr_type = 'ADDR_LINES',
    835    func = 'ex_findpat',
    836  },
    837  {
    838    command = 'dsplit',
    839    flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA),
    840    addr_type = 'ADDR_LINES',
    841    func = 'ex_findpat',
    842  },
    843  {
    844    command = 'edit',
    845    flags = bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR),
    846    addr_type = 'ADDR_NONE',
    847    func = 'ex_edit',
    848  },
    849  {
    850    command = 'earlier',
    851    flags = bit.bor(TRLBAR, EXTRA, NOSPC, CMDWIN, LOCK_OK),
    852    addr_type = 'ADDR_NONE',
    853    func = 'ex_later',
    854  },
    855  {
    856    command = 'echo',
    857    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
    858    addr_type = 'ADDR_NONE',
    859    func = 'ex_echo',
    860  },
    861  {
    862    command = 'echoerr',
    863    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
    864    addr_type = 'ADDR_NONE',
    865    func = 'ex_execute',
    866  },
    867  {
    868    command = 'echohl',
    869    flags = bit.bor(EXTRA, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
    870    addr_type = 'ADDR_NONE',
    871    func = 'ex_echohl',
    872  },
    873  {
    874    command = 'echomsg',
    875    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
    876    addr_type = 'ADDR_NONE',
    877    func = 'ex_execute',
    878  },
    879  {
    880    command = 'echon',
    881    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
    882    addr_type = 'ADDR_NONE',
    883    func = 'ex_echo',
    884  },
    885  {
    886    command = 'else',
    887    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
    888    addr_type = 'ADDR_NONE',
    889    func = 'ex_else',
    890  },
    891  {
    892    command = 'elseif',
    893    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
    894    addr_type = 'ADDR_NONE',
    895    func = 'ex_else',
    896  },
    897  {
    898    command = 'emenu',
    899    flags = bit.bor(NEEDARG, EXTRA, TRLBAR, NOTRLCOM, RANGE, CMDWIN, LOCK_OK),
    900    addr_type = 'ADDR_OTHER',
    901    func = 'ex_emenu',
    902  },
    903  {
    904    command = 'endif',
    905    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
    906    addr_type = 'ADDR_NONE',
    907    func = 'ex_endif',
    908  },
    909  {
    910    command = 'endfunction',
    911    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
    912    addr_type = 'ADDR_NONE',
    913    func = 'ex_endfunction',
    914  },
    915  {
    916    command = 'endfor',
    917    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
    918    addr_type = 'ADDR_NONE',
    919    func = 'ex_endwhile',
    920  },
    921  {
    922    command = 'endtry',
    923    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
    924    addr_type = 'ADDR_NONE',
    925    func = 'ex_endtry',
    926  },
    927  {
    928    command = 'endwhile',
    929    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
    930    addr_type = 'ADDR_NONE',
    931    func = 'ex_endwhile',
    932  },
    933  {
    934    command = 'enew',
    935    flags = bit.bor(BANG, TRLBAR),
    936    addr_type = 'ADDR_NONE',
    937    func = 'ex_edit',
    938  },
    939  {
    940    command = 'eval',
    941    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
    942    addr_type = 'ADDR_NONE',
    943    func = 'ex_eval',
    944  },
    945  {
    946    command = 'ex',
    947    flags = bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR),
    948    addr_type = 'ADDR_NONE',
    949    func = 'ex_edit',
    950  },
    951  {
    952    command = 'execute',
    953    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
    954    addr_type = 'ADDR_NONE',
    955    func = 'ex_execute',
    956  },
    957  {
    958    command = 'exit',
    959    flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK),
    960    addr_type = 'ADDR_LINES',
    961    func = 'ex_exit',
    962  },
    963  {
    964    command = 'exusage',
    965    flags = bit.bor(TRLBAR),
    966    addr_type = 'ADDR_NONE',
    967    func = 'ex_exusage',
    968  },
    969  {
    970    command = 'file',
    971    flags = bit.bor(RANGE, ZEROR, BANG, FILE1, TRLBAR),
    972    addr_type = 'ADDR_OTHER',
    973    func = 'ex_file',
    974  },
    975  {
    976    command = 'files',
    977    flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    978    addr_type = 'ADDR_NONE',
    979    func = 'buflist_list',
    980  },
    981  {
    982    command = 'filetype',
    983    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
    984    addr_type = 'ADDR_NONE',
    985    func = 'ex_filetype',
    986  },
    987  {
    988    command = 'filter',
    989    flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM),
    990    addr_type = 'ADDR_NONE',
    991    func = 'ex_wrongmodifier',
    992  },
    993  {
    994    command = 'find',
    995    flags = bit.bor(RANGE, BANG, FILE1, CMDARG, ARGOPT, TRLBAR, NEEDARG),
    996    addr_type = 'ADDR_OTHER',
    997    func = 'ex_find',
    998  },
    999  {
   1000    command = 'finally',
   1001    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1002    addr_type = 'ADDR_NONE',
   1003    func = 'ex_finally',
   1004  },
   1005  {
   1006    command = 'finish',
   1007    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1008    addr_type = 'ADDR_NONE',
   1009    func = 'ex_finish',
   1010  },
   1011  {
   1012    command = 'first',
   1013    flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR),
   1014    addr_type = 'ADDR_NONE',
   1015    func = 'ex_rewind',
   1016  },
   1017  {
   1018    command = 'fold',
   1019    flags = bit.bor(RANGE, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1020    addr_type = 'ADDR_LINES',
   1021    func = 'ex_fold',
   1022  },
   1023  {
   1024    command = 'foldclose',
   1025    flags = bit.bor(RANGE, BANG, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1026    addr_type = 'ADDR_LINES',
   1027    func = 'ex_foldopen',
   1028  },
   1029  {
   1030    command = 'folddoopen',
   1031    flags = bit.bor(RANGE, DFLALL, NEEDARG, EXTRA, NOTRLCOM),
   1032    addr_type = 'ADDR_LINES',
   1033    func = 'ex_folddo',
   1034  },
   1035  {
   1036    command = 'folddoclosed',
   1037    flags = bit.bor(RANGE, DFLALL, NEEDARG, EXTRA, NOTRLCOM),
   1038    addr_type = 'ADDR_LINES',
   1039    func = 'ex_folddo',
   1040  },
   1041  {
   1042    command = 'foldopen',
   1043    flags = bit.bor(RANGE, BANG, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1044    addr_type = 'ADDR_LINES',
   1045    func = 'ex_foldopen',
   1046  },
   1047  {
   1048    command = 'for',
   1049    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
   1050    addr_type = 'ADDR_NONE',
   1051    func = 'ex_while',
   1052  },
   1053  {
   1054    command = 'function',
   1055    flags = bit.bor(EXTRA, BANG, SBOXOK, CMDWIN, LOCK_OK),
   1056    addr_type = 'ADDR_NONE',
   1057    func = 'ex_function',
   1058  },
   1059  {
   1060    command = 'fclose',
   1061    flags = bit.bor(BANG, RANGE, TRLBAR),
   1062    addr_type = 'ADDR_OTHER',
   1063    func = 'ex_fclose',
   1064  },
   1065  {
   1066    command = 'global',
   1067    flags = bit.bor(RANGE, WHOLEFOLD, BANG, EXTRA, DFLALL, SBOXOK, CMDWIN, LOCK_OK),
   1068    addr_type = 'ADDR_LINES',
   1069    func = 'ex_global',
   1070  },
   1071  {
   1072    command = 'goto',
   1073    flags = bit.bor(RANGE, COUNT, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1074    addr_type = 'ADDR_OTHER',
   1075    func = 'ex_goto',
   1076  },
   1077  {
   1078    command = 'grep',
   1079    flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE),
   1080    addr_type = 'ADDR_OTHER',
   1081    func = 'ex_make',
   1082  },
   1083  {
   1084    command = 'grepadd',
   1085    flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE),
   1086    addr_type = 'ADDR_OTHER',
   1087    func = 'ex_make',
   1088  },
   1089  {
   1090    command = 'gui',
   1091    flags = bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR, CMDWIN, LOCK_OK),
   1092    addr_type = 'ADDR_NONE',
   1093    func = 'ex_nogui',
   1094  },
   1095  {
   1096    command = 'gvim',
   1097    flags = bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR, CMDWIN, LOCK_OK),
   1098    addr_type = 'ADDR_NONE',
   1099    func = 'ex_nogui',
   1100  },
   1101  {
   1102    command = 'help',
   1103    flags = bit.bor(BANG, EXTRA, NOTRLCOM),
   1104    addr_type = 'ADDR_NONE',
   1105    func = 'ex_help',
   1106  },
   1107  {
   1108    command = 'helpclose',
   1109    flags = TRLBAR,
   1110    addr_type = 'ADDR_NONE',
   1111    func = 'ex_helpclose',
   1112  },
   1113  {
   1114    command = 'helpgrep',
   1115    flags = bit.bor(EXTRA, NOTRLCOM, NEEDARG),
   1116    addr_type = 'ADDR_NONE',
   1117    func = 'ex_helpgrep',
   1118  },
   1119  {
   1120    command = 'helptags',
   1121    flags = bit.bor(NEEDARG, FILES, TRLBAR, CMDWIN, LOCK_OK),
   1122    addr_type = 'ADDR_NONE',
   1123    func = 'ex_helptags',
   1124  },
   1125  {
   1126    command = 'highlight',
   1127    flags = bit.bor(BANG, EXTRA, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1128    addr_type = 'ADDR_NONE',
   1129    func = 'ex_highlight',
   1130  },
   1131  {
   1132    command = 'hide',
   1133    flags = bit.bor(BANG, RANGE, COUNT, EXTRA, TRLBAR),
   1134    addr_type = 'ADDR_WINDOWS',
   1135    func = 'ex_hide',
   1136  },
   1137  {
   1138    command = 'history',
   1139    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   1140    addr_type = 'ADDR_NONE',
   1141    func = 'ex_history',
   1142  },
   1143  {
   1144    command = 'horizontal',
   1145    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   1146    addr_type = 'ADDR_NONE',
   1147    func = 'ex_wrongmodifier',
   1148  },
   1149  {
   1150    command = 'insert',
   1151    flags = bit.bor(BANG, RANGE, TRLBAR, CMDWIN, LOCK_OK, MODIFY),
   1152    addr_type = 'ADDR_LINES',
   1153    func = 'ex_append',
   1154  },
   1155  {
   1156    command = 'iabbrev',
   1157    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1158    addr_type = 'ADDR_NONE',
   1159    func = 'ex_abbreviate',
   1160  },
   1161  {
   1162    command = 'iabclear',
   1163    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   1164    addr_type = 'ADDR_NONE',
   1165    func = 'ex_abclear',
   1166  },
   1167  {
   1168    command = 'if',
   1169    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
   1170    addr_type = 'ADDR_NONE',
   1171    func = 'ex_if',
   1172  },
   1173  {
   1174    command = 'ijump',
   1175    flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA),
   1176    addr_type = 'ADDR_LINES',
   1177    func = 'ex_findpat',
   1178  },
   1179  {
   1180    command = 'ilist',
   1181    flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK),
   1182    addr_type = 'ADDR_LINES',
   1183    func = 'ex_findpat',
   1184  },
   1185  {
   1186    command = 'imap',
   1187    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1188    addr_type = 'ADDR_NONE',
   1189    func = 'ex_map',
   1190  },
   1191  {
   1192    command = 'imapclear',
   1193    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   1194    addr_type = 'ADDR_NONE',
   1195    func = 'ex_mapclear',
   1196  },
   1197  {
   1198    command = 'imenu',
   1199    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1200    addr_type = 'ADDR_OTHER',
   1201    func = 'ex_menu',
   1202  },
   1203  {
   1204    command = 'inoremap',
   1205    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1206    addr_type = 'ADDR_NONE',
   1207    func = 'ex_map',
   1208  },
   1209  {
   1210    command = 'inoreabbrev',
   1211    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1212    addr_type = 'ADDR_NONE',
   1213    func = 'ex_abbreviate',
   1214  },
   1215  {
   1216    command = 'inoremenu',
   1217    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1218    addr_type = 'ADDR_OTHER',
   1219    func = 'ex_menu',
   1220  },
   1221  {
   1222    command = 'intro',
   1223    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
   1224    addr_type = 'ADDR_NONE',
   1225    func = 'ex_intro',
   1226  },
   1227  {
   1228    command = 'iput',
   1229    flags = bit.bor(RANGE, WHOLEFOLD, BANG, REGSTR, TRLBAR, ZEROR, CMDWIN, LOCK_OK, MODIFY),
   1230    addr_type = 'ADDR_LINES',
   1231    func = 'ex_iput',
   1232  },
   1233  {
   1234    command = 'isearch',
   1235    flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK),
   1236    addr_type = 'ADDR_LINES',
   1237    func = 'ex_findpat',
   1238  },
   1239  {
   1240    command = 'isplit',
   1241    flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA),
   1242    addr_type = 'ADDR_LINES',
   1243    func = 'ex_findpat',
   1244  },
   1245  {
   1246    command = 'iunmap',
   1247    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1248    addr_type = 'ADDR_NONE',
   1249    func = 'ex_unmap',
   1250  },
   1251  {
   1252    command = 'iunabbrev',
   1253    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1254    addr_type = 'ADDR_NONE',
   1255    func = 'ex_abbreviate',
   1256  },
   1257  {
   1258    command = 'iunmenu',
   1259    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1260    addr_type = 'ADDR_NONE',
   1261    func = 'ex_menu',
   1262  },
   1263  {
   1264    command = 'join',
   1265    flags = bit.bor(BANG, RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY),
   1266    addr_type = 'ADDR_LINES',
   1267    func = 'ex_join',
   1268  },
   1269  {
   1270    command = 'jumps',
   1271    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
   1272    addr_type = 'ADDR_NONE',
   1273    func = 'ex_jumps',
   1274  },
   1275  {
   1276    command = 'k',
   1277    flags = bit.bor(RANGE, WORD1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1278    addr_type = 'ADDR_LINES',
   1279    func = 'ex_mark',
   1280  },
   1281  {
   1282    command = 'keepmarks',
   1283    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   1284    addr_type = 'ADDR_NONE',
   1285    func = 'ex_wrongmodifier',
   1286  },
   1287  {
   1288    command = 'keepjumps',
   1289    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   1290    addr_type = 'ADDR_NONE',
   1291    func = 'ex_wrongmodifier',
   1292  },
   1293  {
   1294    command = 'keeppatterns',
   1295    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   1296    addr_type = 'ADDR_NONE',
   1297    func = 'ex_wrongmodifier',
   1298  },
   1299  {
   1300    command = 'keepalt',
   1301    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   1302    addr_type = 'ADDR_NONE',
   1303    func = 'ex_wrongmodifier',
   1304  },
   1305  {
   1306    command = 'list',
   1307    flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK),
   1308    addr_type = 'ADDR_LINES',
   1309    func = 'ex_print',
   1310  },
   1311  {
   1312    command = 'lNext',
   1313    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
   1314    addr_type = 'ADDR_UNSIGNED',
   1315    func = 'ex_cnext',
   1316  },
   1317  {
   1318    command = 'lNfile',
   1319    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
   1320    addr_type = 'ADDR_UNSIGNED',
   1321    func = 'ex_cnext',
   1322  },
   1323  {
   1324    command = 'last',
   1325    flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR),
   1326    addr_type = 'ADDR_NONE',
   1327    func = 'ex_last',
   1328  },
   1329  {
   1330    command = 'labove',
   1331    flags = bit.bor(RANGE, COUNT, TRLBAR),
   1332    addr_type = 'ADDR_UNSIGNED',
   1333    func = 'ex_cbelow',
   1334  },
   1335  {
   1336    command = 'language',
   1337    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   1338    addr_type = 'ADDR_NONE',
   1339    func = 'ex_language',
   1340  },
   1341  {
   1342    command = 'laddexpr',
   1343    flags = bit.bor(NEEDARG, WORD1, NOTRLCOM),
   1344    addr_type = 'ADDR_NONE',
   1345    func = 'ex_cexpr',
   1346  },
   1347  {
   1348    command = 'laddbuffer',
   1349    flags = bit.bor(RANGE, WORD1, TRLBAR),
   1350    addr_type = 'ADDR_LINES',
   1351    func = 'ex_cbuffer',
   1352  },
   1353  {
   1354    command = 'laddfile',
   1355    flags = bit.bor(TRLBAR, FILE1),
   1356    addr_type = 'ADDR_NONE',
   1357    func = 'ex_cfile',
   1358  },
   1359  {
   1360    command = 'lafter',
   1361    flags = bit.bor(RANGE, COUNT, TRLBAR),
   1362    addr_type = 'ADDR_UNSIGNED',
   1363    func = 'ex_cbelow',
   1364  },
   1365  {
   1366    command = 'later',
   1367    flags = bit.bor(TRLBAR, EXTRA, NOSPC, CMDWIN, LOCK_OK),
   1368    addr_type = 'ADDR_NONE',
   1369    func = 'ex_later',
   1370  },
   1371  {
   1372    command = 'lbuffer',
   1373    flags = bit.bor(BANG, RANGE, WORD1, TRLBAR),
   1374    addr_type = 'ADDR_LINES',
   1375    func = 'ex_cbuffer',
   1376  },
   1377  {
   1378    command = 'lbefore',
   1379    flags = bit.bor(RANGE, COUNT, TRLBAR),
   1380    addr_type = 'ADDR_UNSIGNED',
   1381    func = 'ex_cbelow',
   1382  },
   1383  {
   1384    command = 'lbelow',
   1385    flags = bit.bor(RANGE, COUNT, TRLBAR),
   1386    addr_type = 'ADDR_UNSIGNED',
   1387    func = 'ex_cbelow',
   1388  },
   1389  {
   1390    command = 'lbottom',
   1391    flags = bit.bor(TRLBAR),
   1392    addr_type = 'ADDR_NONE',
   1393    func = 'ex_cbottom',
   1394  },
   1395  {
   1396    command = 'lcd',
   1397    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
   1398    addr_type = 'ADDR_NONE',
   1399    func = 'ex_cd',
   1400  },
   1401  {
   1402    command = 'lchdir',
   1403    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
   1404    addr_type = 'ADDR_NONE',
   1405    func = 'ex_cd',
   1406  },
   1407  {
   1408    command = 'lclose',
   1409    flags = bit.bor(RANGE, COUNT, TRLBAR),
   1410    addr_type = 'ADDR_OTHER',
   1411    func = 'ex_cclose',
   1412  },
   1413  {
   1414    command = 'ldo',
   1415    flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL),
   1416    addr_type = 'ADDR_QUICKFIX_VALID',
   1417    func = 'ex_listdo',
   1418  },
   1419  {
   1420    command = 'left',
   1421    flags = bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY),
   1422    addr_type = 'ADDR_LINES',
   1423    func = 'ex_align',
   1424  },
   1425  {
   1426    command = 'leftabove',
   1427    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   1428    addr_type = 'ADDR_NONE',
   1429    func = 'ex_wrongmodifier',
   1430  },
   1431  {
   1432    command = 'let',
   1433    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
   1434    addr_type = 'ADDR_NONE',
   1435    func = 'ex_let',
   1436  },
   1437  {
   1438    command = 'lexpr',
   1439    flags = bit.bor(NEEDARG, WORD1, NOTRLCOM, BANG),
   1440    addr_type = 'ADDR_NONE',
   1441    func = 'ex_cexpr',
   1442  },
   1443  {
   1444    command = 'lfile',
   1445    flags = bit.bor(TRLBAR, FILE1, BANG),
   1446    addr_type = 'ADDR_NONE',
   1447    func = 'ex_cfile',
   1448  },
   1449  -- Even though 'lfdo' is alphabetically lower than 'lfile', it is after
   1450  -- 'lfile' in this cmd list to support the existing ":lf" abbreviation.
   1451  {
   1452    command = 'lfdo',
   1453    flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL),
   1454    addr_type = 'ADDR_QUICKFIX_VALID',
   1455    func = 'ex_listdo',
   1456  },
   1457  {
   1458    command = 'lfirst',
   1459    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
   1460    addr_type = 'ADDR_UNSIGNED',
   1461    func = 'ex_cc',
   1462  },
   1463  {
   1464    command = 'lgetfile',
   1465    flags = bit.bor(TRLBAR, FILE1),
   1466    addr_type = 'ADDR_NONE',
   1467    func = 'ex_cfile',
   1468  },
   1469  {
   1470    command = 'lgetbuffer',
   1471    flags = bit.bor(RANGE, WORD1, TRLBAR),
   1472    addr_type = 'ADDR_LINES',
   1473    func = 'ex_cbuffer',
   1474  },
   1475  {
   1476    command = 'lgetexpr',
   1477    flags = bit.bor(NEEDARG, WORD1, NOTRLCOM),
   1478    addr_type = 'ADDR_NONE',
   1479    func = 'ex_cexpr',
   1480  },
   1481  {
   1482    command = 'lgrep',
   1483    flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE),
   1484    addr_type = 'ADDR_OTHER',
   1485    func = 'ex_make',
   1486  },
   1487  {
   1488    command = 'lgrepadd',
   1489    flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE),
   1490    addr_type = 'ADDR_OTHER',
   1491    func = 'ex_make',
   1492  },
   1493  {
   1494    command = 'lhelpgrep',
   1495    flags = bit.bor(EXTRA, NOTRLCOM, NEEDARG),
   1496    addr_type = 'ADDR_NONE',
   1497    func = 'ex_helpgrep',
   1498  },
   1499  {
   1500    command = 'lhistory',
   1501    flags = bit.bor(RANGE, COUNT, TRLBAR),
   1502    addr_type = 'ADDR_UNSIGNED',
   1503    func = 'qf_history',
   1504  },
   1505  {
   1506    command = 'll',
   1507    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
   1508    addr_type = 'ADDR_QUICKFIX',
   1509    func = 'ex_cc',
   1510  },
   1511  {
   1512    command = 'llast',
   1513    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
   1514    addr_type = 'ADDR_UNSIGNED',
   1515    func = 'ex_cc',
   1516  },
   1517  {
   1518    command = 'llist',
   1519    flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   1520    addr_type = 'ADDR_NONE',
   1521    func = 'qf_list',
   1522  },
   1523  {
   1524    command = 'lmap',
   1525    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1526    addr_type = 'ADDR_NONE',
   1527    func = 'ex_map',
   1528  },
   1529  {
   1530    command = 'lmapclear',
   1531    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   1532    addr_type = 'ADDR_NONE',
   1533    func = 'ex_mapclear',
   1534  },
   1535  {
   1536    command = 'lmake',
   1537    flags = bit.bor(BANG, EXTRA, NOTRLCOM, TRLBAR, XFILE),
   1538    addr_type = 'ADDR_NONE',
   1539    func = 'ex_make',
   1540  },
   1541  {
   1542    command = 'lnoremap',
   1543    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1544    addr_type = 'ADDR_NONE',
   1545    func = 'ex_map',
   1546  },
   1547  {
   1548    command = 'lnext',
   1549    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
   1550    addr_type = 'ADDR_UNSIGNED',
   1551    func = 'ex_cnext',
   1552  },
   1553  {
   1554    command = 'lnewer',
   1555    flags = bit.bor(RANGE, COUNT, TRLBAR),
   1556    addr_type = 'ADDR_UNSIGNED',
   1557    func = 'qf_age',
   1558  },
   1559  {
   1560    command = 'lnfile',
   1561    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
   1562    addr_type = 'ADDR_UNSIGNED',
   1563    func = 'ex_cnext',
   1564  },
   1565  {
   1566    command = 'loadview',
   1567    flags = bit.bor(FILE1, TRLBAR),
   1568    addr_type = 'ADDR_NONE',
   1569    func = 'ex_loadview',
   1570  },
   1571  {
   1572    command = 'loadkeymap',
   1573    flags = bit.bor(CMDWIN, LOCK_OK),
   1574    addr_type = 'ADDR_NONE',
   1575    func = 'ex_loadkeymap',
   1576  },
   1577  {
   1578    command = 'lockmarks',
   1579    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   1580    addr_type = 'ADDR_NONE',
   1581    func = 'ex_wrongmodifier',
   1582  },
   1583  {
   1584    command = 'lockvar',
   1585    flags = bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK),
   1586    addr_type = 'ADDR_NONE',
   1587    func = 'ex_lockvar',
   1588  },
   1589  {
   1590    command = 'lolder',
   1591    flags = bit.bor(RANGE, COUNT, TRLBAR),
   1592    addr_type = 'ADDR_UNSIGNED',
   1593    func = 'qf_age',
   1594  },
   1595  {
   1596    command = 'lopen',
   1597    flags = bit.bor(RANGE, COUNT, TRLBAR),
   1598    addr_type = 'ADDR_OTHER',
   1599    func = 'ex_copen',
   1600  },
   1601  {
   1602    command = 'lprevious',
   1603    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
   1604    addr_type = 'ADDR_UNSIGNED',
   1605    func = 'ex_cnext',
   1606  },
   1607  {
   1608    command = 'lpfile',
   1609    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
   1610    addr_type = 'ADDR_OTHER',
   1611    func = 'ex_cnext',
   1612  },
   1613  {
   1614    command = 'lrewind',
   1615    flags = bit.bor(RANGE, COUNT, TRLBAR, BANG),
   1616    addr_type = 'ADDR_UNSIGNED',
   1617    func = 'ex_cc',
   1618  },
   1619  {
   1620    command = 'ltag',
   1621    flags = bit.bor(TRLBAR, BANG, WORD1),
   1622    addr_type = 'ADDR_NONE',
   1623    func = 'ex_tag',
   1624  },
   1625  {
   1626    command = 'lunmap',
   1627    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1628    addr_type = 'ADDR_NONE',
   1629    func = 'ex_unmap',
   1630  },
   1631  {
   1632    command = 'lua',
   1633    flags = bit.bor(RANGE, EXTRA, CMDWIN, LOCK_OK),
   1634    addr_type = 'ADDR_LINES',
   1635    func = 'ex_lua',
   1636  },
   1637  {
   1638    command = 'luado',
   1639    flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   1640    addr_type = 'ADDR_LINES',
   1641    func = 'ex_luado',
   1642  },
   1643  {
   1644    command = 'luafile',
   1645    flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK),
   1646    addr_type = 'ADDR_LINES',
   1647    func = 'ex_luafile',
   1648  },
   1649  {
   1650    command = 'lvimgrep',
   1651    flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK),
   1652    addr_type = 'ADDR_OTHER',
   1653    func = 'ex_vimgrep',
   1654  },
   1655  {
   1656    command = 'lvimgrepadd',
   1657    flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK),
   1658    addr_type = 'ADDR_OTHER',
   1659    func = 'ex_vimgrep',
   1660  },
   1661  {
   1662    command = 'lwindow',
   1663    flags = bit.bor(RANGE, COUNT, TRLBAR),
   1664    addr_type = 'ADDR_OTHER',
   1665    func = 'ex_cwindow',
   1666  },
   1667  {
   1668    command = 'ls',
   1669    flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   1670    addr_type = 'ADDR_NONE',
   1671    func = 'buflist_list',
   1672  },
   1673  {
   1674    command = 'lsp',
   1675    flags = bit.bor(NEEDARG, EXTRA),
   1676    addr_type = 'ADDR_NONE',
   1677    func = 'ex_lsp',
   1678  },
   1679  {
   1680    command = 'move',
   1681    flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY),
   1682    addr_type = 'ADDR_LINES',
   1683    func = 'ex_copymove',
   1684  },
   1685  {
   1686    command = 'mark',
   1687    flags = bit.bor(RANGE, WORD1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1688    addr_type = 'ADDR_LINES',
   1689    func = 'ex_mark',
   1690  },
   1691  {
   1692    command = 'make',
   1693    flags = bit.bor(BANG, EXTRA, NOTRLCOM, TRLBAR, XFILE),
   1694    addr_type = 'ADDR_NONE',
   1695    func = 'ex_make',
   1696  },
   1697  {
   1698    command = 'map',
   1699    flags = bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1700    addr_type = 'ADDR_NONE',
   1701    func = 'ex_map',
   1702  },
   1703  {
   1704    command = 'mapclear',
   1705    flags = bit.bor(EXTRA, BANG, TRLBAR, CMDWIN, LOCK_OK),
   1706    addr_type = 'ADDR_NONE',
   1707    func = 'ex_mapclear',
   1708  },
   1709  {
   1710    command = 'marks',
   1711    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   1712    addr_type = 'ADDR_NONE',
   1713    func = 'ex_marks',
   1714  },
   1715  {
   1716    command = 'match',
   1717    flags = bit.bor(RANGE, EXTRA, CMDWIN, LOCK_OK),
   1718    addr_type = 'ADDR_OTHER',
   1719    func = 'ex_match',
   1720  },
   1721  {
   1722    command = 'menu',
   1723    flags = bit.bor(RANGE, ZEROR, BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1724    addr_type = 'ADDR_OTHER',
   1725    func = 'ex_menu',
   1726  },
   1727  {
   1728    command = 'menutranslate',
   1729    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1730    addr_type = 'ADDR_NONE',
   1731    func = 'ex_menutranslate',
   1732  },
   1733  {
   1734    command = 'messages',
   1735    flags = bit.bor(EXTRA, TRLBAR, RANGE, CMDWIN, LOCK_OK),
   1736    addr_type = 'ADDR_OTHER',
   1737    func = 'ex_messages',
   1738  },
   1739  {
   1740    command = 'mkexrc',
   1741    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
   1742    addr_type = 'ADDR_NONE',
   1743    func = 'ex_mkrc',
   1744  },
   1745  {
   1746    command = 'mksession',
   1747    flags = bit.bor(BANG, FILE1, TRLBAR),
   1748    addr_type = 'ADDR_NONE',
   1749    func = 'ex_mkrc',
   1750  },
   1751  {
   1752    command = 'mkspell',
   1753    flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE),
   1754    addr_type = 'ADDR_NONE',
   1755    func = 'ex_mkspell',
   1756  },
   1757  {
   1758    command = 'mkvimrc',
   1759    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
   1760    addr_type = 'ADDR_NONE',
   1761    func = 'ex_mkrc',
   1762  },
   1763  {
   1764    command = 'mkview',
   1765    flags = bit.bor(BANG, FILE1, TRLBAR),
   1766    addr_type = 'ADDR_NONE',
   1767    func = 'ex_mkrc',
   1768  },
   1769  {
   1770    command = 'mode',
   1771    flags = bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK),
   1772    addr_type = 'ADDR_NONE',
   1773    func = 'ex_mode',
   1774  },
   1775  {
   1776    command = 'mzscheme',
   1777    flags = bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, CMDWIN, LOCK_OK, SBOXOK),
   1778    addr_type = 'ADDR_LINES',
   1779    func = 'ex_script_ni',
   1780  },
   1781  {
   1782    command = 'mzfile',
   1783    flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK),
   1784    addr_type = 'ADDR_LINES',
   1785    func = 'ex_ni',
   1786  },
   1787  {
   1788    command = 'next',
   1789    flags = bit.bor(RANGE, BANG, FILES, CMDARG, ARGOPT, TRLBAR),
   1790    addr_type = 'ADDR_OTHER',
   1791    func = 'ex_next',
   1792  },
   1793  {
   1794    command = 'new',
   1795    flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR),
   1796    addr_type = 'ADDR_OTHER',
   1797    func = 'ex_splitview',
   1798  },
   1799  {
   1800    command = 'nmap',
   1801    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1802    addr_type = 'ADDR_NONE',
   1803    func = 'ex_map',
   1804  },
   1805  {
   1806    command = 'nmapclear',
   1807    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   1808    addr_type = 'ADDR_NONE',
   1809    func = 'ex_mapclear',
   1810  },
   1811  {
   1812    command = 'nmenu',
   1813    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1814    addr_type = 'ADDR_OTHER',
   1815    func = 'ex_menu',
   1816  },
   1817  {
   1818    command = 'nnoremap',
   1819    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1820    addr_type = 'ADDR_NONE',
   1821    func = 'ex_map',
   1822  },
   1823  {
   1824    command = 'nnoremenu',
   1825    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1826    addr_type = 'ADDR_OTHER',
   1827    func = 'ex_menu',
   1828  },
   1829  {
   1830    command = 'noremap',
   1831    flags = bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1832    addr_type = 'ADDR_NONE',
   1833    func = 'ex_map',
   1834  },
   1835  {
   1836    command = 'noautocmd',
   1837    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   1838    addr_type = 'ADDR_NONE',
   1839    func = 'ex_wrongmodifier',
   1840  },
   1841  {
   1842    command = 'nohlsearch',
   1843    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1844    addr_type = 'ADDR_NONE',
   1845    func = 'ex_nohlsearch',
   1846  },
   1847  {
   1848    command = 'noreabbrev',
   1849    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1850    addr_type = 'ADDR_NONE',
   1851    func = 'ex_abbreviate',
   1852  },
   1853  {
   1854    command = 'noremenu',
   1855    flags = bit.bor(RANGE, ZEROR, BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1856    addr_type = 'ADDR_OTHER',
   1857    func = 'ex_menu',
   1858  },
   1859  {
   1860    command = 'noswapfile',
   1861    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   1862    addr_type = 'ADDR_NONE',
   1863    func = 'ex_wrongmodifier',
   1864  },
   1865  {
   1866    command = 'normal',
   1867    flags = bit.bor(RANGE, BANG, EXTRA, NEEDARG, NOTRLCOM, CTRLV, SBOXOK, CMDWIN, LOCK_OK),
   1868    addr_type = 'ADDR_LINES',
   1869    func = 'ex_normal',
   1870  },
   1871  {
   1872    command = 'number',
   1873    flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK),
   1874    addr_type = 'ADDR_LINES',
   1875    func = 'ex_print',
   1876  },
   1877  {
   1878    command = 'nunmap',
   1879    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1880    addr_type = 'ADDR_NONE',
   1881    func = 'ex_unmap',
   1882  },
   1883  {
   1884    command = 'nunmenu',
   1885    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1886    addr_type = 'ADDR_NONE',
   1887    func = 'ex_menu',
   1888  },
   1889  {
   1890    command = 'oldfiles',
   1891    flags = bit.bor(BANG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1892    addr_type = 'ADDR_NONE',
   1893    func = 'ex_oldfiles',
   1894  },
   1895  {
   1896    command = 'omap',
   1897    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1898    addr_type = 'ADDR_NONE',
   1899    func = 'ex_map',
   1900  },
   1901  {
   1902    command = 'omapclear',
   1903    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   1904    addr_type = 'ADDR_NONE',
   1905    func = 'ex_mapclear',
   1906  },
   1907  {
   1908    command = 'omenu',
   1909    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1910    addr_type = 'ADDR_OTHER',
   1911    func = 'ex_menu',
   1912  },
   1913  {
   1914    command = 'only',
   1915    flags = bit.bor(BANG, RANGE, COUNT, TRLBAR),
   1916    addr_type = 'ADDR_WINDOWS',
   1917    func = 'ex_only',
   1918  },
   1919  {
   1920    command = 'onoremap',
   1921    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1922    addr_type = 'ADDR_NONE',
   1923    func = 'ex_map',
   1924  },
   1925  {
   1926    command = 'onoremenu',
   1927    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1928    addr_type = 'ADDR_OTHER',
   1929    func = 'ex_menu',
   1930  },
   1931  {
   1932    command = 'options',
   1933    flags = bit.bor(TRLBAR),
   1934    addr_type = 'ADDR_NONE',
   1935    func = 'ex_options',
   1936  },
   1937  {
   1938    command = 'ounmap',
   1939    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1940    addr_type = 'ADDR_NONE',
   1941    func = 'ex_unmap',
   1942  },
   1943  {
   1944    command = 'ounmenu',
   1945    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   1946    addr_type = 'ADDR_NONE',
   1947    func = 'ex_menu',
   1948  },
   1949  {
   1950    command = 'ownsyntax',
   1951    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
   1952    addr_type = 'ADDR_NONE',
   1953    func = 'ex_ownsyntax',
   1954  },
   1955  {
   1956    command = 'print',
   1957    flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, SBOXOK),
   1958    addr_type = 'ADDR_LINES',
   1959    func = 'ex_print',
   1960  },
   1961  {
   1962    command = 'packadd',
   1963    flags = bit.bor(BANG, FILE1, NEEDARG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1964    addr_type = 'ADDR_NONE',
   1965    func = 'ex_packadd',
   1966  },
   1967  {
   1968    command = 'packloadall',
   1969    flags = bit.bor(BANG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   1970    addr_type = 'ADDR_NONE',
   1971    func = 'ex_packloadall',
   1972  },
   1973  {
   1974    command = 'pbuffer',
   1975    flags = bit.bor(BANG, RANGE, BUFNAME, BUFUNL, COUNT, EXTRA, CMDARG, TRLBAR),
   1976    addr_type = 'ADDR_BUFFERS',
   1977    func = 'ex_pbuffer',
   1978  },
   1979  {
   1980    command = 'pclose',
   1981    flags = bit.bor(BANG, TRLBAR),
   1982    addr_type = 'ADDR_NONE',
   1983    func = 'ex_pclose',
   1984  },
   1985  {
   1986    command = 'perl',
   1987    flags = bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, SBOXOK, CMDWIN, LOCK_OK),
   1988    addr_type = 'ADDR_LINES',
   1989    func = 'ex_perl',
   1990  },
   1991  {
   1992    command = 'perldo',
   1993    flags = bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, CMDWIN, LOCK_OK),
   1994    addr_type = 'ADDR_LINES',
   1995    func = 'ex_perldo',
   1996  },
   1997  {
   1998    command = 'perlfile',
   1999    flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK),
   2000    addr_type = 'ADDR_LINES',
   2001    func = 'ex_perlfile',
   2002  },
   2003  {
   2004    command = 'pedit',
   2005    flags = bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR),
   2006    addr_type = 'ADDR_NONE',
   2007    func = 'ex_pedit',
   2008  },
   2009  {
   2010    command = 'pop',
   2011    flags = bit.bor(RANGE, BANG, COUNT, TRLBAR, ZEROR),
   2012    addr_type = 'ADDR_OTHER',
   2013    func = 'ex_tag',
   2014  },
   2015  {
   2016    command = 'popup',
   2017    flags = bit.bor(NEEDARG, EXTRA, BANG, TRLBAR, NOTRLCOM, CMDWIN, LOCK_OK),
   2018    addr_type = 'ADDR_NONE',
   2019    func = 'ex_popup',
   2020  },
   2021  {
   2022    command = 'ppop',
   2023    flags = bit.bor(RANGE, BANG, COUNT, TRLBAR, ZEROR),
   2024    addr_type = 'ADDR_OTHER',
   2025    func = 'ex_ptag',
   2026  },
   2027  {
   2028    command = 'preserve',
   2029    flags = bit.bor(TRLBAR),
   2030    addr_type = 'ADDR_NONE',
   2031    func = 'ex_preserve',
   2032  },
   2033  {
   2034    command = 'previous',
   2035    flags = bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR),
   2036    addr_type = 'ADDR_OTHER',
   2037    func = 'ex_previous',
   2038  },
   2039  {
   2040    command = 'profile',
   2041    flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   2042    addr_type = 'ADDR_NONE',
   2043    func = 'ex_profile',
   2044  },
   2045  {
   2046    command = 'profdel',
   2047    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   2048    addr_type = 'ADDR_NONE',
   2049    func = 'ex_breakdel',
   2050  },
   2051  {
   2052    command = 'psearch',
   2053    flags = bit.bor(BANG, RANGE, WHOLEFOLD, DFLALL, EXTRA),
   2054    addr_type = 'ADDR_LINES',
   2055    func = 'ex_psearch',
   2056  },
   2057  {
   2058    command = 'ptag',
   2059    flags = bit.bor(RANGE, BANG, WORD1, TRLBAR, ZEROR),
   2060    addr_type = 'ADDR_OTHER',
   2061    func = 'ex_ptag',
   2062  },
   2063  {
   2064    command = 'ptNext',
   2065    flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR),
   2066    addr_type = 'ADDR_OTHER',
   2067    func = 'ex_ptag',
   2068  },
   2069  {
   2070    command = 'ptfirst',
   2071    flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR),
   2072    addr_type = 'ADDR_OTHER',
   2073    func = 'ex_ptag',
   2074  },
   2075  {
   2076    command = 'ptjump',
   2077    flags = bit.bor(BANG, TRLBAR, WORD1),
   2078    addr_type = 'ADDR_NONE',
   2079    func = 'ex_ptag',
   2080  },
   2081  {
   2082    command = 'ptlast',
   2083    flags = bit.bor(BANG, TRLBAR),
   2084    addr_type = 'ADDR_NONE',
   2085    func = 'ex_ptag',
   2086  },
   2087  {
   2088    command = 'ptnext',
   2089    flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR),
   2090    addr_type = 'ADDR_OTHER',
   2091    func = 'ex_ptag',
   2092  },
   2093  {
   2094    command = 'ptprevious',
   2095    flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR),
   2096    addr_type = 'ADDR_OTHER',
   2097    func = 'ex_ptag',
   2098  },
   2099  {
   2100    command = 'ptrewind',
   2101    flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR),
   2102    addr_type = 'ADDR_OTHER',
   2103    func = 'ex_ptag',
   2104  },
   2105  {
   2106    command = 'ptselect',
   2107    flags = bit.bor(BANG, TRLBAR, WORD1),
   2108    addr_type = 'ADDR_NONE',
   2109    func = 'ex_ptag',
   2110  },
   2111  {
   2112    command = 'put',
   2113    flags = bit.bor(RANGE, WHOLEFOLD, BANG, REGSTR, TRLBAR, ZEROR, CMDWIN, LOCK_OK, MODIFY),
   2114    addr_type = 'ADDR_LINES',
   2115    func = 'ex_put',
   2116  },
   2117  {
   2118    command = 'pwd',
   2119    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
   2120    addr_type = 'ADDR_NONE',
   2121    func = 'ex_pwd',
   2122  },
   2123  {
   2124    command = 'python',
   2125    flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2126    addr_type = 'ADDR_LINES',
   2127    func = 'ex_python3',
   2128  },
   2129  {
   2130    command = 'pydo',
   2131    flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2132    addr_type = 'ADDR_LINES',
   2133    func = 'ex_pydo3',
   2134  },
   2135  {
   2136    command = 'pyfile',
   2137    flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK),
   2138    addr_type = 'ADDR_LINES',
   2139    func = 'ex_py3file',
   2140  },
   2141  {
   2142    command = 'py3',
   2143    flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2144    addr_type = 'ADDR_LINES',
   2145    func = 'ex_python3',
   2146  },
   2147  {
   2148    command = 'py3do',
   2149    flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2150    addr_type = 'ADDR_LINES',
   2151    func = 'ex_pydo3',
   2152  },
   2153  {
   2154    command = 'python3',
   2155    flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2156    addr_type = 'ADDR_LINES',
   2157    func = 'ex_python3',
   2158  },
   2159  {
   2160    command = 'py3file',
   2161    flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK),
   2162    addr_type = 'ADDR_LINES',
   2163    func = 'ex_py3file',
   2164  },
   2165  {
   2166    command = 'pyx',
   2167    flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2168    addr_type = 'ADDR_LINES',
   2169    func = 'ex_python3',
   2170  },
   2171  {
   2172    command = 'pyxdo',
   2173    flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2174    addr_type = 'ADDR_LINES',
   2175    func = 'ex_pydo3',
   2176  },
   2177  {
   2178    command = 'pythonx',
   2179    flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2180    addr_type = 'ADDR_LINES',
   2181    func = 'ex_python3',
   2182  },
   2183  {
   2184    command = 'pyxfile',
   2185    flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK),
   2186    addr_type = 'ADDR_LINES',
   2187    func = 'ex_py3file',
   2188  },
   2189  {
   2190    command = 'quit',
   2191    flags = bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK),
   2192    addr_type = 'ADDR_WINDOWS',
   2193    func = 'ex_quit',
   2194  },
   2195  {
   2196    command = 'quitall',
   2197    flags = bit.bor(BANG, TRLBAR),
   2198    addr_type = 'ADDR_NONE',
   2199    func = 'ex_quitall',
   2200  },
   2201  {
   2202    command = 'qall',
   2203    flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK),
   2204    addr_type = 'ADDR_NONE',
   2205    func = 'ex_quitall',
   2206  },
   2207  {
   2208    command = 'read',
   2209    flags = bit.bor(BANG, RANGE, WHOLEFOLD, FILE1, ARGOPT, TRLBAR, ZEROR, CMDWIN, LOCK_OK, MODIFY),
   2210    addr_type = 'ADDR_LINES',
   2211    func = 'ex_read',
   2212  },
   2213  {
   2214    command = 'recover',
   2215    flags = bit.bor(BANG, FILE1, TRLBAR),
   2216    addr_type = 'ADDR_NONE',
   2217    func = 'ex_recover',
   2218  },
   2219  {
   2220    command = 'redo',
   2221    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
   2222    addr_type = 'ADDR_NONE',
   2223    func = 'ex_redo',
   2224  },
   2225  {
   2226    command = 'redir',
   2227    flags = bit.bor(BANG, FILES, TRLBAR, CMDWIN, LOCK_OK),
   2228    addr_type = 'ADDR_NONE',
   2229    func = 'ex_redir',
   2230  },
   2231  {
   2232    command = 'redraw',
   2233    flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK),
   2234    addr_type = 'ADDR_NONE',
   2235    func = 'ex_redraw',
   2236  },
   2237  {
   2238    command = 'redrawstatus',
   2239    flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK),
   2240    addr_type = 'ADDR_NONE',
   2241    func = 'ex_redrawstatus',
   2242  },
   2243  {
   2244    command = 'redrawtabline',
   2245    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
   2246    addr_type = 'ADDR_NONE',
   2247    func = 'ex_redrawtabline',
   2248  },
   2249  {
   2250    command = 'registers',
   2251    flags = bit.bor(EXTRA, NOTRLCOM, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   2252    addr_type = 'ADDR_NONE',
   2253    func = 'ex_display',
   2254  },
   2255  {
   2256    command = 'resize',
   2257    flags = bit.bor(RANGE, TRLBAR, WORD1, CMDWIN, LOCK_OK),
   2258    addr_type = 'ADDR_OTHER',
   2259    func = 'ex_resize',
   2260  },
   2261  {
   2262    command = 'restart',
   2263    flags = bit.bor(CMDARG, EXTRA, NOTRLCOM),
   2264    addr_type = 'ADDR_NONE',
   2265    func = 'ex_restart',
   2266  },
   2267  {
   2268    command = 'retab',
   2269    flags = bit.bor(TRLBAR, RANGE, WHOLEFOLD, DFLALL, BANG, WORD1, CMDWIN, LOCK_OK, MODIFY),
   2270    addr_type = 'ADDR_LINES',
   2271    func = 'ex_retab',
   2272  },
   2273  {
   2274    command = 'return',
   2275    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
   2276    addr_type = 'ADDR_NONE',
   2277    func = 'ex_return',
   2278  },
   2279  {
   2280    command = 'rewind',
   2281    flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR),
   2282    addr_type = 'ADDR_NONE',
   2283    func = 'ex_rewind',
   2284  },
   2285  {
   2286    command = 'right',
   2287    flags = bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY),
   2288    addr_type = 'ADDR_LINES',
   2289    func = 'ex_align',
   2290  },
   2291  {
   2292    command = 'rightbelow',
   2293    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   2294    addr_type = 'ADDR_NONE',
   2295    func = 'ex_wrongmodifier',
   2296  },
   2297  {
   2298    command = 'rshada',
   2299    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
   2300    addr_type = 'ADDR_NONE',
   2301    func = 'ex_shada',
   2302  },
   2303  {
   2304    command = 'runtime',
   2305    flags = bit.bor(BANG, NEEDARG, FILES, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   2306    addr_type = 'ADDR_NONE',
   2307    func = 'ex_runtime',
   2308  },
   2309  {
   2310    command = 'rundo',
   2311    flags = bit.bor(NEEDARG, FILE1),
   2312    addr_type = 'ADDR_NONE',
   2313    func = 'ex_rundo',
   2314  },
   2315  {
   2316    command = 'ruby',
   2317    flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2318    addr_type = 'ADDR_LINES',
   2319    func = 'ex_ruby',
   2320  },
   2321  {
   2322    command = 'rubydo',
   2323    flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2324    addr_type = 'ADDR_LINES',
   2325    func = 'ex_rubydo',
   2326  },
   2327  {
   2328    command = 'rubyfile',
   2329    flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK),
   2330    addr_type = 'ADDR_LINES',
   2331    func = 'ex_rubyfile',
   2332  },
   2333  {
   2334    command = 'rviminfo',
   2335    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
   2336    addr_type = 'ADDR_NONE',
   2337    func = 'ex_shada',
   2338  },
   2339  {
   2340    command = 'substitute',
   2341    flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW),
   2342    addr_type = 'ADDR_LINES',
   2343    func = 'ex_substitute',
   2344    preview_func = 'ex_substitute_preview',
   2345  },
   2346  {
   2347    command = 'sNext',
   2348    flags = bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR),
   2349    addr_type = 'ADDR_OTHER',
   2350    func = 'ex_previous',
   2351  },
   2352  {
   2353    command = 'sargument',
   2354    flags = bit.bor(BANG, RANGE, COUNT, EXTRA, CMDARG, ARGOPT, TRLBAR),
   2355    addr_type = 'ADDR_ARGUMENTS',
   2356    func = 'ex_argument',
   2357  },
   2358  {
   2359    command = 'sall',
   2360    flags = bit.bor(BANG, RANGE, COUNT, TRLBAR),
   2361    addr_type = 'ADDR_OTHER',
   2362    func = 'ex_all',
   2363  },
   2364  {
   2365    command = 'sandbox',
   2366    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   2367    addr_type = 'ADDR_NONE',
   2368    func = 'ex_wrongmodifier',
   2369  },
   2370  {
   2371    command = 'saveas',
   2372    flags = bit.bor(BANG, FILE1, ARGOPT, CMDWIN, LOCK_OK, TRLBAR),
   2373    addr_type = 'ADDR_NONE',
   2374    func = 'ex_write',
   2375  },
   2376  {
   2377    command = 'sbuffer',
   2378    flags = bit.bor(BANG, RANGE, BUFNAME, BUFUNL, COUNT, EXTRA, CMDARG, TRLBAR),
   2379    addr_type = 'ADDR_BUFFERS',
   2380    func = 'ex_buffer',
   2381  },
   2382  {
   2383    command = 'sbNext',
   2384    flags = bit.bor(RANGE, COUNT, CMDARG, TRLBAR),
   2385    addr_type = 'ADDR_OTHER',
   2386    func = 'ex_bprevious',
   2387  },
   2388  {
   2389    command = 'sball',
   2390    flags = bit.bor(RANGE, COUNT, CMDARG, TRLBAR),
   2391    addr_type = 'ADDR_OTHER',
   2392    func = 'ex_buffer_all',
   2393  },
   2394  {
   2395    command = 'sbfirst',
   2396    flags = bit.bor(CMDARG, TRLBAR),
   2397    addr_type = 'ADDR_NONE',
   2398    func = 'ex_brewind',
   2399  },
   2400  {
   2401    command = 'sblast',
   2402    flags = bit.bor(CMDARG, TRLBAR),
   2403    addr_type = 'ADDR_NONE',
   2404    func = 'ex_blast',
   2405  },
   2406  {
   2407    command = 'sbmodified',
   2408    flags = bit.bor(RANGE, COUNT, CMDARG, TRLBAR),
   2409    addr_type = 'ADDR_OTHER',
   2410    func = 'ex_bmodified',
   2411  },
   2412  {
   2413    command = 'sbnext',
   2414    flags = bit.bor(RANGE, COUNT, CMDARG, TRLBAR),
   2415    addr_type = 'ADDR_OTHER',
   2416    func = 'ex_bnext',
   2417  },
   2418  {
   2419    command = 'sbprevious',
   2420    flags = bit.bor(RANGE, COUNT, CMDARG, TRLBAR),
   2421    addr_type = 'ADDR_OTHER',
   2422    func = 'ex_bprevious',
   2423  },
   2424  {
   2425    command = 'sbrewind',
   2426    flags = bit.bor(CMDARG, TRLBAR),
   2427    addr_type = 'ADDR_NONE',
   2428    func = 'ex_brewind',
   2429  },
   2430  {
   2431    command = 'scriptnames',
   2432    flags = bit.bor(BANG, FILES, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK),
   2433    addr_type = 'ADDR_OTHER',
   2434    func = 'ex_scriptnames',
   2435  },
   2436  {
   2437    command = 'scriptencoding',
   2438    flags = bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK),
   2439    addr_type = 'ADDR_NONE',
   2440    func = 'ex_scriptencoding',
   2441  },
   2442  {
   2443    command = 'set',
   2444    flags = bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK),
   2445    addr_type = 'ADDR_NONE',
   2446    func = 'ex_set',
   2447  },
   2448  {
   2449    command = 'setfiletype',
   2450    flags = bit.bor(TRLBAR, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2451    addr_type = 'ADDR_NONE',
   2452    func = 'ex_setfiletype',
   2453  },
   2454  {
   2455    command = 'setglobal',
   2456    flags = bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK),
   2457    addr_type = 'ADDR_NONE',
   2458    func = 'ex_set',
   2459  },
   2460  {
   2461    command = 'setlocal',
   2462    flags = bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK),
   2463    addr_type = 'ADDR_NONE',
   2464    func = 'ex_set',
   2465  },
   2466  {
   2467    command = 'sfind',
   2468    flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR, NEEDARG),
   2469    addr_type = 'ADDR_OTHER',
   2470    func = 'ex_splitview',
   2471  },
   2472  {
   2473    command = 'sfirst',
   2474    flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR),
   2475    addr_type = 'ADDR_NONE',
   2476    func = 'ex_rewind',
   2477  },
   2478  {
   2479    command = 'simalt',
   2480    flags = bit.bor(NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK),
   2481    addr_type = 'ADDR_NONE',
   2482    func = 'ex_ni',
   2483  },
   2484  {
   2485    command = 'sign',
   2486    flags = bit.bor(NEEDARG, RANGE, EXTRA, CMDWIN, LOCK_OK),
   2487    addr_type = 'ADDR_OTHER',
   2488    func = 'ex_sign',
   2489  },
   2490  {
   2491    command = 'silent',
   2492    flags = bit.bor(NEEDARG, EXTRA, BANG, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
   2493    addr_type = 'ADDR_NONE',
   2494    func = 'ex_wrongmodifier',
   2495  },
   2496  {
   2497    command = 'sleep',
   2498    flags = bit.bor(BANG, RANGE, COUNT, EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   2499    addr_type = 'ADDR_OTHER',
   2500    func = 'ex_sleep',
   2501  },
   2502  {
   2503    command = 'slast',
   2504    flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR),
   2505    addr_type = 'ADDR_NONE',
   2506    func = 'ex_last',
   2507  },
   2508  {
   2509    command = 'smagic',
   2510    flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW),
   2511    addr_type = 'ADDR_LINES',
   2512    func = 'ex_submagic',
   2513    preview_func = 'ex_submagic_preview',
   2514  },
   2515  {
   2516    command = 'smap',
   2517    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2518    addr_type = 'ADDR_NONE',
   2519    func = 'ex_map',
   2520  },
   2521  {
   2522    command = 'smapclear',
   2523    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   2524    addr_type = 'ADDR_NONE',
   2525    func = 'ex_mapclear',
   2526  },
   2527  {
   2528    command = 'smenu',
   2529    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2530    addr_type = 'ADDR_OTHER',
   2531    func = 'ex_menu',
   2532  },
   2533  {
   2534    command = 'snext',
   2535    flags = bit.bor(RANGE, BANG, FILES, CMDARG, ARGOPT, TRLBAR),
   2536    addr_type = 'ADDR_OTHER',
   2537    func = 'ex_next',
   2538  },
   2539  {
   2540    command = 'snomagic',
   2541    flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW),
   2542    addr_type = 'ADDR_LINES',
   2543    func = 'ex_submagic',
   2544    preview_func = 'ex_submagic_preview',
   2545  },
   2546  {
   2547    command = 'snoremap',
   2548    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2549    addr_type = 'ADDR_NONE',
   2550    func = 'ex_map',
   2551  },
   2552  {
   2553    command = 'snoremenu',
   2554    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2555    addr_type = 'ADDR_OTHER',
   2556    func = 'ex_menu',
   2557  },
   2558  {
   2559    command = 'source',
   2560    flags = bit.bor(RANGE, DFLALL, BANG, FILE1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   2561    addr_type = 'ADDR_LINES',
   2562    func = 'ex_source',
   2563  },
   2564  {
   2565    command = 'sort',
   2566    flags = bit.bor(RANGE, DFLALL, WHOLEFOLD, BANG, EXTRA, NOTRLCOM, MODIFY),
   2567    addr_type = 'ADDR_LINES',
   2568    func = 'ex_sort',
   2569  },
   2570  {
   2571    command = 'split',
   2572    flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR),
   2573    addr_type = 'ADDR_OTHER',
   2574    func = 'ex_splitview',
   2575  },
   2576  {
   2577    command = 'spellgood',
   2578    flags = bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR),
   2579    addr_type = 'ADDR_OTHER',
   2580    func = 'ex_spell',
   2581  },
   2582  {
   2583    command = 'spelldump',
   2584    flags = bit.bor(BANG, TRLBAR),
   2585    addr_type = 'ADDR_NONE',
   2586    func = 'ex_spelldump',
   2587  },
   2588  {
   2589    command = 'spellinfo',
   2590    flags = bit.bor(TRLBAR),
   2591    addr_type = 'ADDR_NONE',
   2592    func = 'ex_spellinfo',
   2593  },
   2594  {
   2595    command = 'spellrepall',
   2596    flags = bit.bor(TRLBAR),
   2597    addr_type = 'ADDR_NONE',
   2598    func = 'ex_spellrepall',
   2599  },
   2600  {
   2601    command = 'spellrare',
   2602    flags = bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR),
   2603    addr_type = 'ADDR_OTHER',
   2604    func = 'ex_spell',
   2605  },
   2606  {
   2607    command = 'spellundo',
   2608    flags = bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR),
   2609    addr_type = 'ADDR_OTHER',
   2610    func = 'ex_spell',
   2611  },
   2612  {
   2613    command = 'spellwrong',
   2614    flags = bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR),
   2615    addr_type = 'ADDR_OTHER',
   2616    func = 'ex_spell',
   2617  },
   2618  {
   2619    command = 'sprevious',
   2620    flags = bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR),
   2621    addr_type = 'ADDR_OTHER',
   2622    func = 'ex_previous',
   2623  },
   2624  {
   2625    command = 'srewind',
   2626    flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR),
   2627    addr_type = 'ADDR_NONE',
   2628    func = 'ex_rewind',
   2629  },
   2630  {
   2631    command = 'stop',
   2632    flags = bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK),
   2633    addr_type = 'ADDR_NONE',
   2634    func = 'ex_stop',
   2635  },
   2636  {
   2637    command = 'stag',
   2638    flags = bit.bor(RANGE, BANG, WORD1, TRLBAR, ZEROR),
   2639    addr_type = 'ADDR_OTHER',
   2640    func = 'ex_stag',
   2641  },
   2642  {
   2643    command = 'startinsert',
   2644    flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK),
   2645    addr_type = 'ADDR_NONE',
   2646    func = 'ex_startinsert',
   2647  },
   2648  {
   2649    command = 'startgreplace',
   2650    flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK),
   2651    addr_type = 'ADDR_NONE',
   2652    func = 'ex_startinsert',
   2653  },
   2654  {
   2655    command = 'startreplace',
   2656    flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK),
   2657    addr_type = 'ADDR_NONE',
   2658    func = 'ex_startinsert',
   2659  },
   2660  {
   2661    command = 'stopinsert',
   2662    flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK),
   2663    addr_type = 'ADDR_NONE',
   2664    func = 'ex_stopinsert',
   2665  },
   2666  {
   2667    command = 'stjump',
   2668    flags = bit.bor(BANG, TRLBAR, WORD1),
   2669    addr_type = 'ADDR_NONE',
   2670    func = 'ex_stag',
   2671  },
   2672  {
   2673    command = 'stselect',
   2674    flags = bit.bor(BANG, TRLBAR, WORD1),
   2675    addr_type = 'ADDR_NONE',
   2676    func = 'ex_stag',
   2677  },
   2678  {
   2679    command = 'sunhide',
   2680    flags = bit.bor(RANGE, COUNT, TRLBAR),
   2681    addr_type = 'ADDR_OTHER',
   2682    func = 'ex_buffer_all',
   2683  },
   2684  {
   2685    command = 'sunmap',
   2686    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2687    addr_type = 'ADDR_NONE',
   2688    func = 'ex_unmap',
   2689  },
   2690  {
   2691    command = 'sunmenu',
   2692    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2693    addr_type = 'ADDR_NONE',
   2694    func = 'ex_menu',
   2695  },
   2696  {
   2697    command = 'suspend',
   2698    flags = bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK),
   2699    addr_type = 'ADDR_NONE',
   2700    func = 'ex_stop',
   2701  },
   2702  {
   2703    command = 'sview',
   2704    flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR),
   2705    addr_type = 'ADDR_OTHER',
   2706    func = 'ex_splitview',
   2707  },
   2708  {
   2709    command = 'swapname',
   2710    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
   2711    addr_type = 'ADDR_NONE',
   2712    func = 'ex_swapname',
   2713  },
   2714  {
   2715    command = 'syntax',
   2716    flags = bit.bor(EXTRA, NOTRLCOM, CMDWIN, LOCK_OK),
   2717    addr_type = 'ADDR_NONE',
   2718    func = 'ex_syntax',
   2719  },
   2720  {
   2721    command = 'syntime',
   2722    flags = bit.bor(NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK),
   2723    addr_type = 'ADDR_NONE',
   2724    func = 'ex_syntime',
   2725  },
   2726  {
   2727    command = 'syncbind',
   2728    flags = bit.bor(TRLBAR),
   2729    addr_type = 'ADDR_NONE',
   2730    func = 'ex_syncbind',
   2731  },
   2732  {
   2733    command = 't',
   2734    flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY),
   2735    addr_type = 'ADDR_LINES',
   2736    func = 'ex_copymove',
   2737  },
   2738  {
   2739    command = 'tcd',
   2740    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
   2741    addr_type = 'ADDR_NONE',
   2742    func = 'ex_cd',
   2743  },
   2744  {
   2745    command = 'tchdir',
   2746    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
   2747    addr_type = 'ADDR_NONE',
   2748    func = 'ex_cd',
   2749  },
   2750  {
   2751    command = 'tNext',
   2752    flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR),
   2753    addr_type = 'ADDR_OTHER',
   2754    func = 'ex_tag',
   2755  },
   2756  {
   2757    command = 'tag',
   2758    flags = bit.bor(RANGE, BANG, WORD1, TRLBAR, ZEROR),
   2759    addr_type = 'ADDR_OTHER',
   2760    func = 'ex_tag',
   2761  },
   2762  {
   2763    command = 'tags',
   2764    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
   2765    addr_type = 'ADDR_NONE',
   2766    func = 'do_tags',
   2767  },
   2768  {
   2769    command = 'tab',
   2770    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   2771    addr_type = 'ADDR_NONE',
   2772    func = 'ex_wrongmodifier',
   2773  },
   2774  {
   2775    command = 'tabclose',
   2776    flags = bit.bor(BANG, RANGE, ZEROR, EXTRA, NOSPC, TRLBAR, CMDWIN, LOCK_OK),
   2777    addr_type = 'ADDR_TABS',
   2778    func = 'ex_tabclose',
   2779  },
   2780  {
   2781    command = 'tabdo',
   2782    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL),
   2783    addr_type = 'ADDR_TABS',
   2784    func = 'ex_listdo',
   2785  },
   2786  {
   2787    command = 'tabedit',
   2788    flags = bit.bor(BANG, FILE1, RANGE, ZEROR, CMDARG, ARGOPT, TRLBAR),
   2789    addr_type = 'ADDR_TABS',
   2790    func = 'ex_splitview',
   2791  },
   2792  {
   2793    command = 'tabfind',
   2794    flags = bit.bor(BANG, FILE1, RANGE, ZEROR, CMDARG, ARGOPT, NEEDARG, TRLBAR),
   2795    addr_type = 'ADDR_TABS',
   2796    func = 'ex_splitview',
   2797  },
   2798  {
   2799    command = 'tabfirst',
   2800    flags = bit.bor(TRLBAR),
   2801    addr_type = 'ADDR_NONE',
   2802    func = 'ex_tabnext',
   2803  },
   2804  {
   2805    command = 'tabmove',
   2806    flags = bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR),
   2807    addr_type = 'ADDR_TABS',
   2808    func = 'ex_tabmove',
   2809  },
   2810  {
   2811    command = 'tablast',
   2812    flags = bit.bor(TRLBAR),
   2813    addr_type = 'ADDR_NONE',
   2814    func = 'ex_tabnext',
   2815  },
   2816  {
   2817    command = 'tabnext',
   2818    flags = bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR),
   2819    addr_type = 'ADDR_TABS',
   2820    func = 'ex_tabnext',
   2821  },
   2822  {
   2823    command = 'tabnew',
   2824    flags = bit.bor(BANG, FILE1, RANGE, ZEROR, CMDARG, ARGOPT, TRLBAR),
   2825    addr_type = 'ADDR_TABS',
   2826    func = 'ex_splitview',
   2827  },
   2828  {
   2829    command = 'tabonly',
   2830    flags = bit.bor(BANG, RANGE, ZEROR, EXTRA, NOSPC, TRLBAR, CMDWIN, LOCK_OK),
   2831    addr_type = 'ADDR_TABS',
   2832    func = 'ex_tabonly',
   2833  },
   2834  {
   2835    command = 'tabprevious',
   2836    flags = bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR),
   2837    addr_type = 'ADDR_TABS_RELATIVE',
   2838    func = 'ex_tabnext',
   2839  },
   2840  {
   2841    command = 'tabNext',
   2842    flags = bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR),
   2843    addr_type = 'ADDR_TABS_RELATIVE',
   2844    func = 'ex_tabnext',
   2845  },
   2846  {
   2847    command = 'tabrewind',
   2848    flags = bit.bor(TRLBAR),
   2849    addr_type = 'ADDR_NONE',
   2850    func = 'ex_tabnext',
   2851  },
   2852  {
   2853    command = 'tabs',
   2854    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
   2855    addr_type = 'ADDR_NONE',
   2856    func = 'ex_tabs',
   2857  },
   2858  {
   2859    command = 'tcl',
   2860    flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2861    addr_type = 'ADDR_LINES',
   2862    func = 'ex_script_ni',
   2863  },
   2864  {
   2865    command = 'tcldo',
   2866    flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK),
   2867    addr_type = 'ADDR_LINES',
   2868    func = 'ex_ni',
   2869  },
   2870  {
   2871    command = 'tclfile',
   2872    flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK),
   2873    addr_type = 'ADDR_LINES',
   2874    func = 'ex_ni',
   2875  },
   2876  {
   2877    command = 'terminal',
   2878    flags = bit.bor(BANG, FILES, CMDWIN, LOCK_OK),
   2879    addr_type = 'ADDR_NONE',
   2880    func = 'ex_terminal',
   2881  },
   2882  {
   2883    command = 'tfirst',
   2884    flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR),
   2885    addr_type = 'ADDR_OTHER',
   2886    func = 'ex_tag',
   2887  },
   2888  {
   2889    command = 'throw',
   2890    flags = bit.bor(EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK),
   2891    addr_type = 'ADDR_NONE',
   2892    func = 'ex_throw',
   2893  },
   2894  {
   2895    command = 'tjump',
   2896    flags = bit.bor(BANG, TRLBAR, WORD1),
   2897    addr_type = 'ADDR_NONE',
   2898    func = 'ex_tag',
   2899  },
   2900  {
   2901    command = 'tlast',
   2902    flags = bit.bor(BANG, TRLBAR),
   2903    addr_type = 'ADDR_NONE',
   2904    func = 'ex_tag',
   2905  },
   2906  {
   2907    command = 'tlmenu',
   2908    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2909    addr_type = 'ADDR_OTHER',
   2910    func = 'ex_menu',
   2911  },
   2912  {
   2913    command = 'tlnoremenu',
   2914    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2915    addr_type = 'ADDR_OTHER',
   2916    func = 'ex_menu',
   2917  },
   2918  {
   2919    command = 'tlunmenu',
   2920    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2921    addr_type = 'ADDR_NONE',
   2922    func = 'ex_menu',
   2923  },
   2924  {
   2925    command = 'tmenu',
   2926    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2927    addr_type = 'ADDR_OTHER',
   2928    func = 'ex_menu',
   2929  },
   2930  {
   2931    command = 'tmap',
   2932    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2933    addr_type = 'ADDR_NONE',
   2934    func = 'ex_map',
   2935  },
   2936  {
   2937    command = 'tmapclear',
   2938    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   2939    addr_type = 'ADDR_NONE',
   2940    func = 'ex_mapclear',
   2941  },
   2942  {
   2943    command = 'tnext',
   2944    flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR),
   2945    addr_type = 'ADDR_OTHER',
   2946    func = 'ex_tag',
   2947  },
   2948  {
   2949    command = 'tnoremap',
   2950    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2951    addr_type = 'ADDR_NONE',
   2952    func = 'ex_map',
   2953  },
   2954  {
   2955    command = 'topleft',
   2956    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   2957    addr_type = 'ADDR_NONE',
   2958    func = 'ex_wrongmodifier',
   2959  },
   2960  {
   2961    command = 'tprevious',
   2962    flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR),
   2963    addr_type = 'ADDR_OTHER',
   2964    func = 'ex_tag',
   2965  },
   2966  {
   2967    command = 'trewind',
   2968    flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR),
   2969    addr_type = 'ADDR_OTHER',
   2970    func = 'ex_tag',
   2971  },
   2972  {
   2973    command = 'trust',
   2974    flags = bit.bor(EXTRA, FILE1, TRLBAR, LOCK_OK),
   2975    addr_type = 'ADDR_NONE',
   2976    func = 'ex_trust',
   2977  },
   2978  {
   2979    command = 'try',
   2980    flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK),
   2981    addr_type = 'ADDR_NONE',
   2982    func = 'ex_try',
   2983  },
   2984  {
   2985    command = 'tselect',
   2986    flags = bit.bor(BANG, TRLBAR, WORD1),
   2987    addr_type = 'ADDR_NONE',
   2988    func = 'ex_tag',
   2989  },
   2990  {
   2991    command = 'tunmenu',
   2992    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2993    addr_type = 'ADDR_NONE',
   2994    func = 'ex_menu',
   2995  },
   2996  {
   2997    command = 'tunmap',
   2998    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   2999    addr_type = 'ADDR_NONE',
   3000    func = 'ex_unmap',
   3001  },
   3002  {
   3003    command = 'undo',
   3004    flags = bit.bor(BANG, RANGE, COUNT, ZEROR, TRLBAR, CMDWIN, LOCK_OK),
   3005    addr_type = 'ADDR_OTHER',
   3006    func = 'ex_undo',
   3007  },
   3008  {
   3009    command = 'undojoin',
   3010    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
   3011    addr_type = 'ADDR_NONE',
   3012    func = 'ex_undojoin',
   3013  },
   3014  {
   3015    command = 'undolist',
   3016    flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK),
   3017    addr_type = 'ADDR_NONE',
   3018    func = 'ex_undolist',
   3019  },
   3020  {
   3021    command = 'unabbreviate',
   3022    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3023    addr_type = 'ADDR_NONE',
   3024    func = 'ex_abbreviate',
   3025  },
   3026  {
   3027    command = 'unhide',
   3028    flags = bit.bor(RANGE, COUNT, TRLBAR),
   3029    addr_type = 'ADDR_OTHER',
   3030    func = 'ex_buffer_all',
   3031  },
   3032  {
   3033    command = 'uniq',
   3034    flags = bit.bor(RANGE, DFLALL, WHOLEFOLD, BANG, EXTRA, NOTRLCOM, MODIFY),
   3035    addr_type = 'ADDR_LINES',
   3036    func = 'ex_uniq',
   3037  },
   3038  {
   3039    command = 'unlet',
   3040    flags = bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK),
   3041    addr_type = 'ADDR_NONE',
   3042    func = 'ex_unlet',
   3043  },
   3044  {
   3045    command = 'unlockvar',
   3046    flags = bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK),
   3047    addr_type = 'ADDR_NONE',
   3048    func = 'ex_lockvar',
   3049  },
   3050  {
   3051    command = 'unmap',
   3052    flags = bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3053    addr_type = 'ADDR_NONE',
   3054    func = 'ex_unmap',
   3055  },
   3056  {
   3057    command = 'unmenu',
   3058    flags = bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3059    addr_type = 'ADDR_NONE',
   3060    func = 'ex_menu',
   3061  },
   3062  {
   3063    command = 'unsilent',
   3064    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
   3065    addr_type = 'ADDR_NONE',
   3066    func = 'ex_wrongmodifier',
   3067  },
   3068  {
   3069    command = 'update',
   3070    flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR),
   3071    addr_type = 'ADDR_LINES',
   3072    func = 'ex_update',
   3073  },
   3074  {
   3075    command = 'vglobal',
   3076    flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, DFLALL, CMDWIN, LOCK_OK),
   3077    addr_type = 'ADDR_LINES',
   3078    func = 'ex_global',
   3079  },
   3080  {
   3081    command = 'version',
   3082    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   3083    addr_type = 'ADDR_NONE',
   3084    func = 'ex_version',
   3085  },
   3086  {
   3087    command = 'verbose',
   3088    flags = bit.bor(NEEDARG, RANGE, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
   3089    addr_type = 'ADDR_OTHER',
   3090    func = 'ex_wrongmodifier',
   3091  },
   3092  {
   3093    command = 'vertical',
   3094    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM),
   3095    addr_type = 'ADDR_NONE',
   3096    func = 'ex_wrongmodifier',
   3097  },
   3098  {
   3099    command = 'visual',
   3100    flags = bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR),
   3101    addr_type = 'ADDR_NONE',
   3102    func = 'ex_edit',
   3103  },
   3104  {
   3105    command = 'view',
   3106    flags = bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR),
   3107    addr_type = 'ADDR_NONE',
   3108    func = 'ex_edit',
   3109  },
   3110  {
   3111    command = 'vimgrep',
   3112    flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK),
   3113    addr_type = 'ADDR_OTHER',
   3114    func = 'ex_vimgrep',
   3115  },
   3116  {
   3117    command = 'vimgrepadd',
   3118    flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK),
   3119    addr_type = 'ADDR_OTHER',
   3120    func = 'ex_vimgrep',
   3121  },
   3122  {
   3123    command = 'viusage',
   3124    flags = bit.bor(TRLBAR),
   3125    addr_type = 'ADDR_NONE',
   3126    func = 'ex_viusage',
   3127  },
   3128  {
   3129    command = 'vmap',
   3130    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3131    addr_type = 'ADDR_NONE',
   3132    func = 'ex_map',
   3133  },
   3134  {
   3135    command = 'vmapclear',
   3136    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   3137    addr_type = 'ADDR_NONE',
   3138    func = 'ex_mapclear',
   3139  },
   3140  {
   3141    command = 'vmenu',
   3142    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3143    addr_type = 'ADDR_OTHER',
   3144    func = 'ex_menu',
   3145  },
   3146  {
   3147    command = 'vnoremap',
   3148    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3149    addr_type = 'ADDR_NONE',
   3150    func = 'ex_map',
   3151  },
   3152  {
   3153    command = 'vnew',
   3154    flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR),
   3155    addr_type = 'ADDR_OTHER',
   3156    func = 'ex_splitview',
   3157  },
   3158  {
   3159    command = 'vnoremenu',
   3160    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3161    addr_type = 'ADDR_OTHER',
   3162    func = 'ex_menu',
   3163  },
   3164  {
   3165    command = 'vsplit',
   3166    flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR),
   3167    addr_type = 'ADDR_OTHER',
   3168    func = 'ex_splitview',
   3169  },
   3170  {
   3171    command = 'vunmap',
   3172    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3173    addr_type = 'ADDR_NONE',
   3174    func = 'ex_unmap',
   3175  },
   3176  {
   3177    command = 'vunmenu',
   3178    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3179    addr_type = 'ADDR_NONE',
   3180    func = 'ex_menu',
   3181  },
   3182  {
   3183    command = 'write',
   3184    flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK),
   3185    addr_type = 'ADDR_LINES',
   3186    func = 'ex_write',
   3187  },
   3188  {
   3189    command = 'wNext',
   3190    flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, TRLBAR),
   3191    addr_type = 'ADDR_OTHER',
   3192    func = 'ex_wnext',
   3193  },
   3194  {
   3195    command = 'wall',
   3196    flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK, ARGOPT),
   3197    addr_type = 'ADDR_NONE',
   3198    func = 'do_wqall',
   3199  },
   3200  {
   3201    command = 'while',
   3202    flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK),
   3203    addr_type = 'ADDR_NONE',
   3204    func = 'ex_while',
   3205  },
   3206  {
   3207    command = 'winsize',
   3208    flags = bit.bor(EXTRA, NEEDARG, TRLBAR),
   3209    addr_type = 'ADDR_NONE',
   3210    func = 'ex_winsize',
   3211  },
   3212  {
   3213    command = 'wincmd',
   3214    flags = bit.bor(NEEDARG, WORD1, RANGE, COUNT, CMDWIN, LOCK_OK),
   3215    addr_type = 'ADDR_OTHER',
   3216    func = 'ex_wincmd',
   3217  },
   3218  {
   3219    command = 'windo',
   3220    flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL),
   3221    addr_type = 'ADDR_WINDOWS',
   3222    func = 'ex_listdo',
   3223  },
   3224  {
   3225    command = 'winpos',
   3226    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   3227    addr_type = 'ADDR_NONE',
   3228    func = 'ex_ni',
   3229  },
   3230  {
   3231    command = 'wnext',
   3232    flags = bit.bor(RANGE, BANG, FILE1, ARGOPT, TRLBAR),
   3233    addr_type = 'ADDR_OTHER',
   3234    func = 'ex_wnext',
   3235  },
   3236  {
   3237    command = 'wprevious',
   3238    flags = bit.bor(RANGE, BANG, FILE1, ARGOPT, TRLBAR),
   3239    addr_type = 'ADDR_OTHER',
   3240    func = 'ex_wnext',
   3241  },
   3242  {
   3243    command = 'wq',
   3244    flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR),
   3245    addr_type = 'ADDR_LINES',
   3246    func = 'ex_exit',
   3247  },
   3248  {
   3249    command = 'wqall',
   3250    flags = bit.bor(BANG, FILE1, ARGOPT, TRLBAR),
   3251    addr_type = 'ADDR_NONE',
   3252    func = 'do_wqall',
   3253  },
   3254  {
   3255    command = 'wshada',
   3256    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
   3257    addr_type = 'ADDR_NONE',
   3258    func = 'ex_shada',
   3259  },
   3260  {
   3261    command = 'wundo',
   3262    flags = bit.bor(BANG, NEEDARG, FILE1),
   3263    addr_type = 'ADDR_NONE',
   3264    func = 'ex_wundo',
   3265  },
   3266  {
   3267    command = 'wviminfo',
   3268    flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK),
   3269    addr_type = 'ADDR_NONE',
   3270    func = 'ex_shada',
   3271  },
   3272  {
   3273    command = 'xit',
   3274    flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK),
   3275    addr_type = 'ADDR_LINES',
   3276    func = 'ex_exit',
   3277  },
   3278  {
   3279    command = 'xall',
   3280    flags = bit.bor(BANG, TRLBAR),
   3281    addr_type = 'ADDR_NONE',
   3282    func = 'do_wqall',
   3283  },
   3284  {
   3285    command = 'xmap',
   3286    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3287    addr_type = 'ADDR_NONE',
   3288    func = 'ex_map',
   3289  },
   3290  {
   3291    command = 'xmapclear',
   3292    flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   3293    addr_type = 'ADDR_NONE',
   3294    func = 'ex_mapclear',
   3295  },
   3296  {
   3297    command = 'xmenu',
   3298    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3299    addr_type = 'ADDR_OTHER',
   3300    func = 'ex_menu',
   3301  },
   3302  {
   3303    command = 'xnoremap',
   3304    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3305    addr_type = 'ADDR_NONE',
   3306    func = 'ex_map',
   3307  },
   3308  {
   3309    command = 'xnoremenu',
   3310    flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3311    addr_type = 'ADDR_OTHER',
   3312    func = 'ex_menu',
   3313  },
   3314  {
   3315    command = 'xunmap',
   3316    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3317    addr_type = 'ADDR_NONE',
   3318    func = 'ex_unmap',
   3319  },
   3320  {
   3321    command = 'xunmenu',
   3322    flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK),
   3323    addr_type = 'ADDR_NONE',
   3324    func = 'ex_menu',
   3325  },
   3326  {
   3327    command = 'yank',
   3328    flags = bit.bor(RANGE, WHOLEFOLD, REGSTR, COUNT, TRLBAR, CMDWIN, LOCK_OK),
   3329    addr_type = 'ADDR_LINES',
   3330    func = 'ex_operators',
   3331  },
   3332  {
   3333    command = 'z',
   3334    flags = bit.bor(RANGE, WHOLEFOLD, BANG, EXTRA, FLAGS, TRLBAR, CMDWIN, LOCK_OK),
   3335    addr_type = 'ADDR_LINES',
   3336    func = 'ex_z',
   3337  },
   3338  -- commands that don't start with a letter
   3339  {
   3340    command = '!',
   3341    enum = 'CMD_bang',
   3342    flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILES, CMDWIN, LOCK_OK),
   3343    addr_type = 'ADDR_LINES',
   3344    func = 'ex_bang',
   3345  },
   3346  {
   3347    command = '#',
   3348    enum = 'CMD_pound',
   3349    flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK),
   3350    addr_type = 'ADDR_LINES',
   3351    func = 'ex_print',
   3352  },
   3353  {
   3354    command = '&',
   3355    enum = 'CMD_and',
   3356    flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY),
   3357    addr_type = 'ADDR_LINES',
   3358    func = 'ex_substitute',
   3359  },
   3360  {
   3361    command = '<',
   3362    enum = 'CMD_lshift',
   3363    flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY),
   3364    addr_type = 'ADDR_LINES',
   3365    func = 'ex_operators',
   3366  },
   3367  {
   3368    command = '=',
   3369    enum = 'CMD_equal',
   3370    flags = bit.bor(RANGE, EXTRA, DFLALL, ARGOPT, CMDWIN, LOCK_OK),
   3371    addr_type = 'ADDR_LINES',
   3372    func = 'ex_equal',
   3373  },
   3374  {
   3375    command = '>',
   3376    enum = 'CMD_rshift',
   3377    flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY),
   3378    addr_type = 'ADDR_LINES',
   3379    func = 'ex_operators',
   3380  },
   3381  {
   3382    command = '@',
   3383    enum = 'CMD_at',
   3384    flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK),
   3385    addr_type = 'ADDR_LINES',
   3386    func = 'ex_at',
   3387  },
   3388  {
   3389    command = '~',
   3390    enum = 'CMD_tilde',
   3391    flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY),
   3392    addr_type = 'ADDR_LINES',
   3393    func = 'ex_substitute',
   3394  },
   3395  -- commands that start with an uppercase letter
   3396  {
   3397    command = 'Next',
   3398    flags = bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR),
   3399    addr_type = 'ADDR_OTHER',
   3400    func = 'ex_previous',
   3401  },
   3402 }
   3403 
   3404 return M