我想让
<C-*>
提供:set nohlsearch
命令的功能。我该怎么做?映射命令似乎只能将一组按键映射到另一组按键。如何将按键组合映射到一个命令?<C-*>
提供:set nohlsearch
命令的功能。我该怎么做?映射命令似乎只能将一组按键映射到另一组按键。如何将按键组合映射到一个命令?:nnoremap <C-*> :set nohlsearch<CR>
<Tab>
/<C-I>
、<CR>
/<C-M>
/<Esc>
/<C-[>
等。(唯一的例外是<BS>
/<C-H>
。)这是一个已知的痛点,并且是vim_dev和#vim IRC频道上各种讨论的主题。"
有些人(尤其是Paul LeoNerd Evans)希望解决这个问题(即使是对于支持此功能的终端中的控制台Vim),并提出了 各种建议。
但是,截至今天,还没有补丁或志愿者出现,尽管许多人表达了希望在未来的Vim 8主要版本中实现此功能的愿望。
您可以选择另一个键组合,例如功能键之一:
:nnoremap <F5> :set nohlsearch<CR>
正如其他人已经指出的那样,由于按键传递给终端的方式,所有类型的按键绑定都不可能。然而,为了实现你所要求的 (: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()
shift
这样的修饰符。 - New Alexandria