vim學習筆記

安裝pathogen.vim(插件管理)

mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

Runtime Path Manipulation

若是是新裝而且vimrc不存在,請用命令 vim ~/.vimrc新建該文件,並將下面的代碼粘貼到文件中。php

execute pathogen#infect()
syntax on
filetype plugin indent on

以pathogen.vim方式安裝插件NERDTree

cd ~/.vim/bundle
git clone https://github.com/scrooloose/nerdtree.git

Then reload vim, run :Helptags, and check out :help NERD_tree.txt.html

supertab

https://github.com/ervandew/supertab.git

gdbmgr下載地址:

http://vim.sourceforge.net/scripts/download_script.php?src_id=18153

gdbmgr install details

* needs huge/large vim and linux 
cd $HOME/.vim 
mv [wherever]/gdbmgr.tar.gz . 
gunzip gdbmgr.tar.gz 
tar -xf gdbmgr.tar 
vi 
:helptags ~/.vim/doc 
:q

(參考自)http://linux.cn/article-3314-1.htmlpython


vundle插件管理

  1. 從Github下載vundle到本地:
    $ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

    1. 配置vimrc文件:
set nocompatible               " be iMproved
     filetype off                   " required!       /**  從這行開始,vimrc配置 **/

     set rtp+=~/.vim/bundle/vundle/
     call vundle#rc()

     " let Vundle manage Vundle
     " required! 
     Bundle 'gmarik/vundle'

     " My Bundles here:  /* 插件配置格式 */
     "   
     " original repos on github (Github網站上非vim-scripts倉庫的插件,按下面格式填寫)
     Bundle 'tpope/vim-fugitive'
     Bundle 'Lokaltog/vim-easymotion'
     Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
     Bundle 'tpope/vim-rails.git'
     " vim-scripts repos  (vim-scripts倉庫裏的,按下面格式填寫)
     Bundle 'L9'
     Bundle 'FuzzyFinder'
     " non github repos   (非上面兩種狀況的,按下面格式填寫)
     Bundle 'git://git.wincent.com/command-t.git'
     " ... 

     filetype plugin indent on     " required!   /** vimrc文件配置結束 **/
     "                                           /** vundle命令 **/
     " Brief help
     " :BundleList          - list configured bundles
     " :BundleInstall(!)    - install(update) bundles
     " :BundleSearch(!) foo - search(or refresh cache first) for foo 
     " :BundleClean(!)      - confirm(or auto-approve) removal of unused bundles
     "   
     " see :h vundle for more details or wiki for FAQ 
     " NOTE: comments after Bundle command are not allowed..

PluginInstall                 安裝已經配置的插件
PluginSearch                  查找vim-scripts倉庫中的插件
PluginClean                   清除配置文件中不存在的插件

打造python IDE須要的相關插件linux

Bundle 'scrooloose/nerdtree'
Bundle 'davidhalter/jedi-vim'
Bundle 'SuperTab'

vim命令備忘

$ vim -u NONE -N                   (啓動時不加載本身的vimrc,而且不進入兼容模式)

c 與 d                              都是刪除,c操做完成後會進入插入模式,而d會留在普通模式。
daw                                 刪除當前單詞(delete a word)。
nyy                                複製n行,前面能夠加小寫字母,定義不一樣的緩衝區。
nyw                                複製n個單詞,前面能夠加小定字母,定義不一樣的緩衝區。                                 
y^ 和 y$                            從當前光標複製到行首或行尾。
[a]p 或 [a]P                        粘貼指定剪切板中指定緩衝區到當前行下方或上方。
R                                  覆蓋模式。
J                                  合併當前行與下一行。
n+  和  n-                         n爲數字,光標下移或上移n行。
nG  和  G                          n爲行號,光標移到指定行,無行號時(能夠理解爲無窮大),光標移至最後行。

.                                  重複上次修改。
u                                  與.命令執行相反的操做。
U                                  撤銷當前行的全部操做。
f{char}/t{char}                    行內查找下一處指定字符出現的位置,若是找到,並將光標移至指定字符處。
F{char}/T{char}                    行內查找上一處指定字符出現的位置,若是找到,並將光標移至指定字符處。
;                                  重複查找上次f命令所查找的字符。
,                                  與;命令執行相反的操做。
/                                 文檔中向下查找匹配項。
?                                  文檔中向上查找匹配項。
n                                  重複查找上次/命令所查找的匹配項。
N                                  與n命令執行相反的操做。
:[n,m ]s/target/replacement[/g]    [n->m行內](行內)執行替換第一個匹配項[替換全部]。
:%s/target/replacement[/g]        (文件內)執行替換第一個匹配項[替換全部]。
*                                  選中光標所在單詞。
&                                 重複執行:s命令;回退命令爲u。
qx{changes}q                       執行一系列修改。
@x                                重複執行qx{}q命令;回退命令爲u。
e filename                         編輯名爲filename的文件。

複合命令列表

