我不知道这是否是询问有关 Vifm 问题的合适场所,但我找不到任何专门讨论该问题的论坛。
我的目标是将 Vifm 分成两个窗格,第二个窗格显示第一个窗格中选定对象的文件信息。如果是目录,第二个窗格将以 :tree 模式显示目录内部,如果是文件,则仅预览文件。我能够做到这一点,但我一点也不喜欢它完成的方式,我需要帮助来制作更好的版本。
" repeated code for hjkl
nnoremap h :view!<CR>:view<CR>h:if filetype('.') != 'dir' | view! | else | :sync %c<CR>:winrun , tree | endif<CR>
解释:
:view!<CR>:view<CR>
强制进入查看模式然后退出,以便每次重置我的视图。
h:if filetype('.') != 'dir' | view!
按“h”并检查所选对象是否为目录,如果不是,则强制进入视图以预览文件。
else | :sync %c<CR>:winrun , tree
如果它是一个目录,它会将第二个窗格与第一个窗格同步,以使所选目录成为第二个窗格中显示的目录(感谢 %c)。然后 winrun 将在第二个窗格上运行“:tree”以在第二个窗格中显示所选目录的树状视图。
尽管这有效,但它会不断显示错误消息“:endif without :if”,并且需要花费大量时间来加载大目录,在此期间我无法采取行动。我的目标是创建一个持续工作的命令,而不是在我按下“hjkl”时,删除错误消息,并在按下按钮或选择太大的文件夹时禁用整个命令。我尝试过函数,但无法创建一个,因为 Vifm 没有很好的文档记录。