Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在vim中,如何让*突出显示和拖动单词,包括特殊字符(@):^_Vim_Vim Plugin_Vim Syntax Highlighting - Fatal编程技术网

在vim中,如何让*突出显示和拖动单词,包括特殊字符(@):^

在vim中,如何让*突出显示和拖动单词,包括特殊字符(@):^,vim,vim-plugin,vim-syntax-highlighting,Vim,Vim Plugin,Vim Syntax Highlighting,在vim 8.0中,对于.sh文件,我想按*突出显示光标下的单词,将单词复制到yank缓冲区,我想让单词包含以下字符: ( @ ) : , ^ ( @ 除了字母数字和下划线字符之外。我还想再次按下*以清除突出显示。我注意到,iskeyword的默认值是: iskeyword=@,48-57,_,192-255 以下是我的~/.vimrc文件中的内容: function! Highlighting() if g:highlighting == 1 && @/ =~ '^

在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()
set iskeyword+=(,@-@,),:,,,^
但他们包括了其他人,包括右括号。以下是一些应该匹配的词:

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

有人能提出一个修复方案,让它能够处理包含我想要的所有字符的单词吗?请随意推荐一个完全不同的实现或插件来解决我的需要。

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

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()
set iskeyword+=(,@-@,),:,,,^
要了解为什么需要使用习惯用法
@-@
的更多信息,请在vim中执行以下操作:

:help isfname

我通过查看vim中的帮助找到了答案。我会提供这个答案,以防对其他人有所帮助。