Pet*_*ton 29 vim syntax-highlighting vim-syntax-highlighting
当我打开用vim一些bash脚本文件,它有时它们标识为conf
文件,那也没关系,我可以正确的,在文件类型设置为sh
使用:setf sh
.
那太好了,除了我注意到这并不完全解决问题:
请注意,shopt
左侧正确突出显示,但右侧未正确突出显示,我手动将文件类型设置为sh
.
这意味着,当一个文件被标识为bash
或sh
通过VIM,它设置文件类型为sh
后来做了一些额外的步骤,当我手动设置文件类型我不这样做.
任何人都知道那可能是什么,以及我如何解决它?
rai*_*mue 31
vim默认识别了很多文件类型.他们中的大多数都通过文件扩展名工作,但在这种情况下,vim还会分析文件的内容以猜测正确的类型.
VIM将像特定文件名的文件类型.bashrc
,.tcshrc
自动等.但是具有.sh
扩展名的文件将被识别为csh,ksh或bash脚本.要确定这是什么类型的脚本,vim会读取文件的第一行来查看#!线.
如果第一行包含单词bash
,则将该文件标识为bash脚本.通常您会看到#!/bin/bash
脚本是否要直接执行,对于其他一些shell配置文件,您应该使用文件扩展名.bash
.
vim的帮助解释了这一点:help ft-bash-syntax
.您还可以let g:is_bash=1
在.vimrc中使用bash语法突出显示所有文件的默认值filetype=sh
.如果您想查看详细信息,请执行此操作$VIMRUNTIME/filetype.vim
.
事实证明,syntax/sh.vim
包括Korn,Bash和sh的特定突出显示,你只需告诉它你正在使用它.这与做b:is_kornshell
,b:is_bash
和b:is_sh
分别.
根据具体情况,我将使用以下内容:
au BufRead,BufNewFile *bash* let g:is_bash=1
au BufRead,BufNewFile *bash* setf sh
Run Code Online (Sandbox Code Playgroud)
# vim:let g:is_bash=1:set filetype=sh:
Run Code Online (Sandbox Code Playgroud)
nmap <silent> <leader>b :let g:is_bash=1<cr> :setf sh<cr>
Run Code Online (Sandbox Code Playgroud)