当 vim 打开没有扩展名的文件时,我想禁用某些设置(例如行号)。
我的 .vimrc 中有set number
这个设置,我知道我可以禁用此功能,例如针对 markdown 文件,方法是使用
autocmd filetype markdown setlocal nonumber
但是,没有扩展名的文件的文件类型是什么?或者可以用完全不同的方法来实现?
答案1
autocmd BufNewFile,BufRead * if expand('%:t') !~ '\.' | set nonumber | endif
expand('%:t')
将获取不带完整路径的文件名。然后!~ '\.'
检查文件名中是否不包含点。
答案2
您不需要匹配文件类型,您可以直接匹配BufRead
和BufNewFile
自动命令中的文件名。注意我不知道您是否可以轻松匹配“无点”,但这应该可行:
set nonu
au BufNewFile,BufRead *.* setl nu
(这也是您将文件类型分配给无法自动正确检测的不寻常扩展名的方式。)
答案3
set number
augroup noextension
autocmd!
autocmd BufNewFile,BufRead * call NoExtension()
augroup END
function! NoExtension()
if !expand('%:e') && !&filetype
setlocal nonumber
endif
endfunction
- 自动命令会针对任何“文件”触发,
expand('%:e')
返回扩展名,因此!expand(%:e)
当没有扩展名时为真,- 类似地,
!&filetype
当没有设置文件类型时也是如此, - 如果两者都正确,那么我们可以相对确信这是我们感兴趣的文件类型,然后继续。