【问题标题】:Vim function won't respond in terminal vimVim 函数不会在终端 vim 中响应
【发布时间】:2015-10-25 17:52:16
【问题描述】:

我偶然发现了一个类似于 Textmate 中的功能的功能。

显示当前单词的突出显示组。

在 gvim 中一切正常,但在使用 vim 时不会得到输出,这让我很困惑。

以下是相关部分:

nmap <C-S-P> :call <SID>SynStack()<CR>
function! <SID>SynStack()
  if !exists("*synstack")
    return
  endif
  echo map(synstack(line('.'), col('.')), 
  \       'synIDattr(v:val, "name")')
endfunc$

我的问题是它为什么会这样以及如何解决它,如果可能的话-.-

感谢您提供的任何帮助。

【问题讨论】:

  • 如果这是为了映射 control/shift/P,无论 vim 或其他应用程序,它都不会在终端中工作。
  • 非常感谢,改成 ctrl/p 现在可以在 g/vim 中使用了。
  • @orlp 这里也可以。

标签: function vim terminal


【解决方案1】:

问题出在这一行:

nmap <C-S-P> :call <SID>SynStack()<CR>

要求 vim 将 control shift p 映射到 SynStack 宏。但是,最终使用 ASCII 字符和 ECMA-48 控制序列的终端(例如 xterm)无法将它们视为不同的:

  • c控制 shift P
  • c控制 shift p
  • c控制P
  • c控制p

它们都以 controlP 的形式出现(忽略大小写)。 gvim 在不同的环境中工作,大多数修饰符组合可以相互区分。

【讨论】:

    猜你喜欢
    • 2020-10-16
    • 2017-05-08
    • 2020-05-14
    • 2010-11-17
    • 2011-08-11
    • 2016-10-23
    • 2014-09-11
    • 1970-01-01
    相关资源
    最近更新 更多