Vim

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      设置编码

"Vim的工作原理
"1、 Vim启动,根据encoding的值来设置buffer、菜单文本、消息文的字符编码方式(强烈建议将encoding设置为utf-8)
"2、 读取需要编辑的文件,根据fileencodings中列出的字符编码方式逐一探测该文件编码方式,并设置fileencoding为探测到的,看起来是正确的字符编码方式
"3、 对比fileencoding和encoding的值,若不同则调用iconv将文件内容转换为encoding所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的buffer里,此时我们就可以开始编辑这个文件了
"4、 编辑完成后保存文件时,再次对比fileencoding和encoding的值.若不同,再次调用iconv将即将保存的buffer中的文本转换为fileencoding所描述的字符编码方式,并保存到指定的文件中
"
"fileencodings  编码的自动识别,是一个用逗号分隔的复数形式列表,列表中的每一项是一种编码的名称
"当我们打开文件的时候,VIM按顺序使用fileencodings中的编码进行尝试解码,如果成功的话,就使用该编码方式进行解码,并将fileencoding设置为这个值,如果失败的话,就继续试验下一个编码
"因此,我们在设置fileencodings的时候,一定要把要求严格的,当文件不是这个编码的时候更容易出现解码失败的编码方式放在前面,把宽松的编码方式放在后面
"
"fileencoding   当前编辑的文件的字符编码方式,Vim保存文件时也会将文件保存为这种字符编码方式
"当Vim从磁盘上读取文件的时候,会对文件的编码进行探测.如果文件的编码方式和Vim的内部编码方式不同,Vim就会对编码进行转换
"转换完毕后,Vim会将fileencoding选项设置为文件的编码.当Vim存盘的时候,如果encoding和fileencoding不一样,Vim就会进行编码转换
"
"encoding   是Vim内部使用的字符编码方式,当我们设置了encoding之后,Vim内部所有的buffer、寄存器、脚本中的字符串等,全都使用这个编码
"Vim 在工作的时候,如果编码方式与它的内部编码不一致,它会先把编码转换成内部编码.如果工作用的编码中含有无法转换为内部编码的字符,在这些字符就会丢失
"
"termencoding   用于屏幕显示的编码
"在显示的时候,Vim会把内部编码转换为屏幕编码,再用于输出.内部编码中含有无法转换为屏幕编码的字符时,该字符会变成问号,但不会影响对它的编辑操作
"如果termencoding没有设置,则直接使用encoding不进行转换
    
" vim 内部 字符编码
set encoding=utf-8  

" 当前 编辑文件 编码
set fileencoding=utf-8  

" 自动 识别 编码
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 

" 屏幕 显示 编码
set termencoding=utf-8  

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      解决乱码

if has("win16") || has("win32") || has("win64") || has("win95")
  "解决菜单乱码
  source $VIMRUNTIME/delmenu.vim

  source $VIMRUNTIME/menu.vim

  "解决consle输出乱码
  language messages zh_CN.utf-8
endif

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      窗口

" 隐藏 启动时 援助索马里儿童提示
set shortmess=atI               

" 窗口大小 行=lines 列=columns
"set lines=60 columns=200           

" 隐藏 窗口上侧 工具栏
set guioptions-=T                   

" 隐藏 窗口上侧 菜单栏
set guioptions-=m                   

" 隐藏 窗口右侧 滚动条
set guioptions-=r                   

" 隐藏 窗口左侧 滚动条
set guioptions-=L                   

" 隐藏 窗口底部 滚动条
set guioptions-=b                   

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      行、列

" 显示 行号
set number          

" 不换行 
set nowrap          

" 高亮显示 当前行
set cursorline      

" 高亮显示 当前列
set cursorcolumn    

" 显示相对的行号 show relative line number
"set relativenumber 

" 光标 上下边界值 N 行时窗口自动滚动
set scrolloff=6

" 在插入模式中没有相对数字
"autocmd InsertEnter * :set norelativenumber 

" 在保持插入模式时显示相对数字
"autocmd InsertLeave * :set relativenumber   

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      命令行、状态栏

" 命令行 高度
set cmdheight=2     

" 命令行 显示 输入命令
set showcmd         

" 命令行 显示 当前模式
set showmode        

" 标尺(命令行 显示 光标位置 行号,列号)
set ruler           

" 冒号命令 历史行数
set history=50      

" 显示 当前模式
set noshowmode      

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      鼠标

" 鼠标 禁用
"set mouse-=a       

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      字体

" 设置 字体
set guifont=Consolas:h14
"set guifont=Courier_New:h14

" 防止特殊符号无法正常显示
set ambiwidth=double                

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      文本

" 退出vim后,内容显示在终端屏幕
set t_ti= t_te=             

" 选择文本时,光标所在位置也属于被选中的范围
set selection=inclusive     

set selectmode=mouse,key

" 改变终端的标题
set title                   

" 不要闪烁 " don't beep
set novisualbell            

" 不让vim发出讨厌的滴滴声
set noerrorbells            

" 去除编辑时, 命令错误发出的警告响声
set t_vb=                   

set tm=500

" 在缓冲区之间切换时保持光标位置
set nostartofline           

" 设置匹配模式,显示匹配的括号
set showmatch               

" 当匹配括号的时候,眨眼的时间是多少
set mat=2                   

" 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存(没有保存的缓冲区可以自动隐藏)
set hidden                  

set wildmode=longest:full,full

set ttyfast

" Use Unix as the standard file type
set ffs=unix,dos,mac            