C <=> c$                    從光標片刪至行尾,並進入插入模式。
  s <=> cl                    刪除當前字符,並進入插入模式。
  S <=> ^c                    刪除整行,並進入插入模式。
  I <=> ^i                    光標移至行首,並進入插入模式。
  A <=> $a                    光標移至行尾,並進入追加模式。
  o <=> A<CR>                 在當前行下新起一行,並進入插入模式。
  O <=> ko <=> k$a<CR>        在當前行上新起一行,並進入插入模式。

多緩衝區操做快捷鍵

一、多文件編輯模式
(1)argument list模式,就是在打開Vim編輯器時,攜帶多個文件路徑參數。
(2)buffer list模式,就是在進入Vim編輯器後,打開多個緩衝區進行編輯。
二、單一緩衝區打開多個文件
:files顯示目前打開了哪些文件
:n切換到下一個緩衝區內容
:N切換到上一個緩衝區內容
:2n切換到下下個緩衝區內容
:bn下一個緩衝區內容(buffer next)
:bp上一個緩衝區內容(buffer previous)
三、多個緩衝區打開多個文件
:sp [filename]打開一個新的緩衝區,若是有filename則內容爲該文件,不然爲當前文件
Ctrl+w n新建一個緩衝區
Ctrl+w q退出光標所在的緩衝區
Ctrl+w j光標移動到下一緩衝區
Ctrl+w k光標移動到上一緩衝區
Ctrl+w l光標移動到右一緩衝區
Ctrl+w h光標移動到左一緩衝區
Ctrl+w v左右切割窗口新建緩衝區
Ctrl+w s上下切割窗口新建緩衝區
Ctrl+w o使光標所在緩衝區最大化,其餘緩衝區隱藏

利用vundle方式打造一個最基本的IDE

下列是.vimrc文件的配置,第一次進入vim,執行:PluginInstall,會自動安裝所列插件,用vim打開的一python文件,再按F3,你就能夠看到一個基本的IDE了。同時定義了F5,F6來編譯運行c,c++,但其代碼提示尚未考慮。c++

set nocompatible                       "進入非兼容模式
set rtp+=~/.vim/bundle/vundle/         "vundle的安裝配置
call vundle#rc()

" let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle'

" 最基本的插件
Bundle 'davidhalter/jedi-vim'         "python插件
Bundle 'SuperTab'                     "利用tab鍵進行補全
Bundle 'ctags.vim'                    "Ctags -R 生成標籤
Bundle 'taglist.vim'                  "函數、變量列表
Bundle 'winmanager'                   "窗口管理

filetype plugin indent on             "代碼高亮須要的配置

" TagLIst settings.
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1

" winManager settings.
let g:winManagerWindowLayout='FileExplorer|TagList'
" nmap wm :WMToggle<cr>

" My Shortcut.
map <f2> :Tlist<cr>
map <f3> :WMToggle<cr>

"F5編譯和運行C程序,F6編譯和運行C++程序 
" 請注意,下述代碼在windows下使用會報錯 
" 須要去掉./這兩個字符 

" C的編譯和運行 
map <F5> :call CompileRunGcc()<CR> 
func! CompileRunGcc() 
exec "w" 
exec "!gcc % -o %<" 
exec "! ./%<" 
endfunc 

" C++的編譯和運行 
map <F6> :call CompileRunGpp()<CR> 
func! CompileRunGpp() 
exec "w" 
exec "!g++ % -o %<" 
exec "! ./%<" 
endfunc 

set autowrite   " Automatically save before commands like :next and :make
set hidden      " Hide buffers when they are abandoned
set mouse=a     " Enable mouse usage (all modes)
set hls
set shortmess=atI "啓動時不顯示幫助烏干達兒童提示

" Prefer spaces to tabs
set tabstop=4
set shiftwidth=4
set expandtab
set nu!

YouCompleteMe替換代碼提示

後來發現YCM是比較強大的代碼提示插件,試着配置了一下,感受不錯,如下是一些須要注意的地方:git

"插件部分換成下面的,YCM已經集成了SuperTab,語法檢查python能夠用 davidhalter/jedi 。 
Bundle 'Valloric/YouCompleteMe'  
Bundle 'ctags.vim'
Bundle 'taglist.vim'
Bundle 'winmanager'
  1. 使用命令 PluginInstall,完成插件的安裝,這樣其它插件就都算安裝好了,除了YCM。
  2. 編譯語法補全模塊,在終端下執行如下命令:
    $HOME/.vim/bundle/YouCompleteMe
    並執行 install.sh --clang-completer
  3. 拷貝~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py 到~/下,並作相應的修改。
    4.相應的在~/.vimrc中進行一些設置及快捷鍵的定義,這能夠參考上節的內容。

------------------------------------------------------------(分割線,內容已完,下面是一些備忘)
clang++ --std=c++0x -stdlib=libc++ new_feature.cppgithub

相關文章
相關標籤/搜索