繁体   English   中英

Vim命令内省地列出可用命令

[英]Vim command to introspectively list available commands

能够查看Vim命令列表和相关元数据(例如,每个命令的描述,是否具有别名等)将对我有很大帮助。

我知道,通过Vim插件,可以扩展命令列表,并且根据Vim编译时使用的选项,可以更改可用命令的列表。

我已经在网上进行了广泛的搜索,例如“ vim命令列出命令”,但是空手而归。 我能找到的唯一命令列表是静态文档,没有考虑您正在运行的Vim的版本(包括Neovim),已安装/启用的插件以及使用Vim编译的选项。

问题 :是否有一个Vim命令内省地列出Vim中所有可用的命令?

在searchInRuntime中,我具有以下函数,该函数列出了所有以前导文本(可以为空)开头的命令。 这是获取vim通过命令行完成功能扩展的老技巧- :h c_CTRL-A

" s:MatchingCommands(ArgLead)                              {{{3
" return the list of custom commands starting by {FirstLetters}
function! s:MatchingCommands(ArgLead)
  silent! exe "norm! :".a:ArgLead."\<c-a>\"\<home>let\ cmds=\"\<cr>"
  let cmds = substitute(cmds, '\s\+', '\n', 'g')
  " for your purpose, split is probably more fit
  return cmds
endfunction

请注意,它不知道命令的含义。 充其量,您可以通过execute('verbose command '.cmdname)获取用户命令的定义( execute()是一个非常新的函数)。

请注意,与execute('command') ,此解决方案还列出了标准命令,而不仅是用户定义的命令。

关于vim中可用的其他操作(以防您不只是在寻找vim 命令 ),尽管我们可以列出用户定义的映射(甚至可能甚至知道它们在依赖命名插件映射时也会这样做),但是没有列出ddJ ...

了解如何查找命令并浏览内置的:help (自动完成功能,使用Ctrl + A列出所有候选对象,等等); 它是全面的,还提供了许多技巧。 大多数(好的)插件还提供了自己的帮助页面,因此我认为这是对您问题的最佳回答。

不要尝试进行某种自省(因为一个评论者指出要“自嘲”); 而是使用Vim的现有功能。 您甚至可以编写自己的文档页面(在~/.vim/doc/*.txt) 那就是我的工作:从其他帮助位置收集提示和短片。 它提供了一个地方来记录一些没有自己的帮助页面的较旧的插件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM