Hi Benjamin! On Sa, 17 Mär 2012, Benjamin R. Haskell wrote:
> On Sat, 17 Mar 2012, Christian Brabandt wrote: > > >Hi Tim! > > > >On Sa, 17 Mär 2012, Tim Chase wrote: > > > >>On 03/17/12 13:12, [email protected] wrote: > >>>On Sun, Mar 18, 2012 at 1:27 AM, Tim Chase<[email protected]> wrote: > >>>> :autocmd BufWrite * > >>>> %s/\c\<\(select\|insert\|update\|create\|where\|from\|**like\|group\_s\+by\|order\_s\+by\|having\)\>/\U&/g > >>>> > >>>>Adjust for whatever SQL keywords you want to include. > >>> > >>>There is a syntax file in vim which is sqlanywhere.vim, it > >>>will highlight a lot of keyword. So the smart way is to make > >>>uppercase for all of those keywords. > >> > >>yes, there are a lot of SQL keywords, and optionally functions > >>if you want to highlight those. It would be handy to have > >>something like > >> > >> :autocmd BufWrite * exec '%s/\c\<\('.join(synkeywords('sqlKeyword'), > >> '\|').'\)\>/\U&/g' > >> > >>but I don't know of any "synkeywords()" sort of function. > > > >:%s/\<\w\+\>/\=synIDattr(synID(line('.'),col('.'),1), > >'name')=~'sql\%(keyword\|operator\|statement\)'?toupper(submatch(0)):submatch(0)/g > > Wow. Really nice. > > Part of the reason I kept running with my SynKeywords() function was > that I didn't see a way around the fact that synID required a > position as input. Yes. The good thing is when using the :s command, vim positions the cursor on the match, so one can successfully make use of the line('.') and col('.') functions. > The only things I can add to this are: > > 1. you should use =~? instead of =~ (since it's 'sqlKeyword', and =~ > depends on the value of 'ignorecase'). > > 2. (as mentioned in the other thread) use '/ge' instead of '/g' Yes you are right. Thanks for the clarification. Mit freundlichen Grüßen Christian -- Wer so tut, als bringe er die Menschen zum Nachdenken, den lieben sie. Wer sie wirklich zum Nachdenken bringt, den hassen sie. -- Aldous Huxley -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php
