set
命令使用户能够设置内部 vi 和 Vim 变量。变量根据不同的类型以不同方式予以设置:
- 设置为 on 或 off 的变量由
set variable
命令设置,使用set novariable
命令取消设置。 - 取值的变量由
set variable=value
命令设置。
例如,set list
命令设置列表选项,该选项告诉 vi 或 Vim 显示表示行尾的字符($
)和未扩展标签(^I
)字符。(在 Vim 中,该选项还显示行尾空白。)list
选项不需要值 — 仅仅设置它就足够激活功能了。您可以执行 set nolist
命令取消设置 list
选项。
其他变量采用显式值或值类型,赋值方式是使用等号(=)后面紧跟值或逗号分隔的值列表。例如,在 Vim 编辑器中,您可以配置 list
命令使用的字符,通过设置 listchars
变量的值来表示行尾,行尾空白和未扩展标签。以下命令将未扩展标签显示为 >>
,将行尾空白显示为 !
,将行尾显示为 $
:
set listchars=tab:>>,trail:!,eol:$
:set all
命令。要显示特定选项的当前值,使用
f:set option?
命令。要显示通过默认值修改的所有选项,使用
:set
命令。
map
命令使用户能够绑定现有或新命令到指定键或组合键,对于 vi 的命令模式,使用 map key-sequence command
语法,对于 vi 的插入模式,使用 map! key-sequence command
。
下面是 Vim 的一些 map
命令样例:
map <C-T> hhxp map <F5> !}fmt <CR>
这些中的第一个将键序列 control-t 映射到 vi 命令序列 hhxp
,这颠倒了当前光标位置前面的两个字符的顺序(正如 Emacs 中的 control-t)。第二个将 F5 键映射到一个键序列,该键序列调用 fmt
命令来重新格式化当前段落。
标准 vi 和 Vim 的配置文件中的 map
命令之间的一个重要区别在于,正如前面的示例所示,Vim 支持尖括号内的键标识符,以识别在某些情况下可能是不可打印字符的键。vi 需要您真正插入控制序列(通过按下 control-v 后面紧跟键序列来完成)。map
命令样例的 vi 版本如下所示:
map ^T hhxp map ^@ !}fmt ^M