renvill Asked: 2025-02-18 11:38:26 +0800 CST2025-02-18 11:38:26 +0800 CST 2025-02-18 11:38:26 +0800 CST 如何在 Vim 7.4 中模仿 Lexplore 行为 772 SE 中的这个主题已确认我无法在 Vim 7.4(我目前正在使用)中使用 Lexplore。我无法下载插件,因为我的工作站处于安全环境中,除非我要求我们的 IT 升级 Vim(这非常困难),否则我只能寻找替代方法来模仿 Lexplore。 任何关于如何在 Vim 中模拟 Lexplore 的帮助我都非常感谢。提前谢谢! vim 1 个回答 Voted Best Answer romainl 2025-02-18T15:08:28+08:002025-02-18T15:08:28+08:00 您希望您的:Lexplore模拟有多忠实? 表面上看,“在当前窗口的左侧打开一个细长的垂直 Netrw 窗口”很简单: :20Vexplore! 但您可能希望该细长窗口占据整个屏幕高度。只需添加以下代码,即可轻松将窗口移动到屏幕最左侧:help :wincmd: :20Vexplore!|wincmd H 请注意20,这里是百分比,而不是列数。 但是,在这里,窗口的宽度在此过程中丢失了。在我的快速测试中,似乎:set noequalalways没有:set winfixwidth任何影响,老实说,这令人惊讶。但您仍然可以使用:help vertical-resize并进行一些计算: :Vexplore!|wincmd H|execute 'vertical resize ' .. &columns / 100 * 20 让我们将其转变为自定义映射: function! LexploreOpen() Vexplore wincmd H execute 'vertical resize ' .. &columns / 100 * 20 endfunction nnoremap <F5> :<C-u>call LexploreOpen()<CR> 现在您可以按下来<F5>打开您的:lexplore相似物。 但真正与众不同:Lexplore的:help Vexplore是,它是一个开关:你:Lex打开它,:Lex再打开一次它就可以关闭它。 您可以为此使用全局变量: function! LexploreToggle() if exists('g:FakeLexploreIsOpened') wincmd t close unlet g:FakeLexploreIsOpened else Vexplore wincmd H execute 'vertical resize ' .. &columns / 100 * 20 let g:FakeLexploreIsOpened = 1 endif endfunction nnoremap <F5> :<C-u>call LexploreToggle()<CR> 在我看来,设置窗口本地选项并关闭设置了该选项的窗口会更干净,但我不记得当时有哪些功能可以做到这一点。看看是否:help getwinvar()能有所帮助。 无论如何,这应该会给你一个合理的近似值,:Lexplore但它首先接受路径,而上面的代码片段不接受。而且原始命令完全有可能做其他事情,比如设置各种有用的内部 Netrw 变量等等。这意味着你想要离真实的越近:Lexplore,它就越复杂。对于完整的克隆,:Lexplore恐怕你必须看看 Netrw 的代码。 请注意,上述代码片段与“插件”之间没有根本区别,因此,如果您可以将该代码片段放入您的安全环境中,那么您可能也可以获得最新的 Netrw。
您希望您的
:Lexplore
模拟有多忠实?表面上看,“在当前窗口的左侧打开一个细长的垂直 Netrw 窗口”很简单:
但您可能希望该细长窗口占据整个屏幕高度。只需添加以下代码,即可轻松将窗口移动到屏幕最左侧
:help :wincmd
:请注意
20
,这里是百分比,而不是列数。但是,在这里,窗口的宽度在此过程中丢失了。在我的快速测试中,似乎
:set noequalalways
没有:set winfixwidth
任何影响,老实说,这令人惊讶。但您仍然可以使用:help vertical-resize
并进行一些计算:让我们将其转变为自定义映射:
现在您可以按下来
<F5>
打开您的:lexplore
相似物。但真正与众不同
:Lexplore
的:help Vexplore
是,它是一个开关:你:Lex
打开它,:Lex
再打开一次它就可以关闭它。您可以为此使用全局变量:
在我看来,设置窗口本地选项并关闭设置了该选项的窗口会更干净,但我不记得当时有哪些功能可以做到这一点。看看是否
:help getwinvar()
能有所帮助。无论如何,这应该会给你一个合理的近似值,
:Lexplore
但它首先接受路径,而上面的代码片段不接受。而且原始命令完全有可能做其他事情,比如设置各种有用的内部 Netrw 变量等等。这意味着你想要离真实的越近:Lexplore
,它就越复杂。对于完整的克隆,:Lexplore
恐怕你必须看看 Netrw 的代码。请注意,上述代码片段与“插件”之间没有根本区别,因此,如果您可以将该代码片段放入您的安全环境中,那么您可能也可以获得最新的 Netrw。