我有一种可以在其中嵌入C,python,ruby等的多语言文件类型(如果有帮助,请考虑“ wiki页面”)。有没有一种方法可以对文件区域中的已知文件类型执行自动命令?
例如,我可能有:
#!bash
if [ a = b ]; then
echo 'equal'
fi
#!python
if a = b:
print('equal')
我想将bash文件类型自动命令应用于第一部分,并将python文件类型自动命令应用于后半部分。
通过使用此方法定义区域,我只能得到语法提示,但是我对自动命令的理解不够,无法以类似的方式应用它们。
自动执行此操作具有挑战性,因为文件类型设置是本地缓冲区。Vim没有区域的概念,因此:autocmds
需要正确使用。
使用类似Emacs的NrrwRgn-A Narrow Region Plugin之类的插件,您可以克隆区域以分隔暂存缓冲区。插件会自动将其同步回写状态。可以通过为每个缓冲区指定单独的文件类型:setf
。
甚至更简单的方法是定义一些映射以快速切换文件类型:
:nnoremap <Leader>fp :setf python<CR>
:nnoremap <Leader>fs :setf sh<CR>
这个草图很简单:
:autocmd CursorMoved,CursorMovedI <buffer> if line('.') >= 6 | setf python | else | setf sh | endif
这依赖于每个文件类型插件进行适当的清理(或覆盖所有相关选项)。
您当然不希望像上面的草图中那样显式指定行号。如果您拥有/可以为每个块定义适当的语法区域,那么我的OnSyntaxChange插件可能会有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句