自己的vim配置

时间:2021-03-13 17:19:58
nmap <F11> :source ~/.vimrc<CR> 
        "n 普通模式   F11映射为 :source ~/.vimrc
winpos 5 5 "windows post set
set nocompatible   "不与VI兼容(采用vim 自己的操作命令)
au GUIEnter * simalt ~x "启动时最大化
nmap <F8> GoDate:<ESC>:read !date<CR>KJ 
function! RemovePairs() "设置一个删除括号的函数,首字母要大写
    let l:line = getline(".")  
        "getline()获取当前行内容,例如getline(line(".")获取当前所在行
    let l:previous_char = l:line[col(".")-1]
   "获取当前光标前一个字符
    if index(["{","[","("],l:previous_char)!=-1 
    "判断是否为所列字符
    let l:original_pos=getpos(".")
    execute "normal %"
    let l:new_pos = getpos(".")

    if l:original_pos == l:new_pos
    execute "normal! a\<BS>"
    return
    end

    let l:line2 = getline(".")
    if len(l:line2)==col(".")
    execute "normal! v%xa"
    else
     execute "normal! v%xi"
    end

    else
    execute "normal! a\<BS>"
    end
    endfunction
inoremap <BS> <ESC>:call RemovePairs()<CR>a
"color github
set encoding=utf-8          "使用utf-8编码 简写(enc)
set fileencodings=utf-8,gbk,big5,cp936,gb18030,gb23215,utf-16 "如果上一步解码失败才尝试这些  (简写 fencs)
set fileencoding=utf-8            "把文件编码转换为utf-8  (fenc)            
set number         "显示行号
"set relativenumber  "显示光标所在行的行号,其它行都为相对于该行的相对行号
set cursorline     "光标所在行高亮
set textwidth=140   "设置行宽,即一行显示多少个字符
set wrap           "自动折行,即太长的行分成几行显示 ,set nowap 关闭折行
set linebreak      "只有遇到制定的符号(比如空格.连词号.其它标点符号),才发生折行
set wrapmargin=2   "当前折行处与编辑窗口的右边缘之间空出的字符数
filetype on        "文件检查
set t_Go=256      "启用256色
"hi comment ctermfg=1  "ctermfg 前景色 ctermbg 背景色 
colorscheme desert" 配色方案 elflord ron  peachpuff  desert morning evening default murphy pablo shine blue darkblue delek koehler slate torte zellner
hi Normal guibg=BLACK
hi Search term=standout ctermfg=15 ctermbg=242  "hi 颜色设置 Search 搜索  ctermfg 背景色 ctermbg 前景色 
syntax on
set showcmd        "在底部显示当前处于命令模式还是插入模式
set mouse=a        "支持使用鼠标
set cindent        " /*set atuoindent 设置自动缩进 可选 autoindent cindent indentexpr*/
set smartindent     "/*智能对其方式*/
set ai             "设置自动缩进
set expandtab      " #set tab character auto turn space 设置tab自动转换为空格
set tabstop =2     "按下tab键时,Vim显示的空格数
set shiftwidth=4
"set cindent shiftwidth=4   " #设置自动缩进长度为4个空格
"set autoindent shiftwidth=2 "设置缩进字符个数
set mouse=a        "设置那些模式使用鼠标
set backspace=2    "设置Backspace 和Delete的灵活程度 2为没有限制
"set noweap 不自动换行

inoremap { {}<ESC>i<CR><ESC>V<>>O
    "i:insert pattern  nore:非递归模式  map 映射  这句的功能是当输入{时 VIM自动输入后面的命令
inoremap ( ()<ESC>i  
inoremap [ []<ESC>i 
inoremap " ""<ESC>i
inoremap ' ''<ESC>i
"auto remove a pair character
""function! Removepairs()
"let l:line=getline(".")
""let
set softtabstop=2  "tap 转换为多少个空格
set showmatch      "光标遇到圆括号,方括号,大括号,自动高亮对应的另一个圆括号,方括号,大括号
set hlsearch       "搜索时高亮配备集国
set incsearch      " 输入搜索模式时,每输入一个字符,就自动跳到第一个配备的结果
set ignorecase     "搜索时忽略大小写
set smartcase      "如果同时打开了ignorecase,那么对于只有一个大写字母的搜索词,将大小写敏感,其它情况不敏感,例如:搜索Test时,将不配备test,
                "搜索test时,将配备Test
"set spell spelllang=en_us "打开英语单词的拼写检查
set backup      "创建备份文件,默认情况,文件保存时,会额外创建备份文件,它的文件名是在原文件的末尾,再添加一个波浪号(~);nobackup则反过来
set swapfile      "创建交换文件,交换文件主要用于系统崩溃时恢复文件,文件名的开头是.  结尾是.swp  ; noswapfile则反过来
set undofile                                                                               "保留撤销历史,将撤销历史保存到一个文件里,继续存在,关闭文件后下次编辑,可以撤销赏次操作,文件名以un~开头,和原文件在一起的隐藏文件
set backupdir=/home/share
set directory=~/.vim/.share/.swp//
set undodir=~/.home/.share/.undo//
"上面3行设置备份文件,交换文件,操作历史文件的保存位置,结尾的//表示生成的文件的绝对路径,路ingzhong用%替换目录分格符,这样可以防止文件重名
set laststatus=2  "是否显示状态栏,0 不显示,1 只在多窗口显示,2显示
set autochdir    "自动切换工作目录,在在个VIM会话中打开多个为年间的情况,默认工作目录是打开的第一个文件的目录
set noerrorbells "出错时不要发出响声
set visualbell   "出错时发出错误提示
set history=1000 "VIM需要记住多少次历史操作
set autoread     "打开文件监视,如果编辑过程中文件发生外部改变,就会发出提示
set wildmenu     "
set wildmode=longest:list,full
"上面两行,在命令模式下,底部操作指令TAB键会自动补全,第一次按TAB,会显示配备的指令清单,第二次按TAB,会依次选择各个指令
set guioptions-=T " #GUI set; T:去掉Gvim中的工具栏;t:去掉GVIM中可撕下的菜单 guioptions=egmrLtT
set vb t_vb=
set ruler         "在状态栏显示光标的当前位置
set incsearch
if has("vms")
    set nobackup
else
set backup
endif