gpt4 book ai didi

session - 从 stdin 读取时防止 vim 加载 session

转载 作者:行者123 更新时间:2023-12-02 10:03:39 25 4
gpt4 key购买 nike

我最近经常自定义 .vimrc,并且喜欢 :mksession 给我带来的强大功能和便利。目前,我的 .vimrc 中有以下内容用于自动加载 session :

function! LoadSession()                                                              
if argc() == 0 && ! &diff
let g:sessiondir = $HOME . "/.vim/sessions" . getcwd()
let g:sessionfile = g:sessiondir . "/session.vim"
if (filereadable(g:sessionfile))
exe 'source ' g:sessionfile
else
echo "No session loaded." + argc() + argv()
endif
else
let g:sessionfile = ""
let g:sessiondir = ""
call ResCur()
endif
endfunction

然后我使用 au VimEnter * 嵌套 :call LoadSession() 来调用它。这对于大多数情况都很有效,除了 vim 从 stdin 读取时。在这种情况下, session 仍在加载,但我想防止这种情况发生。我本以为 argc() == 0 条件就足够了,但似乎调用 vim 的 -stdin< 读取 导致 argc() 不返回 0。 糟糕! ;]

我通过查看 argv(0) 尝试了各种方法(在本例中它是空的 - 为什么?),试图找到识别 vim 正在从 读取的方法stdin (它显示一条消息表明它正在这样做,但我不知道如何利用它)等,但到目前为止还没有运气。

我确信我在这里遗漏了一些非常明显的东西,但是 Google 和 vim :help 并没有让我得到任何帮助,所以我希望这里有一些好心的人可以阐明一些观点这对我来说。

最佳答案

我发现作品具有

autocmd StdinReadPre * let g:my_is_stdin = 1

在您的 .vimrc 中,然后在 session 保存/加载函数中测试 exists("g:my_is_stdin") 。请注意,这些还必须通过 autocmdVimLeave/VimEnter 事件上运行,才能使该方案发挥作用。

关于session - 从 stdin 读取时防止 vim 加载 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13907358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com