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新建该文件,并将下面的代码粘贴到文件中。

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.

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.html

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需要的相关插件

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、多文件编辑模式
(1)argument list模式,就是在打开Vim编辑器时,携带多个文件路径参数。
(2)buffer list模式,就是在进入Vim编辑器后,打开多个缓冲区进行编辑。
2、单一缓冲区打开多个文件
:files显示目前打开了哪些文件
:n切换到下一个缓冲区内容
:N切换到上一个缓冲区内容
:2n切换到下下个缓冲区内容
:bn下一个缓冲区内容(buffer next)
:bp上一个缓冲区内容(buffer previous)
3、多个缓冲区打开多个文件
: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++,但其代码提示还没有考虑。

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是比较强大的代码提示插件,试着配置了一下,感觉不错,以下是一些需要注意的地方:

"插件部分换成下面的,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.cpp

    原文作者:zhoutk
    原文地址: https://segmentfault.com/a/1190000002648719
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