FreeBSD下Vim的语法高亮与自动补全

FreeBSD下Vim的语法高亮与自动补全

vim 是与 emacs 齐名的超级编辑器(二者的使用哲学不同,没有高低贵贱之分)。我喜欢将 /usr/local/share/vim/vim73/colors/torte.vim 中的 ctermbg 设置为 NONE,这样 vim 就使用桌面背景显得“透明”(当然,这是假透明)。

vim 的功能十分强大,语法高亮和命令的自动补全更是不在话下。下面,我们逐一介绍它们。我们所用的 vim 版本在 7.0 以上。

语法高亮

下面,以矩阵计算工具 octave 和符号计算工具 maxima 为例,说明如何使编程语言在 vim 中语法高亮。

Octave 在 vim 中的语法高亮

我们怎么设置才能使得 vim 在编辑 foo.m 和 foo.oct 文件时做到语法高亮呢? 首先,找到文件 filetype.vim,打开它,看看后缀为 .m 和 .oct 是否被其他程序占用。 在我的 FreeBSD 中,.m 的后缀果真被 matlab 占用。matlab 没有 BSD 版本,我的机器上也没装 matlab 的 linux 版,所以干脆就把文件 filetype.vim 中的 matlab 替换为 octave。特别地,把 “*.oct” 加到 “*.m” 之后

" Octave or Objective C
au BufNewFile,BufRead *.m,*.oct         call s:FTm()

func! s:FTm()
  let n = 1
  while n < 10
    let line = getline(n)
    if line =~ ‘^\s*\(#\s*\(include\|import\)\>\|/\*\)’
      setf objc
      return
    endif
    if line =~ ‘^\s*%’
      setf octave
      return
    endif
    if line =~ ‘^\s*(\*’
      setf mma
      return
    endif
    let n = n + 1
  endwhile
  if exists("g:filetype_m")
    exe "setf " . g:filetype_m
  else
    setf octave
  endif
endfunc

把文件 octave.vim 拷贝到 syntax/matlab.vim 所在的目录。

maxima 在 vim 中的语法高亮

我希望所有后缀为 .mxm 的文件都被当做maxima文件语法高亮。

首先确保 maxima.vim 文件存在于 /usr/local/share/vim/vim72/syntax 目录下。编辑文件/usr/local/share/vim/vim72/filetype.vim,加入语句

" Maxima
au BufNewFile,BufRead *.mxm         setf maxima

命令的自动补全

到/usr/local/share/vim/vim72/autoload/目录下,看系统为哪些环境提供了命令的自动补全。也可以 locate ccomplete.vim,找到这个目录。

FreeBSD7.0下有ccomplete.vim、htmlcomplete.vim、……。然后,我们在 $HOME/.vimrc 中加入

"""""""""" 自动补全命令 """"""""""
autocmd Filetype c      set omnifunc=ccomplete#Complete
autocmd Filetype html   set omnifunc=htmlcomplete#CompleteTags
autocmd Filetype xml    set omnifunc=xmlcomplete#CompleteTags
autocmd Filetype python set omnifunc=pythoncomplete#CompleteTags
autocmd Filetype tex    set omnifunc=syntaxcomplete#Complete

.vimrc 的设置

$HOME/.vimrc 的普通设置,如下。

set nocompatible  "" not compatible with VI
set spell         "" highlight the typos
"" 在 vim 中查英文单词
nmap <C-\> : !sdcv -n <C-R>=expand("<cword>")<CR><CR>

"" Encodings and fonts
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set langmenu=zh_CN.UTF-8
language messages zh_CN.UTF-8
set guifontset=wenquanyi,-*-16-*-*-*

"" Tab and Backspace
set sw=2
set tabstop=4
set shiftwidth=4
set cindent
set smartindent
set autoindent
set backspace=indent,eol,start  "" set backspace

"" Display
set number        "" show line number
set ruler         "" always show current position
set cursorline    "" highlight the current line
set showcmd

"" Searching
set ignorecase    "" search setting
set incsearch
set hlsearch
set showmatch
set history=100
highlight Search term=reverse ctermbg=4 ctermfg=7

"" Syntax and color scheme
syntax enable
filetype plugin indent on
highlight Comment ctermfg=darkcyan
colorscheme torte

"""""""""" 自动补全命令 """"""""""
autocmd Filetype c      set omnifunc=ccomplete#Complete
autocmd Filetype html   set omnifunc=htmlcomplete#CompleteTags
autocmd Filetype xml    set omnifunc=xmlcomplete#CompleteTags
autocmd Filetype python set omnifunc=pythoncomplete#CompleteTags
autocmd Filetype tex    set omnifunc=syntaxcomplete#Complete

原文链接:http://wiki.freebsdchina.org/software/v/vim

发表评论

电子邮件地址不会被公开。 必填项已用*标注