一、引言
1. vim是一款功能强大的文本编辑器,如果使用熟练,将会有效帮助我们提高编辑文本、程序的效率。vim编辑器的上手使用门槛比较高,很多人怯于要记很多命令,往往在学习的初期阶段就望而却步。
2. vim的学习需要不断的练习、使用,只有强迫自己不断的使用,才能在使用的过程中记住那些看似复杂的命令,但是如果一旦习惯了vim的编辑模式,就会觉得vim真的会帮助我们提高文本编辑效率。
3. 关于vim学习资料,其本自带的vim帮助文档,就足够丰富,可以在学习的过程不断查阅。另外,也有一个简化的入手文档即vimtutor,在命令行输入vimtutor,便可以开始学习,大概不到一个小时就可以学习并练习完。
二、配置
1. vim的配置文件有全局配置(一般在目录/etc/vim/vimrc)和个人配置(/home/username/.vimrc)下,全局配置文件对系统所有的用户都生效,个人配置文件只对用户自的使用环境生效
2. vim的配置文件一般网上都会有别人已经设置好的配置,可以复制到自己的个人配置文件里直接使用,也可以根据需要自己定制自己的使用环境
三、配置脚本
1.在之前的使用过程中,本人参考资料根据个人需要配置了一份自己的配置脚本,其中大部分都有注释说明,可以根据需要自己配置。注:"开始的在vimrc中表示注释
set termencoding=utf8
set hlsearch
"行号set nu"语法高亮syntax on"启用鼠标set mouse=v"自动缩进"突出显示列"set cursorcolumn"突出显示当前行set cursorline"高亮显示当前行"hi CursorLine cterm=NONE ctermbg=magenta ctermfg=white guibg=darked guifg=whiteset autoindent"set guifont=Monaco:h80 " 字体 && 字号"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限set nocompatible"依据上面的对齐格式,智能的选择对起方式,对于类似C语言编写上很有用set smartindent"设置缩进set tabstop=4set softtabstop=4set shiftwidth=4"在状态栏显示正在输入的命令set showcmd"左下角显示当前vim模式set showmode" 代码折叠set foldenableset foldmethod=indentset foldlevel=99"显示标尺set ruler"打开文件类型自动检测功能filetype onset completeopt=longest,menu"启动自动补全"filetype plugin indent on"在分割的窗口间移动:nnoremap <C-h> <C-w>h:nnoremap <C-j> <C-w>j:nnoremap <C-k> <C-w>k:nnoremap <C-l> <C-w>l"当新建 .h .c .hpp .cpp 等文件时自动调用SetTitle 函数
autocmd BufNewFile *.[ch],*.php,*.cpp exec "call SetTitle()"function SetComment()call setline(1,"/*========================================================")call append(line("."), "* Copyright (C) ".strftime("%Y")." All rights reserved.")call append(line(".")+1, "* ")call append(line(".")+2, "* 文件名称:".expand("%:t"))call append(line(".")+3, "* 创 建 者:mj")call append(line(".")+4, "* 创建日期:".strftime("%Y年%m月%d日"))call append(line(".")+5, "* 描 述:")call append(line(".")+6, "*")call append(line(".")+7, "================================================================*/")endfunction"定义函数SetTitle,自动插入文件头function SetTitle()call SetComment()if expand("%:e") == 'php'call append(line(".")+8, "#ifndef _".toupper(expand("%:t:r"))."_H")call append(line(".")+9, "#define _".toupper(expand("%:t:r"))."_H")call append(line(".")+10, "#ifdef __cplusplus")call append(line(".")+11, "extern \"C\"")call append(line(".")+12, "{")call append(line(".")+13, "#endif")call append(line(".")+14, "")call append(line(".")+15, "#ifdef __cplusplus")call append(line(".")+16, "}")call append(line(".")+17, "#endif")call append(line(".")+18, "#endif //".toupper(expand("%:t:r"))."_H")elseif expand("%:e") == 'h'"call append(line(".")+8, "#pragma once")elseif &filetype == 'c'call append(line(".")+8,"#include <stdio.h>")call append(line(".")+9,"#include <stdlib.h>")call append(line(".")+10," ")call append(line(".")+11," ")call append(line(".")+12,"int main() ")call append(line(".")+13,"{")call append(line(".")+14," return EXIT_SUCCESS;")call append(line(".")+15,"}")elseif &filetype == 'cpp'"call append(line(".")+8, "#include \"".expand("%:t:r").".h\"")call append(line(".")+8, "#include <iostream>")call append(line(".")+9, "#include <string>")call append(line(".")+10,"#include <cstdlib>")call append(line(".")+11," ")call append(line(".")+12,"using namespace std;")call append(line(".")+13," ")call append(line(".")+13," ")
call append(line(".")+14,"int main() ")call append(line(".")+15,"{")call append(line(".")+16," return EXIT_SUCCESS;")call append(line(".")+17,"}")endifendfunctionautocmd BufNewFile *.sh exec "call SetBashTitle()"function SetBashTitle()call setline(1,"#!/bin/bash")endfunction"自动补全":inoremap ( ()<ESC>i":inoremap ) <c-r>=ClosePair(')')<CR>":inoremap { { }<ESC>:inoremap } <c-r>=ClosePair('}')<CR>:inoremap [ []<ESC>i:inoremap ] <c-r>=ClosePair(']')<CR>:inoremap ' ''<ESC>ifunction! ClosePair(char)if getline('.')[col('.') - 1] == a:charreturn "\<Right>"elsereturn a:charendifendfunction"设置退格键
set backspace=indent,eol,start2. vim主题配置
vim自带了很多主题设置,一般可以在/usr/share/vim/vim72/colors目录中查看当前版本的vim的颜色方案,可以在.vimrc中用colorscheme darkblue或者其主题进行vim的主题配置。
也可以按照脚本配置其不同或稍复杂的颜色方案,下面一段脚本就是根据每天的不同时间段配置vim的颜色方案
"根据时间段不同,设置vim的不同配色方案
function SetTimeOfDayColors()let currentHour = strftime("%H")let colorScheme=""if currentHour < 1 + 0let colorScheme = "blue"echo "setting colorscheme to blue"elseif currentHour < 2 + 0let colorScheme="darkblue"echo "setting colorscheme to darkblue"elseif currentHour < 3 + 0let colorScheme="default"echo "setting colorscheme to default"elseif currentHour < 4 + 0let colorScheme="delek"echo "setting colorscheme to delek"elseif currentHour < 5 + 0let colorScheme="desert"echo "setting colorscheme to desert"elseif currentHour < 6 + 0let colorScheme="elflord"echo "setting colorscheme to elflord"elseif currentHour < 7 + 0let colorScheme="evening"echo "setting colorscheme to evening"elseif currentHour < 8 + 0let colorScheme="koehler"echo "setting colorscheme to koehler"elseif currentHour < 9 + 0let colorScheme="morning"echo "setting colorscheme to morning"elseif currentHour < 10 + 0let colorScheme="murphy"echo "setting colorscheme to murphy"elseif currentHour < 11 + 0let colorScheme="pablo"echo "setting colorscheme to pablo"elseif currentHour < 12 + 0
let colorScheme="peachpuff"
echo "setting colorscheme to peachpuff"elseif currentHour < 13 + 0let colorScheme="ron"echo "setting colorscheme to ron"elseif currentHour < 14 + 0let colorScheme="shine"echo "setting colorscheme to shine"elseif currentHour < 15 + 0let colorScheme="desert"echo "setting colorscheme to desert"elseif currentHour < 16 + 0let colorScheme = "torte"echo "setting colorscheme to torte"elseif currentHour < 17 + 0let colorScheme="zellner"echo "setting colorscheme to zellner"elselet colorScheme="desert"endifexecute "colorscheme " . colorSchemeendfunctioncall SetTimeOfDayColors()