使某些功能仅在MacVim中工作,而不是从终端内部在Vim上工作

使某些功能仅在MacVim中工作,而不是从终端内部在Vim上工作,vim,macvim,Vim,Macvim,我主要通过OSX的MacVim应用程序使用Vim,但我也从终端内部使用它。但是,由于我使用以下vim代码,以便利用会话在下一个会话中始终打开以前的文件: 在~/.vimrc中: function! RestoreSession() if argc() == 0 "vim called without arguments execute 'source ~/.vim/Session.vim' end endfunction autocmd VimEnter * call Resto

我主要通过OSX的MacVim应用程序使用Vim,但我也从终端内部使用它。但是,由于我使用以下vim代码,以便利用会话在下一个会话中始终打开以前的文件:

在~/.vimrc中:
function! RestoreSession()
  if argc() == 0 "vim called without arguments
    execute 'source ~/.vim/Session.vim'
  end
endfunction
autocmd VimEnter * call RestoreSession()
函数!恢复会话()
如果argc()==0,则调用vim时不带参数
执行'source~/.vim/Session.vim'
结束
端功能
autocmd Vicenter*调用RestoreSession()

当我使用MacVim时,没有任何问题,但当我从终端内部使用Vim时,每当我输入命令(
Vim
)并开始使用它时,我首先会收到很多错误消息,如在处理/Users/myUserName/.Vim/Session.Vim时检测到的
错误:
第265行:
“path/to/my/file.js”19L,626C

因此,我想知道解决上述问题的最佳方法是什么:

  • 始终仅在MacVim上使用Vim(我不喜欢…)

  • 稍微修改上面的代码片段,使其仅在可行的情况下通过MacVim有效

  • 忍受这些错误消息(在看到这些错误后,我可以使用Vim——我只是不喜欢看到它,每当我在终端中使用它时,都会经常键入“ENTER”)

如果第二种解决方案可行的话,我想采用它,但是我怎么做呢?在这种情况下,你知道还有其他更好的解决方案吗


谢谢。

除非您能找出错误的根本原因(而且即使存在这些错误,您也显然对恢复感到满意),否则您可以通过以下方式抑制错误:

silent! execute 'source ~/.vim/Session.vim'

将您只想在GUI版本中使用的任何设置放在一个.gvimrc文件中。

第265行是什么命令?!您是否使用MacVim的CLI可执行文件或其他一些文件,如默认文件?因此,我的问题是,只有在终端中使用时,而不是在MacVim中使用时,如何才能消除这些错误?添加一个条件,例如
execute(has)('gui_running')?'silent!':'''source~/.vim/Session.vim'
谢谢。但是当我从终端内部使用会话功能时,我不能使用它-我只想在使用会话时避免这些错误消息。