【问题标题】:Setting a keyboard shortcut for a vim command为 vim 命令设置键盘快捷键
【发布时间】:2013-09-25 20:25:46
【问题描述】:

假设我希望<C-*> 为我提供:set nohlsearch 命令的功能。我该如何做到这一点? map 命令似乎只能将一组击键与另一组映射。如何将组合键映射到命令?

【问题讨论】:

  • 您应该更改问题以注意命令包含“大写字母”(即已修改)的愿望
  • @NewAlexandria :我不明白你的建议,你能澄清一下吗?
  • “在 Vim 中设置键盘快捷键”本身就是一项微不足道的任务,无法在这个网站上提问——这就是为什么你被 bing 否决的原因。您需要使问题成为更正确且不明显的问题:使用 shift 之类的修饰符
  • @NewAlexandria :即使没有重新措辞,这个问题对我来说似乎还可以。重映射适用于组合键到组合键的映射。我的疑问是,我该如何组合到命令映射。我错过了命令中的 ,这也是地图没有出现的部分原因。有些符号无法映射的事实是我今天学到的新东西!如果您仍然希望重新表述问题,请随时进行编辑!此外,如果您是否决我的人,我请求您重新考虑您的投票。非常感谢!
  • @NewAlexandria :我不会编辑这个问题,因为它现在看起来对我来说还可以。无论如何感谢您的建议。

标签: vim


【解决方案1】:

你会这样做:

:nnoremap <C-*> :set nohlsearch<CR>

&lt;C-*&gt; 表示同时按下 CtrlShift8 (至少在英文键盘布局上)。不幸的是,这种特定的组合不起作用。 由于键盘输入在内部处理的方式,不幸的是,这在今天通常是不可能的,即使在 GVIM 中也是如此。某些组合键,如 Ctrl + non-alphabetic 无法映射,而 Ctrl + letterCtrl + Shift + 字母 无法区分。 (除非您的终端为它发送一个独特的 termcap 代码,但大多数情况下不会。)在插入或命令行模式下,尝试键入组合键。如果没有任何反应/插入,则不能使用该组合键。这也适用于&lt;Tab&gt;/&lt;C-I&gt;&lt;CR&gt;/&lt;C-M&gt;/&lt;Esc&gt;/&lt;C-[&gt; 等(唯一的例外是&lt;BS&gt;/&lt;C-H&gt;。)这是一个已知的痛点,并且vim_dev 和#vim IRC 频道上各种讨论的主题。

有些人(最重要的是 Paul LeoNerd Evans)想要解决这个问题(即使是支持此功能的终端中的控制台 Vim 也是如此),并提出了 various proposals

但截至今天,还没有补丁或志愿者出现,尽管许多人表示希望在未来的 Vim 8 主要版本中提供此功能。

您可以做的是选择另一个组合键,例如功能键之一:

:nnoremap <F5> :set nohlsearch<CR>

【讨论】:

  • 顺便说一句,我真的很想解决这个问题;我的关键组合快用完了 :-) 有了标准回复,当我向 Bram 提出最终解决这个问题的请求时(当我觉得时间已经准备好时),我将能够找到所有这些问题。跨度>
【解决方案2】:

正如其他人已经指出的那样,由于笔划发送到终端的方式,所有类型的键绑定都是不可能的。但是,为了完成您的要求 (:nohlsearch),下面的代码允许您通过按空格来切换突出显示。

set nocompatible

let g:highlighting = 0
function! Highlighting()
  if g:highlighting == 1 && @/ =~ '^\\<'.expand('<cword>').'\\>$'
    let g:highlighting = 0
    return ":silent nohlsearch\<CR>"
  endif
  let @/ = '\<'.expand('<cword>').'\>'
  let g:highlighting = 1
  return ":silent set hlsearch\<CR>"
endfunction
nnoremap <silent> <expr> <Space> Highlighting()

【讨论】:

    【解决方案3】:

    你应该可以在你的 .vimrc 中这样做:

    nnoremap <C-*> :set nohlsearch<CR>
    

    虽然我不确定是否总是受支持的快捷方式。

    another exemple here

    【讨论】:

      猜你喜欢
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 2014-11-04
      • 2017-07-07
      • 2022-01-09
      • 2020-04-28
      • 1970-01-01
      相关资源
      最近更新 更多