vim - 以与 :ls 相同的方式打印 arglist
问题描述
:ls
1 h "~/Documents/trash/practical-vim" line 1
3 h "LICENSE.txt" line 1
4 h "auto_complete/sea-shells.txt" line 1
5 h "files/a.txt" line 1
6 h "files/b.txt" line 1
ls 命令的输出,您可以使用:b3
切换到缓冲区 3,我想要的是与:args
命令相同的输出,但我得到的是:
:args
[auto_complete/webapp/public/index.html] ex_mode/practical-vim.html files/mvc/index.html global/episodes.html
即 arglist 参数打印在一行中,:argument3
如果文件数量很大,这使得使用(切换到 arglist 中的第三个文件)基本上是不可能的。我希望将这些文件打印在带有数字的新行上,通过该数字我可以像在:ls
命令中一样访问这些文件。
我尝试为这种情况编写一个简单的命令:
command! Args
\ :let var_args = argv()
\ :let var_args_size = len(var_args)
\ :if var_args_size > 0 | let var_args_size = var_args_size - 1 | endif
\ :for i in range(0, var_args_size) | echo printf("%3d %s", i + 1, var_args[i]) | endfor
但:
E15: Invalid expression: argv() :let var_args_size = len(var_args) :if var_args_size > 0 | let var_args_size = var_args_size - 1 | endif
:for i in range(0, var_args_size) | echo printf("%3d %s", i + 1, var_args[i]) | endfor
我恳请使用我的命令或其他方式打印 arglist 的帮助,如下所示:
:args
1 auto_complete/webapp/public/index.html
2 ex_mode/practical-vim.html
3 files/mvc/index.html
4 global/episodes.html
所以我可以在:argument3
不计算的情况下执行并切换到 files/mvc/index.html。
解决方案
只有一行
command! -bar Args echo join(map(argv(), {_, v -> printf("%3d\t%s", bufnr(v), v)}), "\n")
它显示缓冲区编号而不是参数索引,以便:bX
切换缓冲区。
推荐阅读
- vb.net - 在每个循环中跳过一行,并带有一个排好序的列
- javascript - 测试开关案例 - 单元测试
- c#-4.0 - Sandcastle 帮助文件生成器 (SHFB)。控制在源代码文件的帮助文件中添加/不添加类
- go - 找不到提供包的模块
- spring - Spring Data Rest以毫秒格式返回日期
- nsis - 在安装新的之前卸载以前的安装程序时,如何使用 NSIS 隐藏从 un.onInit 弹出的消息框
- wpf - WPF VB.net 如何格式化数据网格中的列以显示十进制数?
- html - 将小部件嵌入未知站点时如何保护样式?
- docker - 容器之间的网络可达性和可见性?
- twitter-bootstrap - Umbraco 引导网格布局未正确显示