在Vim CLI中,是否可以模仿“命令”:浏览旧版“;然后创建一个菜单?

在Vim CLI中,是否可以模仿“命令”:浏览旧版“;然后创建一个菜单?,vim,Vim,在Vim CLI中(使用脚本,不依赖插件),是否可以模拟: :browse old 并创建一个编号菜单(例如脚本)?您可能正在寻找 “以适合您的任务的任何方式构建您的列表 让somelist=map(范围(1,&line-2),““Item#”。.v:val”) 让numberedlist=map(复制(somelist),'string(v:key+1)。“:”.v:val') let selected=inputlist(['Pick an item:']+numberedlist) 如果

在Vim CLI中(使用脚本,不依赖插件),是否可以模拟:

:browse old
并创建一个编号菜单(例如脚本)?

您可能正在寻找

“以适合您的任务的任何方式构建您的列表
让somelist=map(范围(1,&line-2),““Item#”。.v:val”)
让numberedlist=map(复制(somelist),'string(v:key+1)。“:”.v:val')
let selected=inputlist(['Pick an item:']+numberedlist)
如果0
非常感谢,请原谅我迟来的回答。我原以为我的问题很无聊……现在我将尝试(作为vimscript的新手)将您的解决方案付诸实施。仅供参考,我在MB上使用Vim,但在Android手机上也使用Vim(VimTouch,这是一个很好的实现),并且菜单可能是一个很好的解决方案-有时-来处理一个狭窄的键盘。顺便问一下,我是否错误地认为input()、inputlist()等功能使用不足?再次感谢。可能
input()
intputlist()
使用较少,因为它们不直接适合Vim的常规“模式”行为(插入模式、正常模式、行范围、寄存器、文本对象等)。它们不是完全未使用的(例如,使用
input()
来提示复杂的环境,如HTML/XML标记)。如果没有好的方法通过一种常用方法指定所需的输入,则提示可能很好(只要用户知道需要)。
 " build your list in whatever way is appropriate for your task
let somelist = map(range(1,&lines-2), '"Item #".v:val')

let numberedlist = map(copy(somelist), 'string(v:key+1).": ".v:val')
let chosen = inputlist(['Pick an item:'] + numberedlist)
if 0 < chosen && chosen < len(somelist)
  echo 'User chose item #' . chosen . ': <<<' . somelist[chosen-1] . '>>>'
else
  echo 'Invalid selection!'
endif