终端程序保存VI状态

终端程序保存VI状态

几年来,我一直在工作中使用 GNOME 终端,并且已经非常习惯了。我通常通过在自己的虚拟桌面上对每个任务进行分类来组织我的工作,然后在每个虚拟桌面中,我有多个 Gnome 终端,每个终端都有多个终端选项卡,其中大多数都有一个打开的文件可供编辑。

这种设置确实让我很难重新启动,而且当我重新启动时,尝试保存我打开的文件和位置真的很麻烦。我进一步研究了 GNOME 终端以及 Konsole,但据我所知,这两个终端程序都不能满足我的要求。我希望能够在 GNOME 或 Konsole 中保存会话,但当我重新加载该会话时,之前在 VI 中打开的文件将再次在 VI 中打开。它们现在似乎所做的只是重新加载我所在的目录,而不是在 VI 中打开文件。

是否有一个程序可以做到这一点,或者也许我在 GNOME 或 Konsole 中缺少一个设置,允许在关闭会话之前自动重新打开我在 VI 中打开的文件?

答案1

您是否尝试将其存储在会话中?

:h session

你最好问http://unix.stackexchange.com,但是我在互联网上发现了一些不错的链接...您应该看看以下链接。

stackoverflow 链接 - 保存和恢复 vim 状态

vim 配置

所有重要的 VI 命令

答案2

使用 Vim,您可以运行:mksession以保存当前会话,即映射、选项、变量、当前目录、选项卡、窗口(及其布局)等。这会将所有会话信息保存到当前目录中名为的文件中(如果您想将不同的会话保存在不同的文件中, Session.vim可以为命令提供文件名 ,例如)。由于信息存储在文件中,因此在计算机重新启动后它将保留下来。:mksession:mksession work-task.vim

要在下次启动 Vim 时恢复会话,只需运行, :source Session.vim或者:source work-task.vim

请参阅 Vim 了解help session-file完整详情。

答案3

.vimrc 中的以下内容将在退出时保存会话并在启动时恢复它们:

function! MakeSession()
  let b:sessiondir = $HOME . "/.vim/sessions" . getcwd()
  if (filewritable(b:sessiondir) != 2)
    exe 'silent !mkdir -p ' b:sessiondir
    redraw!
  endif
  let b:filename = b:sessiondir . '/session.vim'
  exe "mksession! " . b:filename
endfunction

function! LoadSession()
  let b:sessiondir = $HOME . "/.vim/sessions" . getcwd()
  let b:sessionfile = b:sessiondir . "/session.vim"
  if (filereadable(b:sessionfile))
    exe 'source ' b:sessionfile
  else
    echo "No session loaded."
  endif
endfunction

au VimEnter * nested :call LoadSession()
au VimLeave * :call MakeSession()

来源

相关内容