" 如遇Unicode值大于255的文本,不必等到空格再折行。
set formatoptions+=m            

" 合并两行中文时,不在中间加空格(当连接行时,不要在两个多字节字符之间插入空格)
set formatoptions+=B            

"自动补全配置,让Vim的补全菜单行为与一般IDE一致
set completeopt=longest,menu    

" 增强模式中的命令行自动完成操作(自动完成命令)(自身命令行模式智能补全)
set wildmenu                    

" Ignore compiled files (tab键的自动完成现在会忽略这些 )
set wildignore=**.o,*~,.swp,*.bak,*.pyc,*.class     

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      文件

" 从不备份(文件保存时,不产生~备份文件)
set nobackup    

" 不产生交换文件(文件编辑时,不产生.swp交换文件)
set noswapfile  

" 自动重新读入(当打开文件在外部被修改,自动更新该文件)
set autoread    

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      tab键

" tab键 转为 空格
set expandtab       

" 一个 tab键 4个空格
set tabstop=4       

" 编辑模式 退格键 的 一个退回 4个空格
set softtabstop=4   

" tab键 自动缩进 宽度为 4个空格
set shiftwidth=4    
    
" 在这种缩进模式中,每一行都和前一行有相同的缩进量,同时能正确的识别出花括号,当遇到右花括号(}),则取消缩进形式
set smartindent     

" 自动缩进(对齐),每行的缩进值与上一行相等
set autoindent      

" 在行和段开始处使用制表符
set smarttab        

" 使用 < 和 > 进行缩进时 依shiftwidth 调整宽度
set shiftround      

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      backspace键

" 配置backspace 使退格键(backspace)使用此顺序; 正常处理indent, eol, start等 
set backspace=eol,start,indent      

" 允许backspace和光标键跨越行边界(不建议)
"set whichwrap+=<,>,h,l             

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      搜索

" 搜索 忽略 大小写
set ignorecase      

" 高亮显示 搜索结果
set hlsearch        

" 搜索时 直接高亮
set incsearch       

" 全是小写, 则忽略大小写, 否则不区分大小写
set smartcase       

" 文件两端时 不重新搜索
set nowrapscan      

" Remember info about open buffers on close
set viminfo^=%      

" 设置魔术(对于正则表达式,可以打开魔法)
set magic           

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"      代码折叠

" 代码折叠
set foldenable          

" 代码折叠方式: manual(手工定义折叠) indent(用缩进表示折叠) expr(用表达式来定义折叠) syntax(用语法高亮来定义折叠) diff(对没有更改的文本进行折叠) marker(用标志折叠)
set foldmethod=indent   

" 显示折叠的级别
set foldlevel=99        

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"       注释

" 文件注释
func SetFileAnnotation()
    if getline(1) != '<?php'
        call append(line('^'), "<?php")
        call append(line('^')+1, "/**")
    else
        call append(line('^')+1, "/**")
    endif
    call append(line('^')+2, " * 简述区")
    call append(line('^')+3, " *")
    call append(line('^')+4, " * 详细说明区")
    call append(line('^')+5, " *")
    call append(line('^')+6, " * @author    Alex Xun xunzhibin@jnexpert.com")
    call append(line('^')+7, " * @version   1.0")
    call append(line('^')+8, " * @copyright (C) " . strftime("%Y") . " Jnexpert Ltd. All rights reserved")
    call append(line('^')+9, " * @file      " . expand('%'))
    call append(line('^')+10, " */")
    call append(line('^')+11, "")
endfunc
"映射F2快捷键,生成后跳转至第12行,普通模式
map <F2> :call SetFileAnnotation()<CR>:12<CR>

" 类注释
func SetClassesAnnotation()
    call append(line("."), "/**")
    call append(line(".")+1, " * 功能简述区(短描述)")
    call append(line(".")+2, " *")
    call append(line(".")+3, " * 详细说明区(长描述)")
    call append(line(".")+4, " * @author Alex Xun xunzhibin@jnexpert.com>")
    call append(line(".")+5, " * @package ")
    call append(line(".")+6, " */")
endfunc
"映射F3快捷键
map <F3> :call SetClassesAnnotation()<CR>

" 方法注释
func SetFuntionAnnotation()
    let s:indent = ""
    let s:num = indent(".")
    while s:num>0
        let s:indent .= ' '
        let s:num -= 1
    endwhile
    call append(line("."), s:indent)

    call append(line("."), s:indent . "/**")
    call append(line(".")+1, s:indent . " * 功能简述区(短描述)")
    call append(line(".")+2, s:indent . " *")
    call append(line(".")+3, s:indent . " * 详细说明区(长描述)")
    call append(line(".")+4, s:indent . " *")
    call append(line(".")+5, s:indent . " * @param ")
    call append(line(".")+6, s:indent . " *")
    call append(line(".")+7, s:indent . " * @throws ")
    call append(line(".")+8, s:indent . " *")
    call append(line(".")+9, s:indent . " * @return ")
    call append(line(".")+10, s:indent . " */")
endfunc
"映射F4快捷键
map <F4> :call SetFuntionAnnotation()<CR>

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"       主题

" git clone git://github.com/altercation/vim-colors-solarized.git
" mv vim-color-solarized vimfiles

syntax on
syntax enable
"set background=dark
set background=light
set t_Co=256
colorscheme solarized

"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"   插件

" 关闭 兼容模式
set nocompatible

" 关闭 文件 类型的 自动 检测 功能, 必须
filetype off

" 定义 映射 变量
let mapleader = ','
let g:mapleader = ','

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容