• vim配置


    为了让Vim成为一个完整的IDE,下面是我们要添加、启用的一些功能:

    • 代码补全
    • 标签列表
    • 项目管理
    • 语法高亮
    • 代码检查

    首先我们要下载下面这些Vim脚本,并解压倒~/.vim目录

    按顺序下载上面的脚本并安装。安装它们只需要把它们解压你的Home目录下的.vim目录。现在我们需要下载一些文件到我们的~/.vim/plugin目录。

    现在我们安装了上面那些脚本,差不多快完成了。你只需要把下面的内容复制倒你Home目录下的.vimrc里。

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " ~/.vimrc                                                      "
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "                                                               "
    " Version: 0.1                                                  "
    "                                                               "
    "                                                               "
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    
    " Hightlight the ifs and buts
    syntax on
    
    " Plugins and indentation based on the file type
    filetype plugin indent on
    
    " Don't remember source of this, i think it was already in my .vimrc
    " Tell vim to remember certain things when we exit
    "  '10 : marks will be remembered for up to 10 previously edited files
    "  "100 : will save up to 100 lines for each register
    "  :5000 : up to 5000 lines of command-line history will be remembered
    "  % : saves and restores the buffer list
    "  n... : where to save the viminfo files
    set viminfo='10,"100,:5000,%,n~/.viminfo
    
    " omnicomplete from: http://vim.wikia.com/wiki/VimTip1386
    set completeopt=longest,menuone
    inoremap <expr> <CR> pumvisible() ? "<C-y>" : "<C-g>u<CR>"
    inoremap <expr> <C-n> pumvisible() ? '<C-n>' :
       '<C-n><C-r>=pumvisible() ? "<lt>Down>" : ""<CR>'
    
    "###########################
    "##       PHP             ##
    "###########################
    " The php doc plugin
    " source ~/.vim/php-doc.vim
    inoremap <C-P> <ESC>:call PhpDocSingle()<CR>i
    nnoremap <C-P> :call PhpDocSingle()<CR>
    vnoremap <C-P> :call PhpDocRange()<CR>
    
    " run file with PHP CLI (CTRL-M)
    :autocmd FileType php noremap <C-M> :w!<CR>:!/usr/bin/php %<CR>
    
    " PHP parser check (CTRL-L)
    :autocmd FileType php noremap <C-L> :!/usr/bin/php -l %<CR>
    
    " Do use the currently active spell checking for completion though!
    " (I love this feature :-)
    set complete+=kspell
    
    " disable tabs
    set expandtab
    set shiftwidth=4
    set softtabstop=4
    
    " highlt matches
    set hlsearch
    
    " Taken from http://peterodding.com/code/vim/profile/vimrc
    " Make Vim open and close folded text as needed because I can't be bothered to
    " do so myself and wouldn't use text folding at all if it wasn't automatic.
    set foldmethod=marker foldopen=all,insert foldclose=all
    
    " Enable enhanced command line completion.
    set wildmenu wildmode=list:full
    
    " Ignore these filenames during enhanced command line completion.
    set wildignore+=*.aux,*.out,*.toc " LaTeX intermediate files
    set wildignore+=*.jpg,*.bmp,*.gif " binary images
    set wildignore+=*.luac " Lua byte code
    set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest " compiled object files
    set wildignore+=*.pyc " Python byte code
    set wildignore+=*.spl " compiled spelling word lists
    set wildignore+=*.sw? " Vim swap files
    
    " Enable completion dictionaries for PHP buffers.
    autocmd FileType php set complete+=k~/.vim/dict/PHP.dict
    
    " PHP Autocomplete
    autocmd FileType php set omnifunc=phpcomplete#CompletePHP
    set ofu=syntaxcomplete#Complete
    
    " You might also find this useful
    " PHP Generated Code Highlights (HTML & SQL)
    let php_sql_query=1
    let php_htmlInStrings=1
    let g:php_folding=2
    set foldmethod=syntax
    
    " --------------------
    " Project
    " --------------------
    map <A-S-p> :Project<CR>
    map <A-S-o> :Project<CR>:redraw<CR>/
    nmap <silent> <F3> <Plug>ToggleProject
    "let g:proj_window_width = 30
    "let g:proj_window_increment = 150
    
    nnoremap <silent> <F8> :TlistToggle<CR>
    let Tlist_Exit_OnlyWindow = 1     " exit if taglist is last window open
    let Tlist_Show_One_File = 1       " Only show tags for current buffer
    let Tlist_Enable_Fold_Column = 0  " no fold column (only showing one file)
    let tlist_sql_settings = 'sql;P:package;t:table'
    let tlist_ant_settings = 'ant;p:Project;r:Property;t:Target'
    
    " auto change directory from: http://vim.wikia.com/wiki/Set_working_directory_to_the_current_file
    autocmd BufEnter * if expand("%:p:h") !~ '^/tmp' | lcd %:p:h | endif
    
    " when we reload, tell vim to restore the cursor to the saved position
    augroup JumpCursorOnEdit
     au!
     autocmd BufReadPost *
      if expand("<afile>:p:h") !=? $TEMP |
      if line("'"") > 1 && line("'"") <= line("$") |
      let JumpCursorOnEdit_foo = line("'"") |
      let b:doopenfold = 1 |
      if (foldlevel(JumpCursorOnEdit_foo) > foldlevel(JumpCursorOnEdit_foo - 1)) |
      let JumpCursorOnEdit_foo = JumpCursorOnEdit_foo - 1 |
      let b:doopenfold = 2 |
      endif |
      exe JumpCursorOnEdit_foo |
      endif |
      endif
     " Need to postpone using "zv" until after reading the modelines.
     autocmd BufWinEnter *
      if exists("b:doopenfold") |
      exe "normal zv" |
      if(b:doopenfold > 1) |
      exe "+".1 |
      endif |
      unlet b:doopenfold |
      endif
    augroup END
    
    " PHP code sniffer
    " If code sniffer is installed you can run it on current php file by running
    " :Phpcs
    function! RunPhpcs()
        let l:filename=@%
        let l:phpcs_output=system('phpcs --report=csv --standard=YMC '.l:filename)
    "    echo l:phpcs_output
        let l:phpcs_list=split(l:phpcs_output, "
    ")
        unlet l:phpcs_list[0]
        cexpr l:phpcs_list
        cwindow
    endfunction
    
    set errorformat+="%f"\,%l\,%c\,%t%*[a-zA-Z]\,"%m"
    command! Phpcs execute RunPhpcs()
    View Code

    好了,设置完毕。下面这些快捷命令来让你开始适用刚才启用的所有功能。

    F3:打开项目管理

    C:在打开项目管理后,用这个新建项目

    F8:打开标签列表

    Ctrl+L:在你的PHP文件上运行语法检查

    Ctrl+P:在类或方法上添加PHP doc风格的注释

    “:PhpCs”:在你的PHP脚本上打开PHP代码嗅探(需要安装code sniffer)

    Ctrl+n:自动补全

  • 相关阅读:
    易股(私募) 笔试
    TinyWS
    重载 隐藏 重写(覆盖)
    vector emplace_back() 和push_back() 的区别
    std::ref 和 std::cref 的使用
    网络 I/O复用模式之select、poll、epoll
    网络I/O中 同步/异步 阻塞/非阻塞 概念
    git 使用方法 (reset merge rebase stash diff等)
    C++11 thread用法
    C++中 锁的使用 互斥锁:std::mutex std::lock_guard std::unique_lock ,读写锁使用shared_mutex ,条件变量使用std::condition_variable类
  • 原文地址:https://www.cnblogs.com/canbefree/p/3781295.html
Copyright © 2020-2023  润新知