在vim中,如何获得*以突出显示和抽出包含特殊字符(@)的单词:,^

时间:2017-03-16 17:49:53

标签: vim vim-plugin vim-syntax-highlighting

在vim 8.0中,对于 .sh 文件,我想按*突出显示光标下的单词,将单词复制到yank缓冲区中,我想要包含单词人物:

( @ ) : , ^

除了字母数字和下划线字符外。我还想再次按*来清除突出显示。我注意到iskeyword的默认值是:

iskeyword=@,48-57,_,192-255

这是我在~/.vimrc文件中的内容:

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>yiw"
endfunction

set iskeyword+=(,@,),:,,,^

let g:highlighting = 0

nnoremap <silent> <expr> <CR> Highlighting()

它在很大程度上起作用。什么不起作用的是,单词不包括字符:

( @

但它们包括其他内容,包括右括号。以下是一些应该匹配的词:

(@)_name
(@):name
(@)_name_name
(@):name^name
(@):name,name

有人可以建议一个修复程序,允许它使用单词,包括我想要的所有字符吗?请随意提出一个完全不同的实现或插件来解决我的需求。

1 个答案:

答案 0 :(得分:2)

答案是在~/.gvimrc文件中执行以下操作:

set iskeyword+=(,@-@,),:,,,^

要获得有关成语@-@的原因的更多信息,请在vim中执行:

:help isfname