加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

从stdin读取时阻止vim加载会话

发布时间:2020-12-15 21:06:00 所属栏目:安全 来源:网络整理
导读:我最近一直在定制我的. vimrc并且喜欢mksession给我的力量和便利.我目前在.vimrc中有以下自动加载会话: function! LoadSession() if argc() == 0 ! diff let g:sessiondir = $HOME . "/.vim/sessions" . getcwd() let g:sessionfile = g:sessiondir . "/ses
我最近一直在定制我的. vimrc并且喜欢mksession给我的力量和便利.我目前在.vimrc中有以下自动加载会话:

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 *嵌套调用它:调用LoadSession().这适用于大多数情况,除非vim从stdin读取.在这种情况下,会话仍然被加载,但我想防止这种情况发生.我本以为argc()== 0条件就足够了,但看起来 – 从vdin读取的vim会导致argc()不返回0. Poop! ]

我已经尝试了各种各样的东西,从查看argv(0)(在这种情况下它是空的 – 为什么?),试图找到识别vim从stdin读取的方法(它显示了一条消息,它正在这样做,但我无法弄清楚如何进入那个)等,但到目前为止没有运气.

我确定我在这里遗漏了一些非常明显的东西,但谷歌和vim:帮助并没有把我带到任何地方,所以我希望这里有一些善良的灵魂可以为我揭示这一点.

解决方法

我正在使用的 session.vim plugin提供了扩展的会话处理.其中,它询问是否应该在Vim启动时恢复以前保存的会话.

但除非你需要插件的其他功能,否则使用映射触发恢复的解决方法也可能很好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读