使用 ConEmu/Cygwin 在 Windows vim 中退出后清除屏幕

使用 ConEmu/Cygwin 在 Windows vim 中退出后清除屏幕

我正在尝试将三件事结合起来:康埃穆、Cygwin 和 vim。有问题的 vim 不是 Cygwin vim,而是 gvim 包中的原生 Windows vim(之所以选择它,是因为 Cygwin vim 不支持 xterm 256 色)。在我按照以下说明操作后,256 色语法高亮似乎可以正常工作指示在 StackOverflow 上,但我无法解决其他问题。

Cygwin vim 在交替屏幕下工作正常:当我退出时,屏幕内容被清除,我可以再次看到我的命令历史记录。Windows vim 则不然:当我退出时,命令提示符出现在以前的 vim 内容页面下方。这个问题在 StackOverflow 和 SuperUser 上被问过好几次:这里这里这里这里。但是,这些问题中的任何解决方案似乎都无法在 ConEmu/Cygwin 中起作用。我尝试过:

  • 设置t_ti如下:t_te.vimrc

    let &t_ti="\e[?47h"
    let &t_te="\e[?47l"
    
  • 或者:

    let &t_ti="\e[?1049h"
    let &t_te="\e[?1049l"
    
  • altscreen on在 中启用.screenrc。我不确定它是否应该有任何效果,因为我甚至没有screen在 Cygwin 中安装它。不过,安装它并没有改变任何东西。明确地用 启动 vimscreen会带来奇怪的结果:一半的转义序列和代码被破坏,不是每个按键都能被识别,控制台尺寸无论screen参数是什么都是 ~80x40。

$TERM的 vim 当前为xterm,因为它已在.vimrc配置中设置为启用 ConEmu 中的 256 色支持。但是,发送类似 xterm 的转义序列似乎根本无法清除屏幕。

我很高兴能得到有关此问题的任何帮助。

答案1

据我所知,vim(Windows 版本)不会发布到终端进入/离开替代模式序列。不知道 mintty 如何处理它,仍在调查中。

答案2

尝试在你的 中设置此项.vimrc,这也会启用 vim 中的滚轮。
这来自http://conemu.github.io/en/Whats_New.html,版本 150316 说明。它似乎终于为我解决了这个问题。

""""""""""""""""""""""""""""""""""""""
" let mouse wheel scroll file contents
""""""""""""""""""""""""""""""""""""""
if !has("gui_running")
    set term=xterm
    set mouse=a
    set nocompatible
    inoremap <Esc>[62~ <C-X><C-E>
    inoremap <Esc>[63~ <C-X><C-Y>
    nnoremap <Esc>[62~ <C-E>
    nnoremap <Esc>[63~ <C-Y>
endif

相关内容