Chinaunix首页 | 论坛 | 博客
  • 博客访问: 214632
  • 博文数量: 42
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-09 10:55
个人简介

每天改变一点点,生活充满了惊喜。

文章分类

全部博文(42)

文章存档

2016年(8)

2015年(29)

2014年(5)

我的朋友

分类: LINUX

2015-12-08 20:44:47

可以对 Vim 进行定制,使其按照你想要的方式工作。

动态设置

即在命令行模式下通过 set 命令来修改已有设置。如:
: set ignorecase
关闭此项功能,可以再设置项的名字前加“no”
: set noignorecase

如果在bool类型的配置项后加上“!”,可以反转设置:
: set ignorecase!
如果加上“?”,可以获取当前配置项值:
: set ignorecase?
如果加上“&”,可以重置配置项为默认值:
: set ignorecase&

VIM 大多数选项都有简写形式,如’ignorecase‘可简写为ic。一般情况下,动态定制VIM,用简写,快速,而配置vimrc文件使用全称,更具可读性。
VIM 配置项通常全局生效,可以设置仅对一个窗口或缓冲区有效。如:
: setlocal tabstop=4  "只对当前活动的缓冲区有效
: bufdo 
setlocal tabstop=4 "对当前窗口的所有缓冲区有效
: windo setlocal nu "对所有的窗口有效

配置.vimrc
Vim启动时,会检查vimrc文件是否存在,存在时会自动加载其内容。所以我们可以在vimrc文件中定制属于自己的编辑习惯。
在Vim快速打开vimrc文件:
:edit $MYVIMRC

快速重新加载:
:source $MYVIMRC 或 :so %

最后贴一个我经常使用的vimrc,也是来之于很多地方,然后经过实践,比较符合我自己的需求。
大家可以作为参考,逐步能形成自己的编辑习惯。
  1. " general set {
  2.     " format {
  3.         set number
  4.         set showmatch
  5.         set guifont=Monaco\ 12
  6.     "}
  7.     " display {
  8.         " character which a word can include
  9.         set iskeyword+=_,$,@,%,#,-
  10.         "显示光标行列信息(右下角)
  11.         set ruler
  12.         " 不在单词中间折行
  13.         set lbr
  14.     "}
  15.     " control {
  16.         " 设置vim不兼容vi, 也可以 set nocp
  17.         set nocompatible
  18.         set history=200
  19.         "终端控制鼠标,复制需同时按下shift键,好处是鼠标可以操作vim界面
  20.         set mouse=a
  21.         set selection=exclusive
  22.         set selectmode=mouse,key
  23.         "缺省八进制,会影响操作的结果,设置为十进制
  24.         set nrformats=
  25.         "设置退出之后内容显示在终端屏幕
  26.         set t_ti= t_te=
  27.         " 离开插入模式后自动关闭预览窗口
  28.         autocmd InsertLeave * if pumvisible() == 0|pclose|endif
  29.     "}
  30.     " warning {
  31.         " noeb stand for noerrorbells
  32.         "set noerrorbells
  33.         " 出错的时候不提示告警铃声,而是屏幕的闪烁
  34.         set vb
  35.         " 去掉闪烁:set vb t_vb=,此时与设置 noeb 效果一样
  36.     "}
  37. "}

  38. " color, backgroud etc.{
  39.     set background=dark
  40.     set t_Co=256
  41.     colorscheme solarized
  42. "}

  43. " character encoding {
  44.     "设置文件的编码,中文不采用utf8编码时,会有乱码的情况
  45.     "set encoding=utf-8
  46.     set fileencodings=utf-8,cp936,gbk,latin1,ucs-bom
  47.     set termencoding=utf-8
  48.     if has("win32")
  49.         set fileencoding=chinese
  50.     else
  51.         set fileencoding=utf-8
  52.     endif
  53.     source $VIMRUNTIME/delmenu.vim
  54.     source $VIMRUNTIME/menu.vim
  55.     language messages zh_CN.utf-8
  56.     set helplang=cn
  57. "}

  58. " file {
  59.     " file edit {
  60.         " 在处理未保存或只读文件的时候,弹出确认
  61.         set confirm
  62.         set nobackup
  63.         "set noswapfile
  64.         "set clipboard+=unnamed
  65.     "}
  66.     " file type {
  67.         set fileformat=unix
  68.         " 打开文件类型检测 根据文件类型,为其设置不同的补全函数
  69.         filetype plugin indent on
  70.         filetype on
  71.     "}
  72. "}

  73. " search {
  74.     set hlsearch
  75.     set incsearch
  76.     " 当搜索的时候尝试smart
  77.     set smartcase
  78. "}

  79. " code {
  80.     syntax enable
  81.     syntax on
  82.     "智能选择对齐方式
  83.     set smartindent
  84.     au FileType html setl shiftwidth=2
  85.     au FileType html setl tabstop=2
  86.     au FileType java,php,python,vim,javascript setl shiftwidth=4
  87.     au FileType java,php,python,vim,javascript setl tabstop=4
  88.     " 设置代码折叠
  89.     set foldenable
  90. "}

  91. " command {
  92.     " 命令补全列表展示方式
  93.     set wildmode=longest,list
  94.     "set wildmenu
  95.     "set wildmode=full
  96.     " The commandbar is 1 high
  97.     set cmdheight=1
  98.     " 右下角显示一个完整的命令已经完成的部分
  99.     set showcmd
  100. "}

  101. " map {
  102.     let mapleader = ","
  103. "}

  104. " buffer {
  105.     nnoremap [ :bprev<CR>
  106.     nnoremap ] :bnext<CR>
  107. "}
  108. " table {
  109.     map <leader>tn :tabnew<cr>
  110.     map <leader>to :tabonly<cr>
  111.     map <leader>tc :tabclose<cr>
  112.     map <leader>tm :tabmove
  113.     " Opens a new tab with the current buffer's path
  114.     " Super useful when editing files in the same directory
  115.     map <leader>te :tabedit <c-r>=expand("%:p:h")<cr>/
  116. "}

  117. "edit {
  118.     " < 和 > 命令的移动距离
  119.     set shiftwidth=4
  120.     " tab转换为4个空格
  121.     set tabstop=4
  122.     " 按退格键时可以一次删除4个空格
  123.     set softtabstop=4 expandtab
  124. "}

  125. " .vimrc {
  126.     " when .vimrc is edited, reload it
  127.      bufwritepost .vimrc source ~/.vimrc
  128.     " Quickly edit/reload the vimrc file
  129.     nmap ev :e $MYVIMRC
  130.     nmap sv :so $MYVIMRC
  131. "}

  132. " vudle {
  133.     set rtp+=~/.vim/bundle/vundle/
  134.     call vundle#rc()
  135.     Bundle 'gmarik/vundle' 
  136.     Bundle 'vim-airline'
  137.     Bundle 'ctrlp.vim'
  138.     Bundle 'syntastic'
  139.     Bundle 'rainbow_parentheses.vim'
  140.     Bundle 'vim-unimpaired'
  141.     Bundle 'nerdtree'
  142.     Bundle 'indentLine'
  143.     Bundle 'ack.vim'
  144.     Bundle 'YouCompleteMe'
  145.     Bundle 'ctrlsf.vim'
  146. "}
文件的最后部分是加载了一些Vim的常用插件,它们实际上也有一些自己的配置,这一部分在《Vim:开发必备插件》中讲述。
还可以为特定类型的文件应用个性化的设置,在Vim:For PHP中,将为php文件做一些特殊定制,以便高效开发php代码。

参考:

1.《Vim 实用技巧》《Practical Vim - Edit Text at the Speed of Thought》
阅读(2300) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~