【发布时间】:2016-03-08 13:30:53
【问题描述】:
我试图在 Vim 中突出显示 Python 三引号字符串中的 SQL 查询。使用这个question 我有一个pysql.vim 文件,其中包含:
if exists('b:current_syntax')
finish
endif
" Load Python syntax at the top level
runtime! syntax/python.vim
unlet b:current_syntax
" Load SQL syntax
syn include @SQL syntax/sql.vim
syntax region sqlSnippet start=/\zs\v(SELECT|FROM|AND|WHERE|OR|ON|GROUP BY|ORDER BY)/ end=/\ze'''/ contains=@SQL containedin=pythonString
let b:current_syntax = 'pysql'
但是,当我在以下 foo.py 文件中运行 set syntax=pysql 时
def get_first_events_after_install(application_id, os, event_id,
year_start, month_start, day_start,
year_end, month_end, day_end,
perform=False):
query = \
'''SELECT event_id, counter, name FROM
(
-- This selects event_ids and counts number of occurrences for a
-- specific in a specific time frame
SELECT event_id, COUNT(1) as counter FROM fault.all_events_monthly
WHERE month_partition
BETWEEN '201511' AND '201601'
AND app_partition IN (434)
AND ref_type_partition IN ('apple_ifa')
GROUP by event_id
) t_counter
INNER JOIN
(
-- This selects events names and along event_id
SELECT id, name from mysql.ruby.events
) t_name
ON t_counter.event_id = t_name.id
ORDER BY counter DESC'''.\
format(month_part=month_partitions, os_part=os_partitions,
ys=year_start, ms=month_start, ds=day_start,
ye=year_end, me=month_end, de=day_end, app_id=application_id,
ev_id=event_id)
字符串查询前后的代码也以 SQl 突出显示(您可以在下图中看到)。所以我的问题是:如何仅在三(或三双)引号字符串中突出显示 SQL 代码?提前致谢。
【问题讨论】:
-
Vi and Vim Stack Exchange 获得答案的机会可能会更大。