TL;DR:是否可以让 emacs 使用单列完成?
当使用 emacs 的完成机制并且有多种可能性时,完成将显示在单独的窗口中,例如
Possible completions are:
i i-search
i1 i18n
i2 i3
iar ibm
ibm1047 ibm1047-dos
ibm1047-mac ibm1047-unix
ibm437 ibm437-dos
ibm437-mac ibm437-unix
ibm775 ibm775-dos
ibm775-mac ibm775-unix
ibm850 ibm850-dos
ibm850-mac ibm850-unix
ibm851 ibm851-dos
ibm851-mac ibm851-unix
ibm852 ibm852-dos
ibm852-mac ibm852-unix
ibm855 ibm855-dos
ibm855-mac ibm855-unix
ibm857 ibm857-dos
虽然这种格式对于少数项目来说完全没问题,但当列表很长且在同一行有连续的完成时,即按以下顺序排列
1 2
3 4
5 6
相当分散注意力。理想情况下,我更喜欢排序
1 4
2 5
3 6
但我担心这是不可能的,因为它无法处理比每列更宽的补全。在这种情况下,Emacs 使用格式
111 222
33333333
444 5555
它只因为“水平优先”排序而有效;另外我首选的排序需要根据窗口高度调整完成缓冲区的内容(同样不切实际)。
因此,作为替代方案,我希望完成仅使用一列,即
Possible completions are:
i
i-search
i1
i18n
i2
i3
iar
ibm
ibm1047
ibm1047-dos
ibm1047-mac
ibm1047-unix
ibm437
ibm437-dos
ibm437-mac
ibm437-unix
我发现用视觉来扫描会更容易。
这可能吗?
答案1
也许你想改变completions-format
?
不过,它不会将输出限制为单个列。添加该功能completion--insert-strings
(即在该缓冲区中插入完成的函数)很容易,因此也许您应该将其作为新功能请求。
答案2
如果你使用冰柱然后只需自定义用户选项icicle-Completions-max-columns
到值1
。
如果你不想要单列总是,您可以更改*Completions*
显示逐步地,改变候选之间的间距或要使用的列数。