Vim:无法使用Control + Shift +(左或右)来选择单词

时间:2018-04-25 13:44:40

标签: vim

在Windows上,在Vim的图形版本中,我使用Control+Shift+Left(或Right)在插入模式下选择单词。

为了确保没有任何因素导致其失败,我首先停止了任何初始化文件的加载:

vim -u NONE

然后,在Vim中,:behave mswin,设置所有这些班次选择等。

为什么它适用于gvim而不是vim。我可以确保它在我的计算机上没有任何内容,因为我已停止所有脚本,在vanilla命令提示符下运行vim等,但它仍然无效。我也在另一台计算机上重现了这个问题。

有人可以提供建议吗?

2 个答案:

答案 0 :(得分:1)

要让Ctrl+Shift+LeftCtrl+Shift+Right按照您的问题所述行事,您可以尝试:

if has('gui_running')                                                           
    ;                                                                           
else                                                                            
    inoremap <c-s-left> <c-o>db                                                 
    inoremap <c-s-right> <c-o>de                                                
endif      

此问题的答案:How to map Ctrl+A and Ctrl+Shift+A differently?解释了为什么Ctrl-Shift-Key在某些终端无效。

答案 1 :(得分:0)

我发现在控制台Vim中使用:behave mswin时,您可以使用Shift-Right选择单个字符,但然后使用Control-Right(即没有Shift )选择下一个单词。

但是,我习惯使用Control-Shift来选择单词,因此我编写了以下AutoHotkey脚本来启用此功能:

SetTitleMatchMode 2 ; for partial matching of Window Title

#If WinActive("ahk_exe vim.exe") or ((WinActive("ahk_exe cmd.exe") or WinActive("ahk_exe powershell.exe") or WinActive("ahk_exe ConEmu64.exe")) and WinActive("- VIM"))

<^<+Left::
    SendInput +{Left}
    SendInput +{Right}
    SendInput ^{Left}
return 

<^<+Right::
    SendInput +{Right}
    SendInput +{Left}
    SendInput ^{Right}
return 

#If