首先,我将展示我遇到的具体问题,但我认为问题可以概括.
我正在使用一种具有明确括号语法的语言(如Lisp),但是只有左侧paren保留的关键字.例:
(key key)
Run Code Online (Sandbox Code Playgroud)
前者是保留字,但后者是对名为"key"的变量的引用
不幸的是,我发现突出显示左边的人很烦人,所以我最终使用了
syn keyword classification key
Run Code Online (Sandbox Code Playgroud)
代替
syn keyword classification (key
Run Code Online (Sandbox Code Playgroud)
但前者对变量的触发也是如此.
我会采取行动解决我的问题,但我更感兴趣的是一种通用方法来突出显示给定匹配的一个子集.
在vim中突出显示的CSS语法并不完全是最优的.例如:
div.special_class
Run Code Online (Sandbox Code Playgroud)
停止突出显示_.
是否有改进的荧光笔不会咬下划线?
更新:我正在使用VIM - Vi IMproved 7.1(2007年5月12日,2008年6月17日编译15:22:40)
我的css.vim的标题是:
" Vim syntax file
" Language: Cascading Style Sheets
" Maintainer: Claudio Fleiner <claudio@fleiner.com>
" URL: http://www.fleiner.com/vim/syntax/css.vim
" Last Change: 2006 Jun 19
" CSS2 by Nikolai Weibull
" Full CSS2, HTML4 support by Yeti
Run Code Online (Sandbox Code Playgroud) 我想在vim中为任务列表创建自定义语法高亮.
任务项以连字符开头.两种类型的任务项是相关的:(a)没有'@done'标记的项目.(b)带有@done标签的项目.(a)和(b)需要以不同的方式加以强调.
我正在使用taskpaper,它工作正常,但问题是,我正在尝试使这适用于跨越多行的任务项.例如:
- Regular item (works)
- Completed item @done (works)
- Multi-line item. This item continues on to
the line below. (doesn't work)
- Multi-line completed item. This item continues
on to the line below. (doesn't work). @done
Run Code Online (Sandbox Code Playgroud)
任务纸上的突出显示文件适用于前两个,但不适用于后两个.作为一个解决方法的黑客,我尝试了上面的最后一个案例:
syn region multLineDoneItem start="{" end="}" fold
HiLink multLineDoneItem NonText
Run Code Online (Sandbox Code Playgroud)
但现在,我被迫用大括号标记多行完成项目,如下所示:
- {Multi-line completed item. This item continues
on to the line below. (workaround works).}
Run Code Online (Sandbox Code Playgroud)
我已经搜索过stackexchange和其他地方了.我将不胜感激任何帮助!:)
我不知道如何描述这个问题,但是当在终端vim中使用曝光的colorscheme主题时,我注意到当我编辑一些文本的各个行的末尾(不是"行结尾"但是从最后一个字母到缓冲区的结尾)将略微突出显示.一旦我移动,例如使用<C-e>,或者<C-y>,奇怪的突出显示自我修复并成为背景颜色.
理想情况下,我想解决这个问题,让我的背景始终是背景颜色.但是,任何有关正在发生/正在突出显示的内容的见解都将受到高度赞赏.
谢谢,
刚编辑完文本后
按下后 <C-e>

vim terminal color-scheme syntax-highlighting vim-syntax-highlighting
我不时会在当前缓冲区上应用一些自定义的额外语法高亮显示.
如何使用vim语法/高亮系统中的构建来完成(我不想使用Highlight插件)
例如,我想强调当前缓冲区中的所有断言语句.
我有一些由冒号分隔的数据,如下所示:
foo:bar:baz:qux
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想使用正则表达式来匹配最后一个元素qux.该列表可以是任何长度,如果它是一个元素长,则根本没有冒号.
我已经尝试过使用vim的零宽度匹配结构,但我似乎无法让它做我想要的.
我想显示'␣'而不是非破坏空格,因为默认情况下它们是不可见的,并将以下行添加到我的vimrc:
syntax match nonbreaking "\%xa0" conceal cchar=?
set conceallevel=1
highlight nonbreaking ctermbg=NONE guibg=NONE
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但它也为所有出现的不间断空格添加了背景颜色 - 即使是使用以下{cterm,gui}bg=NONE行:

有没有办法在"␣"后面"隐藏"U + 00ad而不影响它的突出显示方式?
因此,无论出于何种原因,每当我打开HTML或CSS文件时,Vim语法高亮显示似乎都不起作用.在html文件中,所有显示的都是读括号.在css文件中,颜色非常少.但是,如果我syntax on显式运行该命令,则语法突出显示开始起作用.我已经检查了我的〜/ .vimrc并且syntax on在那里.所有其他文件类型都可以正常工作.我完全不知道是什么导致了这个问题.以下是一些截图:
之前:

后:

另外,这是我的vimrc:
" ----------------------------------------------------------------------
" Vim package manager
" ----------------------------------------------------------------------
call plug#begin('~/.vim/bundle')
" ----------------------------------------------------------------------
" My Plugins
" ----------------------------------------------------------------------
" Unite.vim
Plug 'Shougo/vimproc.vim', {'do': 'make'}
Plug 'Shougo/neomru.vim'
Plug 'Shougo/unite.vim'
" Improves editing efficiency.
Plug 'SirVer/ultisnips'
Plug 'scrooloose/syntastic'
Plug 'Valloric/YouCompleteMe', {'do': './install.sh --clang-completer'}
Plug 'tpope/vim-surround'
Plug 'godlygeek/tabular'
Plug 'jiangmiao/auto-pairs'
Plug 'tomtom/tcomment_vim'
Plug 'mileszs/ack.vim'
Plug 'henrik/vim-qargs'
Plug 'nelstrom/vim-visual-star-search'
Plug 'marijnh/tern_for_vim', {'do': 'npm install'}
Plug 'mattn/emmet-vim'
" Does stuff for …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个VimL片段,以允许用户使用热键切换不需要的尾随空格的高亮显示.(这是我有史以来的第一个Vim脚本,除了将东西复制粘贴到我的内容之外.vimrc,所以...一粒盐:P)
我希望'我们目前正在追踪空白吗?' 是缓冲特定的状态; 但我在弄清楚自动命令如何与缓冲区交互时遇到了很多麻烦.
例如,这是我augroup对缓冲区本地 autocmd s的第一次尝试:
augroup ExtraWhitespace
au!
au BufEnter <buffer=abuf> match ExtraWhitespace /\s\+$/
au InsertEnter <buffer=abuf> match ExtraWhitespace /\s\+\%#\@<!$/
au InsertLeave <buffer=abuf> match ExtraWhiteSpace /\s\+$/
augroup END
Run Code Online (Sandbox Code Playgroud)
...不幸的是,这在调用时会立即绊倒:
Error detected while processing function ToggleExtraWhitespace:
line 19:
E680: <buffer=0>: invalid buffer number
line 20:
E680: <buffer=0>: invalid buffer number
line 21:
E680: <buffer=0>: invalid buffer number
No matching autocommands
Run Code Online (Sandbox Code Playgroud)
我不明白,为什么<abuf>是0,当bufnr('%')为1 …
最近,我使用这个脚本使用base16配色方案配置了我的shell:https://github.com/chriskempson/base16-shell/blob/master/scripts/base16-default-dark.sh.和Neovim的配色方案使用:https://github.com/chriskempson/base16-vim.
然后我在".vimrc"中设置了以下内容.config/init/init.vim:
call plug#begin('~/.local/share/nvim/plugged')
Plug 'chriskempson/base16-vim'
...
set background=dark
let base16colorspace=256
colorscheme base16-default-dark
Run Code Online (Sandbox Code Playgroud)
一切都工作得很好摘录我不能改变LineNumber列颜色,但这是另一个故事:
我意识到当我切换到VT(tty)时,我的颜色在Neovim中真的搞砸了.我看到VT或($ TERM = linux)仅支持8/16种颜色,而当我在$ TERM = screen/tmux/st(-256color)下时则不支持.因此,这些base16-shell方案根据$ TERM以不同的方式应用颜色.所以问题是如何强迫Neovim(或颜色方案本身)意识到如何应用VT和X终端下的颜色?