zoukankan      html  css  js  c++  java
  • Linux下 vim 的配置

    为了能够复制粘贴到外面,需要下载gvim,可以自行下载。

    我的插件管理是用vim-plug来管理的

    下载命令

    curl -fLo ~/.vim/autoload/plug.vim --create-dirs 
        https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

    然后在vimrc中添加如下代码段

    call plug#begin()
    """""中间放插件""""
    
    call plug#end()

    在中间放置需要的插件就可以了.

    vim-plug管理插件时,只需要加入上面在代码段中加入需要的插件命(如下),然后打开终端输入vim,在按:输入,PlugInstall,就可以完成插件安装。

    我自己在使用的一些插件。

     neadtree  管理目录用,我把快捷键设置成F3,可以让它开启或关闭

        Plug 'scrooloose/nerdtree'

     nerdcommenter  代码多行注释用的,还是挺不错的,按住 +c+space 就可以注释与反注释了

        Plug 'ddollar/nerdcommenter'

     airline、airline themes  美化 vim 底部状态栏

        Plug 'vim-airline/vim-airline'
        Plug 'vim-airline/vim-airline-themes'

     airline使用前需要安装powerline字体

    安装方法如下

    # clone
    git clone https://github.com/powerline/fonts.git --depth=1
    # install
    cd fonts
    ./install.sh
    # clean-up a bit
    cd ..
    rm -rf fonts

    airline的主题目录如下,可以选择自己想要的主题

    ~/.vim/plugged/vim-airline-themes/autoload/airline/themes

    以下是我的觉得比较好看的主题。

    aurora.vim         base16_eighties.vim  dracula.vim     onedark.vim     silver.vim 
    badcat.vim         base16_isotope.vim   hybridline.vim  papercolor.vim  term.vim
    badwolf.vim        base16_pop.vim       minimalist.vim  peaksea.vim     understated.vim
    base16_colors.vim  bubblegum.vim        molokai.vim     ravenpower.vim  vice.vim
    base16color.vim    deus.vim             night_owl.vim   raven.vim       wombat.vim

    其他的主题就被我删了。

    现在我再用的vice和tomorrow主题,我认为还是蛮好看的。

    只要在.vimrc中添加

    let g:airline_theme="vice"

    就可以了。

    最后是完整的.vimrc

    " ===
    " 设置快捷键
    " ===
    " inoremap ' ''<ESC>i
    " inoremap " ""<ESC>i
    " inoremap ( ()<ESC>i
    " inoremap [ []<ESC>i
    " inoremap { {<CR>}<ESC>O
    
    map Z ZZ 
    map - $
    map 0 ^
    map S :w<CR>
    map ; :
    map tt :tabnew 
    map tj :tabNext<CR>
    map tk :tabnext<CR>
    map gt <nop>
    map gT <nop>
    
    function! HideNumber()                                " <F2>开启/关闭行号显示
        if(&relativenumber == &number)
            set relativenumber! number!
        elseif(&number)
            set number!
        else
            set relativenumber!
        endif
        set number?
    endfunc
    nnoremap <F2> :call HideNumber()<CR>
    
    let g:syntastic_cpp_compiler_options = ' -std=c++11 -stdlib=libc++'            
    "F9编译
    map <F9> :call CR()<CR>
    func! CR()
        exec "w"
        if &filetype == 'cpp'
            exec "!g++ % -o %<"
            exec "!time ./%<"
        elseif &filetype == 'python'
            exec "!python %"
        endif
    endfunc
    
    
    " ===
    " 设置编码
    " ===
    set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
    set termencoding=utf-8
    set encoding=utf-8
    set fileencodings=ucs-bom,utf-8,cp936
    set fileencoding=utf-8
    
    
    " ===
    " === 基本设置    
    " ===
    
    hi Normal    cterm=NONE ctermfg=White     gui=bold guifg=#ffffff
    hi Constant  cterm=NONE ctermfg=LightCyan gui=NONE guifg=#00ffff
    set nocompatible                                      " 不要使用vi的键盘模式,而是vim自己的
    set clipboard =unnamed,unnamedplus                    " 共享剪贴板
    syntax on                                             " 语法高亮
    set cursorline
    set whichwrap=<,>,[,],h,l                             " 允许backspace和光标键跨越行边界
    set nu                                                " 显示行号
    set selection=exclusive
    set selectmode=mouse,key
    set listchars=tab:>-,trail:-
    set magic                                             " 设置魔术
    set guioptions-=T                                     " 隐藏工具栏
    set guioptions-=m                                     " 隐藏菜单栏
    set laststatus=2                                      " 总是显示状态栏
    set showmatch                                         " 高亮显示匹配的括号
    "匹配括号高亮的时间(单位是十分之一秒)
    hi MatchParen ctermbg=blue guibg=lightblue            
    set matchtime=5
    set ruler                                             " 显示光标当前位置
    "我的状态行显示的内容(包括文件类型和解码)
    set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
    set cmdheight=2
    set autoindent                                        " 自动缩进
    set cindent                                           " 以C语言的方式缩进
    set shiftwidth=4                                      " 设置自动缩进的空格数量
    set softtabstop=4                                     " tab键的实际占有空格数,统一缩进
    set tabstop=4                                         " 设置tab键的空格数
    set smarttab                                          " 在行和段开始处使用制表符
    set mouse=a                                           " 使用鼠标
    set completeopt=preview,menu                          " 代码补全 
    set nobackup                                          " 从不备份 
    filetype plugin indent on                             " 允许插件 
    filetype on                                           " 侦测文件类型
    filetype plugin on                                    " 载入文件类型插件
    set viminfo+=!                                        " 保存全局变量
    set iskeyword+=_,$,@,%,#,-                            " 带有如下符号的单词不要被换行分割
    set linespace=0                                       " 字符间插入的像素行数目
    set wildmenu                                          " 增强模式中的命令行自动完成操作
    set backspace=2                                       " 使回格键(backspace)正常处理indent, eol, start等
    set report=0                                          " 通过使用: commands命令,告诉我们文件的哪一行被改变过
    set fillchars=vert: ,stl: ,stlnc:                  " 在被分割的窗口间显示空白,便于阅读
    set scrolloff=5                                       " 光标移动到buffer的顶部和底部时保持3行距离
    set nobackup                                          " 禁止生成临时文件
    set noswapfile                                        " 禁止生成交换文件
    set autoread                                          " 设置当文件被改动时自动载入
    set autowrite                                         " 自动保存
    set history=1000                                      " 历史记录数
    set confirm                                           " 在处理未保存或只读文件的时候,弹出确认
    set ignorecase                                        " 搜索忽略大小写
    set hlsearch                                          " 搜索逐字符高亮
    set incsearch
    set gdefault                                          " 行内替换
    set relativenumber number                             " 相对行号: 行号变成相对
    
    
    " ===
    " === 插入模式下用绝对行号, 普通模式下用相对
    " === 
    au FocusLost * :set norelativenumber number
    au FocusGained * :set relativenumber
    autocmd InsertEnter * :set norelativenumber number    
    autocmd InsertLeave * :set relativenumber
    
    "复制选中区到系统剪切板中
    vnoremap <leader>y "+y
    if has("autocmd")                                     " 打开自动定位到最后编辑的位置, 需要确认 .viminfo 当前用户可写
        au BufReadPost * if line("'"") > 1 && line("'"") <= line("$") | exe "normal! g'"" | endif
    endif
    
    
    " ===
    " === vimplug
    " ===
    call plug#begin()                                     " 中间放插件
        Plug 'scrooloose/nerdtree'
        Plug 'ddollar/nerdcommenter'
        Plug 'vim-airline/vim-airline'
        Plug 'vim-airline/vim-airline-themes'
        Plug 'jiangmiao/auto-pairs'
    call plug#end()
    
    
    " ===
    " === NERDTree
    " ===
    let NERDChristmasTree=1                               " 显示增强
    let NERDTreeAutoCenter=1                              " 自动调整焦点
    let NERDTreeMouseMode=2                               " 鼠标模式:目录单击,文件双击
    let NERDTreeShowFiles=1                               " 显示文件
    " let NERDTreeShowHidden=1                            " 显示隐藏文件
    let NERDTreeHightCursorline=1                         " 高亮显示当前文件或目录
    let NERDTreeShowLineNumbers=1                         " 显示行号
    let NERDTreeWinPos='left'                             " 窗口位置
    let NERDTreeWinSize=31                                " 窗口宽度
    let g:NERDTreeCaseSensitiveSort = 1
    let g:nerdtree_tabs_open_on_console_startup=1
    let NERDTreeIgnore=['.pyc','~$','.swp']
    let g:NERDTreeIndicatorMapCustom = {
         "Modified"    : "",
         "Staged"      : "",
         "Untracked"   : "",
         "Renamed"     : "",
         "Unmerged"    : "",
         "Deleted"     : "",
         "Dirty"       : "",
         "Clean"       : "✔︎",
         'Ignored'     : '',
         "Unknown"     : "?"
         }
    " 快捷键
    nnoremap <silent> <F3> :NERDTreeToggle<CR>
    set t_Co=256
    set laststatus=2
    set lazyredraw
    
    
    " ===
    " === airline
    " ===
    " let g:airline#extensions#tabline#enabled = 1
    " let g:airline#extensions#tabline#buffer_nr_show = 1
    let g:airline_theme="vice" 
    let g:airline_powerline_fonts = 1 
    
    " ===
    " === 新文件标题
    " ===
    " 新建.c,.h,.sh,.java文件,自动插入文件头 
    autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
    " 定义函数SetTitle,自动插入文件头 
    func SetTitle()
        let l = 0
        if &filetype == 'sh' 
            let l = l+1 | call setline(l, "###############################################################") 
            let l = l+1 | call setline(l, "# File Name        : ".expand("%")) 
            let l = l+1 | call setline(l, "# Author           : Jiaaaaaaaqi") 
            let l = l+1 | call setline(l, "# Created Time     : ".strftime("%c")) 
            let l = l+1 | call setline(l, "###############################################################") 
            let l = l+1 | call setline(l, "#!/bin/bash") 
            let l = l+1 | call setline(l, "")
        else 
            let l = l+1 | call setline(l, "/*************************************************************** ") 
            let l = l+1 | call setline(l, "    > File Name        : ".expand("%")) 
            let l = l+1 | call setline(l, "    > Author           : Jiaaaaaaaqi") 
            let l = l+1 | call setline(l, "    > Created Time     : ".strftime("%c")) 
            let l = l+1 | call setline(l, " ***************************************************************/") 
            let l = l+1 | call setline(l, "")
        endif
        if &filetype == 'cpp'
            let l = l+1 | call setline(l, "#include <bits/stdc++.h>")
            let l = l+1 | call setline(l, "#define  fi         first")
            let l = l+1 | call setline(l, "#define  se         second")
            let l = l+1 | call setline(l, "#define  pb         push_back")
            let l = l+1 | call setline(l, "#define  pii        pair<int, int>")
            let l = l+1 | call setline(l, '#define  dbg(x)     cout << #x << " = " << (x) << endl')
            let l = l+1 | call setline(l, "#define  mes(a, b)  memset(a, b, sizeof a)")
            let l = l+1 | call setline(l, "")
            let l = l+1 | call setline(l, "using namespace std;")
            let l = l+1 | call setline(l, "typedef long long int ll;")
            let l = l+1 | call setline(l, "typedef unsigned long long int ull;")
            let l = l+1 | call setline(l, "const int    maxn = 1e5 + 10;")
            let l = l+1 | call setline(l, "const ll     mod  = 1e9 + 7;")
            let l = l+1 | call setline(l, "const ll     INF  = 1e18 + 100;")
            let l = l+1 | call setline(l, "const int    inf  = 0x3f3f3f3f;")
            let l = l+1 | call setline(l, "")
            let l = l+1 | call setline(l, "int n, m;")
            let l = l+1 | call setline(l, "int T, cas, tol = 0;")
            let l = l+1 | call setline(l, "")
            let l = l+1 | call setline(l, "int main() {")
            let l = l+1 | call setline(l, '    // freopen("in", "r", stdin);')
            let l = l+1 | call setline(l, "")
            let l = l+1 | call setline(l, "    return 0;")
            let l = l+1 | call setline(l, "}")
            let l = l+1 | call setline(l, "")
        endif
    endfunc
    " 新建文件后,自动定位到文件末尾
    autocmd BufNewFile * normal G
    View Code
  • 相关阅读:
    [转]vim 常用命令
    C语言运算符优先级顺序
    uboot
    linux 驱动开发 不定期更新
    [转]spdk 和nvme 预备知识1
    【转】聊聊 Linux IO
    [转]NVMe协议/ SSD控制器/ linux driver / open channel
    Ubuntu给应用程序创建一个启动图标
    Qt4.8.7+mingw4.8.2 环境搭建
    更改C编译器的缺省字节对齐方式__align(),__attribute((aligned (n))),#pragma pack(n)
  • 原文地址:https://www.cnblogs.com/Jiaaaaaaaqi/p/10460822.html
Copyright © 2011-2022 走看看