使用了总计8个小时,阅读他人配置,理解,筛选,修改,最后形成了自己的配置
"""""新文件标题 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "新建.c,.h,.sh,.java文件,自动插入文件头 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" ""定义函数SetTitle,自动插入文件头 func SetTitle() "如果文件类型为.sh文件 if &filetype == ‘sh‘ call setline(1,"\#########################################################################") call append(line("."), "\# File Name: ".expand("%")) call append(line(".")+1, "\# Author: zh") call append(line(".")+2, "\# mail: [email protected]") call append(line(".")+3, "\# Created Time: ".strftime("%c")) call append(line(".")+4, "\#########################################################################") call append(line(".")+5, "\#!/bin/bash") call append(line(".")+6, "") else call setline(1, "/*************************************************************************") call append(line("."), " > File Name: ".expand("%")) call append(line(".")+1, " > Author: zh") call append(line(".")+2, " > Mail: [email protected] ") call append(line(".")+3, " > Created Time: ".strftime("%c")) call append(line(".")+4, " ************************************************************************/") call append(line(".")+5, "") endif if &filetype == ‘cpp‘ call append(line(".")+6, "#include<iostream>") call append(line(".")+7, "using namespace std;") call append(line(".")+8, "") endif if &filetype == ‘c‘ call append(line(".")+6, "#include<stdio.h>") call append(line(".")+7,"int main(void)") call append(line(".")+8,"{") call append(line(".")+9, " return 0;") call append(line(".")+10,"}") endif " if &filetype == ‘java‘ " call append(line(".")+6,"public class ".expand("%")) " call append(line(".")+7,"") " endif "新建文件后,自动定位到文件末尾 autocmd BufNewFile * normal G endfunc """""""""""""""""""""""""""""""""""""""""""""""""""""""""" "”“”“”“”“”“”“”“”键盘命令""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""" nmap <leader>w :w!<cr> nmap <leader>f :find<cr> " 映射全选+复制 ctrl+a map <C-A> ggVGY map! <C-A> <Esc>ggVGY ""自己想试一下的保存 ""map <C-s> :w<CR> "map <F12> gg=G 到文首 " 选中状态下 Ctrl+c 复制 vmap <C-c> "+y "去空行 nnoremap <C-F2> :g/^\s*$/d<CR> "比较文件 ,删除文件中的空行,但一把不用 nnoremap <F2> :vert diffsplit "新建标签 map <M-F2> :tabnew<CR> "列出当前目录文件 map <F3> :tabnew .<CR> "打开树状文件目录,算是有用把,主要针对标签页操作 map <C-F3> \be "C,C++ 按F5编译运行 map <F5> :call CompileRunGcc()<CR> func! CompileRunGcc() exec "w" if &filetype == ‘c‘ exec "!gcc -g % -o %<" exec "! ./%<" elseif &filetype == ‘cpp‘ exec "!g++ % -o %<" exec "! ./%<" elseif &filetype == ‘java‘ exec "!javac %" exec "!java %<" elseif &filetype == ‘sh‘ :!./% elseif &filetype == ‘py‘ exec "!python %" exec "!python %<" endif endfunc "C,C++的调试 map <F8> :call Rungdb()<CR> func! Rungdb() exec "w" exec "!g++ % -g -o %<" exec "!gdb ./%<" endfunc "建立基本c框架 """""""""""""""""""""""""""""""实用设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set nobackup "永不备份 set magic ""set guioptions-=T " 隐藏工具栏 " 不要使用vi的键盘模式,而是vim自己的 set nocompatible " 去掉输入错误的提示声音 set noeb " 在处理未保存或只读文件的时候,弹出确认,有用 set confirm " 自动缩进 ""set autoindent "autoindent 就是自动缩进的意思,当你在输入状态用回车键插入一个新行,或 "者在 normal 状态用 o 或者 O 插入一个新行时,autoindent 会自动地将当前行的缩进拷贝到新行,也就是"自动对齐”, "当然了,如果你在新行没有输入任何字符,那么这个缩进将自动删除。 ""set cindent "cindent 就不同了,它会按照 C 语言的语法,自动地调整缩进的长度, "比如,当你输入了半条语句然后回车时,缩进会自动增加一个 TABSTOP 值, "当你键入了一个右花括号时,会自动减少一个 TABSTOP 值。i " 为C程序提供自动缩进 set smartindent "smartindent 在这种缩进模式中,每一行都和前一行有相同的 "缩进量,同时这种缩进形式能正确的识别出花括号,当遇到右花括号(}), "则取消缩进形式。此外还增加了识别C语言关键字的功能。 "如果一行是以#开头的,那么这种格式将会被特殊对待而不采用缩进格式。 " Tab键的宽度 " 上面的三个模式已经哪一个都是可以的,开一个就够了 set tabstop=4 " 统一缩进为4 set softtabstop=4 set shiftwidth=4 " 不要用空格代替制表符 set noexpandtab " 在行和段开始处使用制表符 set smarttab " 历史记录数 set history=1000 "禁止生成临时文件 set nobackup set noswapfile syntax enable colorscheme koehler "设置主题 "显示相关 "设置字体 set guifont=Bitstream_Vera_Sans_Mono:h10:cANSI """"""""""""""""""""""""""""""""""""""""""""""""""""""""" " a)0 O o 1 l ; : " 区别非常明显,并且还有一点优势是大家经常会忘记的;:和中文的字体; " :区别也很明显,十分适合编程 " b)字体圆滑,支持cleartype,加上配色非常舒服,不会有锯齿感 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set shortmess=atI "不启动乌干达儿童救助i "winpos 20 20 "设置窗口位 set number syntax on "语法高亮 autocmd InsertLeave * se cul "在编辑模式下用浅色高亮显示当前行 "set ruler "显示标尺 暂时不知道用途 set showcmd "输入命令显示出来,不知道作用 set novisualbell " 不要闪烁(不明白) set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "状态行显示的内容 set laststatus=2 " 启动显示状态行(1),总是显示状态行(2) set cmdheight=1 " 命令行(在状态行下)的高度,默认为1,设置成一好看,自己暂时用不了一行以上的命令行 set foldenable " 允许折叠 set fdm=marker set foldcolumn=0 set foldlevel=3 "关于折叠的一些设置,但看不懂 "set background=dark "背景使用黑色 set nocompatible "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限 " 显示中文帮助 if version >= 603 set helplang=cn set encoding=utf-8 endif "字体 if (has("gui_running")) set guifont=Bitstream\ Vera\ Sans\ Mono\ 10 endif "自动补全 :inoremap ( ()<ESC>i :inoremap ) <c-r>=ClosePair(‘)‘)<CR> ":inoremap { {<CR>}<ESC>O ":inoremap } <c-r>=ClosePair(‘}‘)<CR> :inoremap [ []<ESC>i :inoremap ] <c-r>=ClosePair(‘]‘)<CR> :inoremap " ""<ESC>i :inoremap ‘ ‘‘<ESC>i function! ClosePair(char) if getline(‘.‘)[col(‘.‘) - 1] == a:char return "\<Right>" else return a:char endif endfunction filetype plugin indent on "打开文件类型检测, 加了这句才可以用智能补全 ""set completeopt=longest,menu "关掉只能补全时的预览窗口 " 侦测文件类型 filetype on " 载入文件类型插件 filetype plugin on " 为特定文件类型载入相关缩进文件 filetype indent on "搜索逐字符高亮 set hlsearch "搜索忽略大小写 "set ignorecase " 使回格键(backspace)正常处理indent, eol, start等,解决了退格键无效了问题 set backspace=2 " 光标移动到buffer的顶部和底部时保持3行距离,再往下移动页面时,光标与最后一行始终保持4格的距离 set scrolloff=4 " 高亮显示匹配的括号,匹配括号的作用 set showmatch " 匹配括号高亮的时间(单位是十分之一秒),不知道是干啥的,就保留默认 set matchtime=1 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) set mouse=a set selection=exclusive set selectmode=mouse,key " 增强模式中的命令行自动完成操作,看不懂,用下面的那个 "在命令模式下使用 Tab 自动补全的时候,"将补全内容使用一个漂亮的单行菜单形式显示出来 set wildmenu " 带有如下符号的单词不要被换行分割,iskeywordy用于定义一个单词是有什么构成的,而下面的语句是讲_,$...等符号算进构成单词的符号 set iskeyword+=_,$,@,%,#,- "" 允许backspace和光标键跨越行边界,虽然高明白了,但好像有什么东西已经实现了该设置 "set whichwrap+=<,>,h,l " 高亮显示普通txt文件(需要txt.vim脚本) au BufRead,BufNewFile * setfiletype txt """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "敲入字符时搜索 set incsearch ""行内替换, 替换时所有的行内匹配都被替换,而不是只有第一个" set gdefault" ""编码设置 set enc=utf-8 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 "" encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。默认是根据你的locale选择.用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在.vimrc 中改变它的值才有意义。你可以用另外一种编码来编辑和保存文件,如你的vim的encoding为utf-8,所编辑的文件采用cp936编码,vim会自动将读入的文件转成utf-8(vim的能读懂的方式),而当你写入文件时,又会自动转回成cp936(文件的保存编码). " fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。 "" fileencodings: Vim自动探测fileencoding的顺序列表, 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。 "" termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。如果vim所在的term与vim编码相同,则无需设置。如其不然,你可以用vim的termencoding选项将自动转换成term的编码.这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。 ""好了,解释完了这一堆容易让新手犯糊涂的参数,我们来看看 Vim 的多字符编码方式支持是如何工作的。 ""1. Vim 启动,根据 .vimrc 中设置的 encoding 的值来设置 buffer、菜单文本、消息文的字符编码方式。 ""2. 读取需要编辑的文件,根据 fileencodings 中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding 为探测到的,看起来是正确的 (注1) 字符编码方式。 ""3. 对比 fileencoding 和 encoding 的值,若不同则调用 iconv 将文件内容转换为encoding 所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的 buffer 里,此时我们就可以开始编辑这个文件了。注意,完成这一步动作需要调用外部的 iconv.dll(注2),你需要保证这个文件存在于 $VIMRUNTIME 或者其他列在 PATH 环境变量中的目录里。 ""4. 编辑完成后保存文件时,再次对比 fileencoding 和 encoding 的值。若不同,再次调用 iconv 将即将保存的 buffer 中的文本转换为 fileencoding 所描述的字符编码方式,并保存到指定的文件中。同样,这需要调用 iconv.dll由于 Unicode 能够包含几乎所有的语言的字符,而且 Unicode 的 UTF-8 编码方式又是非常具有性价比的编码方式 (空间消耗比 UCS-2 小),因此建议 encoding 的值设置为utf-8。这么做的另一个理由是 encoding 设置为 utf-8 时,Vim 自动探测文件的编码方式会更准确 (或许这个理由才是主要的 ;)。我们在中文 Windows 里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为 GB2312/GBK 比较合适,因此 fileencoding 建议设置为 chinese (chinese 是个别名,在 Unix 里表示 gb2312,在 Windows 里表示cp936,也就是 GBK 的代码页)。 ""语言设置,使用中文菜单, 并使用 UTF-8 编码。 如果没有这句的话, 在非 UTF-8的系统, 如 Windows 下, 用了 UTF-8 的 encoding 后菜单会乱码。 set langmenu=zh_CN.UTF-8 " "" 保存全局变量 set viminfo+=! "" 字符间插入的像素行数目,不知作用 set linespace=0 " "" 通过使用: commands命令,告诉我们文件的哪一行被改变过,不知所以然 set report=0 "" 在被分割的窗口间显示空白,便于阅读,不知所以然 set fillchars=vert:\ ,stl:\ ,stlnc:"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "NERDtee设定 文件管理器插件—NerdTree,没有安装,所以用不上 ""let NERDChristmasTree=1 ""let NERDTreeAutoCenter=1 ""let NERDTreeBookmarksFile=$VIM.‘\Data\NerdBookmarks.txt‘ ""let NERDTreeMouseMode=2 ""let NERDTreeShowBookmarks=1 ""let NERDTreeShowFiles=1 ""let NERDTreeShowHidden=1 ""let NERDTreeShowLineNumbers=1 ""let NERDTreeWinPos=‘left‘ ""let NERDTreeWinSize=31 ""nnoremap f :NERDTreeToggle ""map <F7> :NERDTree<CR> """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""插件设置""""""""""""""""""""""""‘‘‘‘"""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""‘
相关链接
3.Vim命令合集
6.vim技巧: iskeyword 与 单词间移动光标的设置
7.指尖上的博客
8.vim笔记
时间: 2024-10-10 15:29:26