用Emacs编辑.zshrc
时,由于我的company-mode触发字母数为1,这就导致输入一个字母就出现大量都候选项把emacs卡住,如图
想知道这是由哪个补全后端提供的?
用Emacs编辑.zshrc
时,由于我的company-mode触发字母数为1,这就导致输入一个字母就出现大量都候选项把emacs卡住,如图
想知道这是由哪个补全后端提供的?
M-x company-diag 这个诊断命令可以看到当前用了哪个后端。
建议你 设置 2个字符再开始补全。一个字符就触发,候选太多了。
即使把最短触发长度改成2,仍然会有大量的候选,下面是ab
前缀下company-diag
的结果:
Emacs 28.1 (x86_64-pc-linux-gnu) of 2022-04-10 on frederik
Company 0.9.13
company-backends: ((company-capf company-yasnippet)
(company-dabbrev-code company-keywords company-files)
company-dabbrev)
Used backend: (company-capf company-yasnippet)
Value of c-a-p-f: (sh-completion-at-point-function comint-completion-at-point t)
Major mode: sh-mode
Prefix: "ab"
Completions:
#("portabledeviceapi.mof" 4 6 (face orderless-match-face-0))
#("portabledeviceclassextension.mof" 4 6 (face orderless-match-face-0))
#("portabledeviceconnectapi.mof" 4 6 (face orderless-match-face-0))
#("portabledevicetypes.mof" 4 6 (face orderless-match-face-0))
#("portabledevicewiacompat.mof" 4 6 (face orderless-match-face-0))
#("texttable.xsl" 5 7 (face orderless-match-face-0))
#("Win32_EncryptableVolume.dll" 13 15 (face orderless-match-face-0))
#("win32_encryptablevolume.mof" 13 15 (face orderless-match-face-0))
#("Win32_EncryptableVolumeUninstall.mof" 13 15 (face orderless-match-face-0))
#("AboutSettingsHandlers.dll" 0 2 (face orderless-match-face-0))
#("AboveLockAppHost.dll" 0 2 (face orderless-match-face-0))
#("AppXApplicabilityBlob.dll" 10 12 (face orderless-match-face-0))
#("AppxApplicabilityEngine.dll" 10 12 (face orderless-match-face-0))
#("cabapi.dll" 1 3 (face orderless-match-face-0))
#("cabinet.dll" 1 3 (face orderless-match-face-0))
#("cabview.dll" 1 3 (face orderless-match-face-0))
#("CapabilityAccessHandlers.dll" 3 5 (face orderless-match-face-0))
#("CapabilityAccessManager.dll" 3 5 (face orderless-match-face-0))
#("CapabilityAccessManagerClient.dll" 3 5 (face orderless-match-face-0))
#("cellulardatacapabilityhandler.dll" 15 17 (face orderless-match-face-0))
#("ComposableShellProxyStub.dll" 6 8 (face orderless-match-face-0))
#("dab.dll" 1 3 (face orderless-match-face-0))
#("dabapi.dll" 1 3 (face orderless-match-face-0))
#("directxdatabasehelper.dll" 10 12 (face orderless-match-face-0))
#("directxdatabaseupdater.exe" 10 12 (face orderless-match-face-0))
#("f1db7d81-95be-4911-935a-8ab71629112a_HyperV-IsolatedVM.dll" 25 27 (face orderless-match-face-0))
#("label.exe" 1 3 (face orderless-match-face-0))
#("makecab.exe" 5 7 (face orderless-match-face-0))
#("Microsoft.Uev.CabUtil.dll" 15 17 (face orderless-match-face-0))
#("PhonePlatformAbstraction.dll" 13 15 (face orderless-match-face-0))
#("PortableDeviceApi.dll" 4 6 (face orderless-match-face-0))
#("PortableDeviceClassExtension.dll" 4 6 (face orderless-match-face-0))
#("PortableDeviceConnectApi.dll" 4 6 (face orderless-match-face-0))
#("PortableDeviceStatus.dll" 4 6 (face orderless-match-face-0))
#("PortableDeviceSyncProvider.dll" 4 6 (face orderless-match-face-0))
#("PortableDeviceTypes.dll" 4 6 (face orderless-match-face-0))
#("PortableDeviceWiaCompat.dll" 4 6 (face orderless-match-face-0))
#("RemovableMediaProvisioningPlugin.dll" 5 7 (face orderless-match-face-0))
#("SettingsHandlers_CapabilityAccess.dll" 20 22 (face orderless-match-face-0))
#("Tabbtn.dll" 1 3 (face orderless-match-face-0))
#("TabbtnEx.dll" 1 3 (face orderless-match-face-0))
#("tabcal.exe" 1 3 (face orderless-match-face-0))
#("TabletPC.cpl" 1 3 (face orderless-match-face-0))
#("TabSvc.dll" 1 3 (face orderless-match-face-0))
#("UpdatePolicyScenarioReliabilityAggregator.dll" 24 26 (face orderless-match-face-0))
#("VocabRoamingHandler.dll" 3 5 (face orderless-match-face-0))
#("WABSyncProvider.dll" 1 3 (face orderless-match-face-0))
#("wifidatacapabilityhandler.dll" 11 13 (face orderless-match-face-0))
#("WinBioDatabase/" 9 11 (face orderless-match-face-0))
#("Windows.Devices.Portable.dll" 20 22 (face orderless-match-face-0))
#("Windows.Internal.UI.Shell.WindowTabManager.dll" 33 35 (face orderless-match-face-0))
#("Windows.Networking.Sockets.PushEnabledApplication.dll" 33 35 (face orderless-match-face-0))
#("WindowsInternal.ComposableShell.Display.dll" 22 24 (face orderless-match-face-0))
#("quantization-table.xml" 14 16 (face orderless-match-face-0))
#("ip6tables-apply" 4 6 (face orderless-match-face-0))
#("portablectl" 4 6 (face orderless-match-face-0))
#("term_colortab" 11 13 (face orderless-match-face-0))
#("psfaddtable" 7 9 (face orderless-match-face-0))
#("pmxab" 3 5 (face orderless-match-face-0))
#("ip6tables-nft-restore" 4 6 (face orderless-match-face-0))
#("iptables-restore-translate" 3 5 (face orderless-match-face-0))
#("xtables-nft-multi" 2 4 (face orderless-match-face-0))
#("psfstriptable" 9 11 (face orderless-match-face-0))
#("swaplabel" 5 7 (face orderless-match-face-0))
#("slabtop" 2 4 (face orderless-match-face-0))
#("disable-paste" 3 5 (face orderless-match-face-0))
#("imlib2_grab" 9 11 (face orderless-match-face-0))
#("ip6tables-legacy-restore" 4 6 (face orderless-match-face-0))
#("ip6tables-restore-translate" 4 6 (face orderless-match-face-0))
#("arptables-nft" 4 6 (face orderless-match-face-0))
#("xtables-legacy-multi" 2 4 (face orderless-match-face-0))
#("iptables-nft-save" 3 5 (face orderless-match-face-0))
#("tabs" 1 3 (face orderless-match-face-0))
#("byobu-disable" 9 11 (face orderless-match-face-0))
#("ip6tables-legacy" 4 6 (face orderless-match-face-0))
#("iptables-restore" 3 5 (face orderless-match-face-0))
#("iptables-xml" 3 5 (face orderless-match-face-0))
#("iptables-legacy" 3 5 (face orderless-match-face-0))
#("genfstab" 6 8 (face orderless-match-face-0))
#("psfxtable" 5 7 (face orderless-match-face-0))
#("ip6tables-nft-save" 4 6 (face orderless-match-face-0))
#("arptables-nft-restore" 4 6 (face orderless-match-face-0))
#("ip6tables-restore" 4 6 (face orderless-match-face-0))
#("ebtables-nft-restore" 3 5 (face orderless-match-face-0))
#("ip6tables-nft" 4 6 (face orderless-match-face-0))
#("ebtables-nft" 3 5 (face orderless-match-face-0))
#("ip6tables-save" 4 6 (face orderless-match-face-0))
#("psfgettable" 7 9 (face orderless-match-face-0))
#("ir-keytable" 7 9 (face orderless-match-face-0))
#("iptables-legacy-restore" 3 5 (face orderless-match-face-0))
#("iptables" 3 5 (face orderless-match-face-0))
#("ip6tables" 4 6 (face orderless-match-face-0))
#("ip6tables-translate" 4 6 (face orderless-match-face-0))
#("iptables-nft-restore" 3 5 (face orderless-match-face-0))
#("arptables-nft-save" 4 6 (face orderless-match-face-0))
#("ebtables-nft-save" 3 5 (face orderless-match-face-0))
#("iptables-apply" 3 5 (face orderless-match-face-0))
#("byobu-enable" 8 10 (face orderless-match-face-0))
#("iptables-save" 3 5 (face orderless-match-face-0))
#("byobu-disable-prompt" 9 11 (face orderless-match-face-0))
#("iptables-nft" 3 5 (face orderless-match-face-0))
#("ip6tables-legacy-save" 4 6 (face orderless-match-face-0))
#("update-mime-database" 15 17 (face orderless-match-face-0))
#("gen-enc-table" 9 11 (face orderless-match-face-0))
#("shtab" 3 5 (face orderless-match-face-0))
#("dnssec-keyfromlabel" 15 17 (face orderless-match-face-0))
#("byobu-enable-prompt" 8 10 (face orderless-match-face-0))
#("iptables-legacy-save" 3 5 (face orderless-match-face-0))
#("update-desktop-database" 18 20 (face orderless-match-face-0))
#("xtables-monitor" 2 4 (face orderless-match-face-0))
#("iptables-translate" 3 5 (face orderless-match-face-0))
#("e2label" 3 5 (face orderless-match-face-0))
#("ip6tables-apply" 4 6 (face orderless-match-face-0))
#("portablectl" 4 6 (face orderless-match-face-0))
#("term_colortab" 11 13 (face orderless-match-face-0))
#("psfaddtable" 7 9 (face orderless-match-face-0))
#("pmxab" 3 5 (face orderless-match-face-0))
#("ip6tables-nft-restore" 4 6 (face orderless-match-face-0))
#("iptables-restore-translate" 3 5 (face orderless-match-face-0))
#("xtables-nft-multi" 2 4 (face orderless-match-face-0))
#("psfstriptable" 9 11 (face orderless-match-face-0))
#("swaplabel" 5 7 (face orderless-match-face-0))
#("slabtop" 2 4 (face orderless-match-face-0))
#("disable-paste" 3 5 (face orderless-match-face-0))
#("imlib2_grab" 9 11 (face orderless-match-face-0))
#("ip6tables-legacy-restore" 4 6 (face orderless-match-face-0))
#("ip6tables-restore-translate" 4 6 (face orderless-match-face-0))
#("arptables-nft" 4 6 (face orderless-match-face-0))
#("xtables-legacy-multi" 2 4 (face orderless-match-face-0))
#("iptables-nft-save" 3 5 (face orderless-match-face-0))
#("tabs" 1 3 (face orderless-match-face-0))
#("byobu-disable" 9 11 (face orderless-match-face-0))
#("ip6tables-legacy" 4 6 (face orderless-match-face-0))
#("iptables-restore" 3 5 (face orderless-match-face-0))
#("iptables-xml" 3 5 (face orderless-match-face-0))
#("iptables-legacy" 3 5 (face orderless-match-face-0))
#("genfstab" 6 8 (face orderless-match-face-0))
#("psfxtable" 5 7 (face orderless-match-face-0))
#("ip6tables-nft-save" 4 6 (face orderless-match-face-0))
#("arptables-nft-restore" 4 6 (face orderless-match-face-0))
#("ip6tables-restore" 4 6 (face orderless-match-face-0))
#("ebtables-nft-restore" 3 5 (face orderless-match-face-0))
#("ip6tables-nft" 4 6 (face orderless-match-face-0))
#("ebtables-nft" 3 5 (face orderless-match-face-0))
#("ip6tables-save" 4 6 (face orderless-match-face-0))
#("psfgettable" 7 9 (face orderless-match-face-0))
#("ir-keytable" 7 9 (face orderless-match-face-0))
#("iptables-legacy-restore" 3 5 (face orderless-match-face-0))
#("iptables" 3 5 (face orderless-match-face-0))
#("ip6tables" 4 6 (face orderless-match-face-0))
#("ip6tables-translate" 4 6 (face orderless-match-face-0))
#("iptables-nft-restore" 3 5 (face orderless-match-face-0))
#("arptables-nft-save" 4 6 (face orderless-match-face-0))
#("ebtables-nft-save" 3 5 (face orderless-match-face-0))
#("iptables-apply" 3 5 (face orderless-match-face-0))
#("byobu-enable" 8 10 (face orderless-match-face-0))
#("iptables-save" 3 5 (face orderless-match-face-0))
#("byobu-disable-prompt" 9 11 (face orderless-match-face-0))
#("iptables-nft" 3 5 (face orderless-match-face-0))
#("ip6tables-legacy-save" 4 6 (face orderless-match-face-0))
#("update-mime-database" 15 17 (face orderless-match-face-0))
#("gen-enc-table" 9 11 (face orderless-match-face-0))
#("shtab" 3 5 (face orderless-match-face-0))
#("dnssec-keyfromlabel" 15 17 (face orderless-match-face-0))
#("byobu-enable-prompt" 8 10 (face orderless-match-face-0))
#("iptables-legacy-save" 3 5 (face orderless-match-face-0))
#("update-desktop-database" 18 20 (face orderless-match-face-0))
#("xtables-monitor" 2 4 (face orderless-match-face-0))
#("iptables-translate" 3 5 (face orderless-match-face-0))
#("e2label" 3 5 (face orderless-match-face-0))
#("ip6tables-apply" 4 6 (face orderless-match-face-0))
#("portablectl" 4 6 (face orderless-match-face-0))
#("term_colortab" 11 13 (face orderless-match-face-0))
#("psfaddtable" 7 9 (face orderless-match-face-0))
#("pmxab" 3 5 (face orderless-match-face-0))
#("ip6tables-nft-restore" 4 6 (face orderless-match-face-0))
#("iptables-restore-translate" 3 5 (face orderless-match-face-0))
#("xtables-nft-multi" 2 4 (face orderless-match-face-0))
#("psfstriptable" 9 11 (face orderless-match-face-0))
#("swaplabel" 5 7 (face orderless-match-face-0))
#("slabtop" 2 4 (face orderless-match-face-0))
#("disable-paste" 3 5 (face orderless-match-face-0))
#("imlib2_grab" 9 11 (face orderless-match-face-0))
#("ip6tables-legacy-restore" 4 6 (face orderless-match-face-0))
#("ip6tables-restore-translate" 4 6 (face orderless-match-face-0))
#("arptables-nft" 4 6 (face orderless-match-face-0))
#("xtables-legacy-multi" 2 4 (face orderless-match-face-0))
#("iptables-nft-save" 3 5 (face orderless-match-face-0))
#("tabs" 1 3 (face orderless-match-face-0))
#("byobu-disable" 9 11 (face orderless-match-face-0))
#("ip6tables-legacy" 4 6 (face orderless-match-face-0))
#("iptables-restore" 3 5 (face orderless-match-face-0))
#("iptables-xml" 3 5 (face orderless-match-face-0))
#("iptables-legacy" 3 5 (face orderless-match-face-0))
#("genfstab" 6 8 (face orderless-match-face-0))
#("psfxtable" 5 7 (face orderless-match-face-0))
#("ip6tables-nft-save" 4 6 (face orderless-match-face-0))
#("arptables-nft-restore" 4 6 (face orderless-match-face-0))
#("ip6tables-restore" 4 6 (face orderless-match-face-0))
#("ebtables-nft-restore" 3 5 (face orderless-match-face-0))
#("ip6tables-nft" 4 6 (face orderless-match-face-0))
#("ebtables-nft" 3 5 (face orderless-match-face-0))
#("ip6tables-save" 4 6 (face orderless-match-face-0))
#("psfgettable" 7 9 (face orderless-match-face-0))
#("ir-keytable" 7 9 (face orderless-match-face-0))
#("iptables-legacy-restore" 3 5 (face orderless-match-face-0))
#("iptables" 3 5 (face orderless-match-face-0))
#("ip6tables" 4 6 (face orderless-match-face-0))
#("ip6tables-translate" 4 6 (face orderless-match-face-0))
#("iptables-nft-restore" 3 5 (face orderless-match-face-0))
#("arptables-nft-save" 4 6 (face orderless-match-face-0))
#("ebtables-nft-save" 3 5 (face orderless-match-face-0))
#("iptables-apply" 3 5 (face orderless-match-face-0))
#("byobu-enable" 8 10 (face orderless-match-face-0))
#("iptables-save" 3 5 (face orderless-match-face-0))
#("byobu-disable-prompt" 9 11 (face orderless-match-face-0))
#("iptables-nft" 3 5 (face orderless-match-face-0))
#("ip6tables-legacy-save" 4 6 (face orderless-match-face-0))
#("update-mime-database" 15 17 (face orderless-match-face-0))
#("gen-enc-table" 9 11 (face orderless-match-face-0))
#("shtab" 3 5 (face orderless-match-face-0))
#("dnssec-keyfromlabel" 15 17 (face orderless-match-face-0))
#("byobu-enable-prompt" 8 10 (face orderless-match-face-0))
#("iptables-legacy-save" 3 5 (face orderless-match-face-0))
#("update-desktop-database" 18 20 (face orderless-match-face-0))
#("xtables-monitor" 2 4 (face orderless-match-face-0))
#("iptables-translate" 3 5 (face orderless-match-face-0))
#("e2label" 3 5 (face orderless-match-face-0))
#("ip6tables-apply" 4 6 (face orderless-match-face-0))
#("portablectl" 4 6 (face orderless-match-face-0))
#("term_colortab" 11 13 (face orderless-match-face-0))
#("psfaddtable" 7 9 (face orderless-match-face-0))
#("pmxab" 3 5 (face orderless-match-face-0))
#("ip6tables-nft-restore" 4 6 (face orderless-match-face-0))
#("iptables-restore-translate" 3 5 (face orderless-match-face-0))
#("xtables-nft-multi" 2 4 (face orderless-match-face-0))
#("psfstriptable" 9 11 (face orderless-match-face-0))
#("swaplabel" 5 7 (face orderless-match-face-0))
#("slabtop" 2 4 (face orderless-match-face-0))
#("disable-paste" 3 5 (face orderless-match-face-0))
#("imlib2_grab" 9 11 (face orderless-match-face-0))
#("ip6tables-legacy-restore" 4 6 (face orderless-match-face-0))
#("ip6tables-restore-translate" 4 6 (face orderless-match-face-0))
#("arptables-nft" 4 6 (face orderless-match-face-0))
#("xtables-legacy-multi" 2 4 (face orderless-match-face-0))
#("iptables-nft-save" 3 5 (face orderless-match-face-0))
#("tabs" 1 3 (face orderless-match-face-0))
#("byobu-disable" 9 11 (face orderless-match-face-0))
#("ip6tables-legacy" 4 6 (face orderless-match-face-0))
#("iptables-restore" 3 5 (face orderless-match-face-0))
#("iptables-xml" 3 5 (face orderless-match-face-0))
#("iptables-legacy" 3 5 (face orderless-match-face-0))
#("genfstab" 6 8 (face orderless-match-face-0))
#("psfxtable" 5 7 (face orderless-match-face-0))
#("ip6tables-nft-save" 4 6 (face orderless-match-face-0))
#("arptables-nft-restore" 4 6 (face orderless-match-face-0))
#("ip6tables-restore" 4 6 (face orderless-match-face-0))
#("ebtables-nft-restore" 3 5 (face orderless-match-face-0))
#("ip6tables-nft" 4 6 (face orderless-match-face-0))
#("ebtables-nft" 3 5 (face orderless-match-face-0))
#("ip6tables-save" 4 6 (face orderless-match-face-0))
#("psfgettable" 7 9 (face orderless-match-face-0))
#("ir-keytable" 7 9 (face orderless-match-face-0))
#("iptables-legacy-restore" 3 5 (face orderless-match-face-0))
#("iptables" 3 5 (face orderless-match-face-0))
#("ip6tables" 4 6 (face orderless-match-face-0))
#("ip6tables-translate" 4 6 (face orderless-match-face-0))
#("iptables-nft-restore" 3 5 (face orderless-match-face-0))
#("arptables-nft-save" 4 6 (face orderless-match-face-0))
#("ebtables-nft-save" 3 5 (face orderless-match-face-0))
#("iptables-apply" 3 5 (face orderless-match-face-0))
#("byobu-enable" 8 10 (face orderless-match-face-0))
#("iptables-save" 3 5 (face orderless-match-face-0))
#("byobu-disable-prompt" 9 11 (face orderless-match-face-0))
#("iptables-nft" 3 5 (face orderless-match-face-0))
#("ip6tables-legacy-save" 4 6 (face orderless-match-face-0))
#("update-mime-database" 15 17 (face orderless-match-face-0))
#("gen-enc-table" 9 11 (face orderless-match-face-0))
#("shtab" 3 5 (face orderless-match-face-0))
#("dnssec-keyfromlabel" 15 17 (face orderless-match-face-0))
#("byobu-enable-prompt" 8 10 (face orderless-match-face-0))
#("iptables-legacy-save" 3 5 (face orderless-match-face-0))
#("update-desktop-database" 18 20 (face orderless-match-face-0))
#("xtables-monitor" 2 4 (face orderless-match-face-0))
#("iptables-translate" 3 5 (face orderless-match-face-0))
#("e2label" 3 5 (face orderless-match-face-0))
感觉像是windows的问题,你当前major-mode是shell-mode,company补全返回的是文件名,win的IO性能拉跨,如果当前目录文件太多就会这样吧。。
是的,看见一堆的dll我也觉得是windows的问题,但是我的.zshrc
在wsl下的home目录啊……这是怎么补出这样一堆候选的
显然是这个变量的问题
谢谢,感觉确实是的,
sudo fd 'portabledeviceapi.mof' /
/mnt/c/Windows/WinSxS/wow64_microsoft-windows-wpd-portabledeviceapi_31bf3856ad364e35_10.0.22000.1_none_ab990e3e2533c598/portabledeviceapi.mof
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files/ImageMagick-7.1.0-Q16-HDRI:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files/dotnet/:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files (x86)/dotnet/:/mnt/c/Program Files/Wolfram Research/WolframScript/:/mnt/c/Users/wang1/AppData/Local/Microsoft/WindowsApps:/mnt/c/Program Files/Bandizip/:/mnt/c/Program Files/JetBrains/PyCharm Community Edition 2021.3.2/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
找了一下上面补全项当中的一个,明明也不在PATH当中,我不理解这是怎么被刨出来的,按照这个逻辑的话,难道其实遍历了所有的文件来匹配?
sh-completion-at-point-function
这个函数我不太清楚该怎么改,这个搜索的深度我觉得太夸张了一点
原来如此!好像有点明白了。之前的想法是,linux下的PATH不是递归的,既然没有/a/b/c
只有/a
就应该搜索不到/a/b/c/d
。但是事实是,作为补全的话/a/b/c/d
又确实是/a
开头的补全项,所以才导致了这个情况……
能否在不改动PATH的前提下,把这个搜索的深度给限制一下呢?