• vimrc


    syntax on
    set number
    set tabstop=4
    set shiftwidth=4
    
    set autoindent #自动缩进
    inoremap { {<Enter><Tab><Enter><Backspace>}<Esc>kA     #'{'自动补全                                                     
    

    inoremap { {}kA
    注:inormap是替换的命令,后面的替换前面,既用{}替换{,中间里面直接用键名字代替.kA是光标撤回的位置,以替换后的最后一排为参照点,k是向上,j是向下,和vim的操作命令一样.A是本行末尾,I是开头.

    " -----------------   Author: Ruchee
    " -----------------    Email: my@ruchee.com
    " -----------------  WebSite: http://www.ruchee.com
    " -----------------     Date: 2012-05-01
    
    
    " Ctrl + H                   --光标移当前行行首
    " Ctrl + J                   --光标移下一行行首
    " Ctrl + K                   --光标移上一行行尾
    " Ctrl + L                   --光标移当前行行尾
    " Ctrl + C                   --编译 [支持C/C++、Java、Haskell]
    " Ctrl + R                   --运行 [支持C/C++、Java、Haskell、Lua、Perl、Python、Ruby]
    " Ctrl + ]                   --转到函数定义
    " Ctrl + T                   --返回调用函数
    " Ctrl + E                   --一步加载语法模板和作者、时间信息
    
    " <C-P>                      --单词补全
    " <C-X><C-L>                 --整行补全
    " Tab键                      --插入模式下的全功能语法结构补全 [snipMate插件]
    " Shift + Insert             --向Vim中粘贴从别处复制的内容
    
    " u [小写]                   --单步复原 [非插入模式]
    " U [大写]                   --整行复原 [非插入模式]
    
    " jj                         --保存文件并留在插入模式 [插入模式]
    " kk                         --返回Normal模式 [插入模式]
    " nt                         --打开NERDTree [非插入模式]
    " tl                         --打开TagList [非插入模式]
    
    " za                         --打开或关闭当前折叠
    " zM                         --关闭所有折叠
    " zR                         --打开所有折叠
    
    " :set syntax=cpp            --手动选择语法高亮 [或 :set filetype=cpp]
    
    " :%!xxd                     --转储二进制文件,以十六进制形式显示
    " :%!xxd -r                  --还原二进制文件
    
    
    " ---------- 主要插件详细用法说明 ---------------------
    
    " :Tlist                     --呼出变量和函数列表 [TagList插件]
    " :LoadTemplate              --呼出语法模板 [Load_Template插件]
    " :AuthorInfoDetect          --添加作者、时间等信息 [NERD_commenter && authorinfo插件]
    
    " ---------- a.vim [自动切换C/C++同名头文件] ----------
    "
    " :A                         --切换同名头文件并独占整个屏幕
    " :AS                        --切换同名头文件并垂直分屏,头文件在上
    " :AV                        --切换同名头文件并水平分割,头文件在左
    
    " ---------- NERDTree [智能文件浏览器] ----------------
    "
    " :NERDTree                  --启动NERDTree插件
    " o [小写]                   --切换当前文件或目录的打开、关闭状态
    " u                          --打开上层目录
    " p [小写]                   --返回上层目录
    " P [大写]                   --返回根目录
    " K                          --转到当前目录第一个节点
    " J                          --转到当前目录最后的节点
    " m                          --显示文件系统菜单 [增、删、移]
    " ?                          --弹出帮助菜单
    " q                          --退出该插件
    
    
    " 将所有以.html结尾的文档以Django Template语法进行渲染
    " 本配置语句必须放在所有配置的最前面
    au BufNewFile,BufRead *.html setf htmldjango
    
    colorscheme elflord          " 着色模式
    set guifont=Monaco:h10       " 字体 && 字号
    set tabstop=4                " 设置tab键的宽度
    set shiftwidth=4             " 换行时行间交错使用4个空格
    set autoindent               " 自动对齐
    set backspace=2              " 设置退格键可用
    set cindent shiftwidth=4     " 自动缩进4空格
    set smartindent              " 智能自动缩进
    set ai!                      " 设置自动缩进
    set nu!                      " 显示行号
    "set showmatch               " 显示括号配对情况
    set mouse=a                  " 启用鼠标
    set ruler                    " 右下角显示光标位置的状态行
    set incsearch                " 开启实时搜索功能
    set hlsearch                 " 开启高亮显示结果
    set nowrapscan               " 搜索到文件两端时不重新搜索
    set nocompatible             " 关闭兼容模式
    set vb t_vb=                 " 关闭提示音
    "set cursorline              " 突出显示当前行
    set hidden                   " 允许在有未保存的修改时切换缓冲区
    set list                     " 显示Tab符,使用一高亮竖线代替
    set listchars=tab:| ,
    
    syntax enable                " 打开语法高亮
    syntax on                    " 开启文件类型侦测
    filetype indent on           " 针对不同的文件类型采用不同的缩进格式
    filetype plugin on           " 针对不同的文件类型加载对应的插件
    filetype plugin indent on    " 启用自动补全
    
    set writebackup              " 设置无备份文件
    set nobackup
    set autochdir                " 设定文件浏览器目录为当前目录
    "set nowrap                  " 设置不自动换行
    set foldmethod=syntax        " 选择代码折叠类型
    set foldlevel=100            " 禁止自动折叠
    
    set laststatus=2             " 开启状态栏信息
    set cmdheight=2              " 命令行的高度,默认为1,这里设为2
    
    " 每行超过80个的字符用下划线标示
    au BufRead,BufNewFile *.s,*.asm,*.h,*.c,*.cpp,*.cc,*.java,*.cs,*.erl,*.hs,*.sh,*.lua,*.pl,*.pm,*.php,*.py,*.rb,*.erb,*.vim,*.js,*.css,*.xml,*.html,*.xhtml 2match Underlined /.\%81v/
    
    
    " 设置编码
    set fenc=utf-8
    set encoding=utf-8
    set fileencodings=utf-8,gbk,cp936,latin-1
    
    
    " For Haskell
    :let hs_highlight_delimiters=1            " 高亮定界符
    :let hs_highlight_boolean=1               " 把True和False识别为关键字
    :let hs_highlight_types=1                 " 把基本类型的名字识别为关键字
    :let hs_highlight_more_types=1            " 把更多常用类型识别为关键字
    :let hs_highlight_debug=1                 " 高亮调试函数的名字
    :let hs_allow_hash_operator=1             " 阻止把#高亮为错误
    
    
    " ======= 引号 && 括号自动匹配 ======= "
    
    :inoremap ( ()<ESC>i
    
    :inoremap ) <c-r>=ClosePair(')')<CR>
    
    :inoremap { {}<ESC>i
    
    :inoremap } <c-r>=ClosePair('}')<CR>
    
    :inoremap [ []<ESC>i
    
    :inoremap ] <c-r>=ClosePair(']')<CR>
    
    ":inoremap < <><ESC>i
    
    ":inoremap > <c-r>=ClosePair('>')<CR>
    
    :inoremap " ""<ESC>i
    
    :inoremap ' ''<ESC>i
    
    :inoremap ` ``<ESC>i
    
    function ClosePair(char)
        if getline('.')[col('.') - 1] == a:char
            return "<Right>"
        else
            return a:char
        endif
    endf
    
    
    " MiniBufExplorer     多个文件切换 可使用鼠标双击相应文件名进行切换
    let g:miniBufExplMapWindowNavVim=1
    let g:miniBufExplMapWindowNavArrows=1
    let g:miniBufExplMapCTabSwitchBufs=1
    let g:miniBufExplModSelTarget=1
    
    " :Tlist              调用TagList
    let Tlist_Show_One_File=1                    " 只显示当前文件的tags
    let Tlist_Exit_OnlyWindow=1                  " 如果Taglist窗口是最后一个窗口则退出Vim
    let Tlist_Use_Right_Window=1                 " 在右侧窗口中显示
    let Tlist_File_Fold_Auto_Close=1             " 自动折叠
    
    " TxtBrowser          高亮TXT文本文件
    au BufRead,BufNewFile *.txt setlocal ft=txt
    
    " :LoadTemplate       根据文件后缀自动加载模板
    let g:template_path='/home/ruchee/.vim/template/'
    
    " :AuthorInfoDetect   自动添加作者、时间等信息,本质是NERD_commenter && authorinfo的结合
    let g:vimrc_author='Ruchee'
    let g:vimrc_email='my@ruchee.com'
    let g:vimrc_homepage='http://www.ruchee.com'
    
    " Ctrl + H            将光标移到当前行的行首
    imap <c-h> <ESC>I
    
    " Ctrl + J            将光标移到下一行的行首
    imap <c-j> <ESC>jI
    
    " Ctrl + K            将光标移到上一行的末尾
    imap <c-k> <ESC>kA
    
    " Ctrl + L            将光标移到当前行的行尾
    imap <c-l> <ESC>A
    
    " Ctrl + E            一步加载语法模板和作者、时间信息
    map <c-e> <ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi
    imap <c-e> <ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi
    vmap <c-e> <ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi
    
    " jj                  保存文件并留在插入模式 [插入模式]
    imap jj <ESC>:w<CR>li
    
    " kk                  返回Normal模式 [插入模式]
    imap kk <ESC>l
    
    " nt                  打开NERDTree [非插入模式]
    map nt :NERDTree<CR>
    
    " tl                  打开Taglist [非插入模式]
    map tl :Tlist<CR><c-l>
    
    
    " ======= 编译 && 运行 ======= "
    
    " 编译源文件
    func! CompileCode()
            exec "w"
            if &filetype == "c"
                exec "!gcc -Wall -std=c99 %<.c -o %<"
            elseif &filetype == "cpp"
                exec "!g++ -Wall -std=c++98 %<.cpp -o %<"
            elseif &filetype == "java"
                exec "!javac %<.java"
            elseif &filetype == "haskell"
                exec "!ghc --make %<.hs -o %<"
            elseif &filetype == "lua"
                exec "!lua %<.lua"
            elseif &filetype == "perl"
                exec "!perl %<.pl"
            elseif &filetype == "python"
                exec "!python %<.py"
            elseif &filetype == "ruby"
                exec "!ruby %<.rb"
            endif
    endfunc
    
    " 运行可执行文件
    func! RunCode()
            exec "w"
            if &filetype == "c" || &filetype == "cpp" || &filetype == "haskell"
                exec "! ./%<"
            elseif &filetype == "java"
                exec "!java %<"
            elseif &filetype == "lua"
                exec "!lua %<.lua"
            elseif &filetype == "perl"
                exec "!perl %<.pl"
            elseif &filetype == "python"
                exec "!python %<.py"
            elseif &filetype == "ruby"
                exec "!ruby %<.rb"
            endif
    endfunc
    "下面的语句可以很方便地实现编译和运行
    " Ctrl + C 一键保存、编译
    map <c-c> :call CompileCode()<CR>
    imap <c-c> <ESC>:call CompileCode()<CR>
    vmap <c-c> <ESC>:call CompileCode()<CR>
    
    " Ctrl + R 一键保存、运行
    map <c-r> :call RunCode()<CR>
    imap <c-r> <ESC>:call RunCode()<CR>
    vmap <c-r> <ESC>:call RunCode()<CR>
    
  • 相关阅读:
    !!!C#——进制转换!
    冒泡排序后用二分查找法查找位置
    简陋的4位验证码程序(范围内取随机数)
    这个年龄计算程序相当不科学,体验还是差差哒
    8.7课堂随笔
    字符串中查询关键字
    !汉企的WiFi网速好快
    重度强迫症患者的九九乘法表
    自选数字和范围的整除算法
    day52
  • 原文地址:https://www.cnblogs.com/cyno/p/4394657.html
Copyright © 2020-2023  润新知