1、vim是linux程序员编程的上古神器
Vim是Linux系统上的最著名的文本/代码编辑器,也是早年的Vi编辑器的加强版,被誉为文本/代码编辑器之中最为优秀经典的上古神器。 它之所以会获得如此美誉,我想主要有以下原因:1.它古老而神秘,学习曲线陡峭,难以驾驭,但是一旦学会则受益匪浅。如今被看作是高手、Geek们专用的编辑器。所以尽管 Vim 已经是古董级的软件,但还是有无数新人迎着困难去学习使用。 2.轻便,无需多言,当仅仅只需要对某一文本文件(比如脚本代码、配置文件)进行简单的编辑的时候,所使用的工具当然是越轻便越好。Vim同时也是阅读文本文件的利器。 3.经典巧妙的编辑方式及强大的功能。它全程使用键盘操作,用户必须记住一堆快捷键、按键组合以及各种命令才能开始使用,一旦使用熟练则编辑效率远超其余编辑器,而且具有各种插件、语法高亮、代码补全、配色方案等极其丰富的资源以及灵活的配置;
2、vim成也插件,败也插件
有人说,Vim是“成也插件、败也插件”。Vim灵活的配置和丰富的插件极大地增强了它的功能,但是也极大地增加了我们管理Vim的难度。首先,在使用Vim之前,必须经过适当的配置,而Vim的配置又极其繁琐。所以网上有很多诸如“万能配置”、“最强配置”的文章,这些都可以参考。但是这些文章中有些存在很多错误,甚至前后内容重复、冲突,而且这些文章是“授人以鱼,而不是授人以渔”,它们给出的配置虽然可以照抄,但是经常会让人不明所以。 Vim的插件丰富,在网上不乏使用各种插件将Vim配置成强大IDE的文章,但是Vim的插件管理非常困难,因为每安装一个插件,都需要将该插件的文件分别放到Vim安装路径下的plugin、autoload、syntax、doc等目录下。好在是Vundle横空出世,它不仅解决了Vim插件在文件系 统中分散的问题,同时能够自动搜索和下载插件。
3、关于vim的两个文件
1. viminfo
在vim中操作的行为,vim会自动记录下来,保存在 ~/.viminfo 文件中。这样为了方便下次处理,如:vim打开文件时,光标会自动在上次离开的位置显示。原来搜索过的字符串,新打开文件时自动高亮显示。
~/.viminfo 文件是系统自动生成。
2. vimrc
vimrc文件是vim的环境设置文件。整体的vim的设置是在 /etc/vimrc 文件中。不建议修改/etc/vimrc 文件,每个用户可以在用户根目录中设置vim,新建 ~/.vimrc. vim的配置选项较多,
:set all
可以查看所有的配置项。
常用配置:
:set nu
:set nonu 是否显示行号
:set wrap
:set nowrap 是否换行
:set hlsearch
:set nohlsearch 搜索是否高亮显示
:set autoindent
:set noautoindent 是否自动缩排
:set backup 是否自动备份修改文件,默认为否,如果set bakcup, 修改时会自动生成 filename~ 备份文件。
:set ruler 显示右下角状态栏
:set showmode 显示左下角状态栏,--INSERT--之类
:set 显示与系统默认值不同的值,
:syntax on
:syntax off 程序语法开关
:set bg=dark
:set bg=light 显示颜×××调
4、安装插件管理---vundle
github上的vundle:https://github.com/VundleVim/Vundle.vim
如果安装这个网页上全都有,因为是英文版的所以作为一个爱国的中国人的我,是泪流满面的才搞明白,这都是什么鬼,亲爱的读者~,麻烦各位去找百度亲妈,旗下的百度翻译还是阔以滴~
这个是我自己的.vimrc文件,虽然很简单,但是绝对是可以用的
//前半部分是github上大神给出的
//后半部分是学习并且总结
//有任何不懂得set后面的命令
//eg: set scrolloff 可以利用
// : help 命令名 来查看具体是什么鬼
//前面的"是注释作用哦就像c语言的//
"关闭vim兼容模式,关闭vim所有扩展功能 set nocompatible "关闭文件类型 filetype off " 将vundle的路径添加到vim的路径中去 set rtp+=~/.vim/bundle/Vundle.vim "执行vundle初始化 call vundle#begin() " 让vundle管理vundle这个插件 Plugin 'VundleVim/Vundle.vim' Plugin 'tpope/vim-fugitive' "plugin from http://vim-scripts.org/vim/scripts.html Plugin 'L9' "plugin 'taglist.vim' Plugin 'taglist.vim' "plugin from 'thenerdtree' Plugin 'nerdtree' "plugin 'vim-airline-themes' Plugin 'vim-airline/vim-airline-themes' "plugin 'Valloric/YouCompleteMe' Plugin 'Valloric/YouCompleteMe' " Git plugin not hosted on GitHub Plugin 'git://git.wincent.com/command-t.git' " git repos on your local machine (i.e. when working on your own plugin) "Plugin 'file:///home/gmarik/path/to/plugin' " The sparkup vim script is in a subdirectory of this repo called vim. " Pass the path to set the runtimepath properly. Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} " Install L9 and avoid a Naming conflict if you've already installed a " different version somewhere else. "Plugin 'ascenator/L9', {'name': 'newL9'} " All of your Plugins must be added before the following line call vundle#end() " To ignore plugin indent changes, instead use: filetype plugin indent on " Brief help " :PluginList - lists configured plugins " :PluginInstall - installs plugins; append `!` to update or just " :PluginUpdate " :PluginSearch foo - searches for foo; append `!` to refresh local cache " :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal " see :h vundle for more details or wiki for FAQ "记录历史的行数 set history=1000 "显示标尺 set ruler "设置行号 set number "显示当前操作模式 set showmode "总显示最后一个窗口的状态行 set laststatus=2 "设置命令行的高度 set cmdheight=2 "光标移动到buffer的顶部和底部时保持3行距离 set scrolloff=3 "在被分割的窗口间显示空白,便于阅读 set fillchars=vert:/,stl:/,stlnc:/ "关闭错误响铃 set noerrorbells "关闭使用可视响铃代替呼叫 set novisualbell "当vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声 set t_vb= "启动的时候不显示那个援助索马里儿童的提示 set shortmess=atI "语法高亮 syntax on "color molokai "配色方案 colorscheme desert "背景 set background=dark "为光标所在行加下划线 set cursorline "开启高亮光标列 set cursorcolumn "可用空格删除 set backspace=2 "允许 backspace 和光标键跨越行边界(不建议) set whichwrap+=<,>,h,l "用空格代替tab set expandtab set smarttab "将换行自动缩进设置成4个空格 set shiftwidth=4 "设置tab键为4个空格 set tabstop=4 " set softtabstop=4 "把当前行的对齐格式应用到下一行 set autoindent "在C编码时,自动完成indent缩进内嵌代码块 set cindent let g:rehash256 = 1 let g:molokai_original = 1 " set the colorcolumn highlight ColorColumn ctermbg=237 guibg=gray30 execute "set colorcolumn=" . join(map(range(2,259), '"+" . v:val'), ',') "Files,backups and encoding set nobackup set noswapfile set autoread set autowrite set autochdir set fileencodings=utf-8 set fileformats=unix,dos,mac filetype plugin on filetype indent on " set showmatch set matchtime=2 set hlsearch set incsearch set ignorecase set smartcase set magic set lazyredraw set nowrapscan set iskeyword+=_,$,@,%,#,-,. if has("gui_running") colorscheme solarized endif set guifont=DejaVu\Sans\Mono\15 set guioptions=aegic "配置taglist "让taglist出现在vim的左边 let Tlist_Use_Right_Window=1 "当同时显示多个文件的tag时,只显示当前文件,其他文件折叠 let Tlist_File_Fold_Auto_Close=1 "只显示一个文件中的tag,默认为显示多个 let Tlist_Show_One_File = 1 "Tag的排序规则,以名字排序。默认是以在文件中出现的顺序排序 let Tlist_Sort_Type = 'name' "Taglist窗口打开时,立刻切换为有焦点状态 let Tlist_GainFocus_On_ToggleOpen = 1 "如果taglist窗口是最后一个窗口,则退出vim let Tlist_Exit_OnlyWindow = 1 "设置窗体宽度为32,可以根据自己喜好设置 let Tlist_WinWidth = 32 "这里比较重要了,设置ctags的位置 let Tlist_Ctags_='/bin/ctags' "热键设置,我设置成ctrl+t来呼出和关闭Taglist map <C-t> :TlistToggle<CR> "设置the nerd tree为vim自动开启 autocmd vimenter * NERDTree "当没有特定文件也能开启nerdtree autocmd StdinReadPre * let s:std_in=1 autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif "设置快捷键打开nerdtree:ctrl+n map <C-n> :NERDTreeToggle<CR> "关闭vim只有一个窗口打开资源管理器 autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif "设置不同文件的不同高亮 function! NERDTreeHighlightFile(extension, fg, bg, guifg, guibg) exec 'autocmd filetype nerdtree highlight ' . a:extension .' ctermbg='. a:bg .' ctermfg='. a:fg .' guibg='. a:guibg .' guifg='. a:guifg exec 'autocmd filetype nerdtree syn match ' . a:extension .' #^\s\+.*'.a:extension .'$#' endfunction call NERDTreeHighlightFile('jade', 'green', 'none', 'green', '#151515') call NERDTreeHighlightFile('ini', 'yellow', 'none', 'yellow', '#151515') call NERDTreeHighlightFile('md', 'blue', 'none', '#3366FF', '#151515') call NERDTreeHighlightFile('yml', 'yellow', 'none', 'yellow', '#151515') call NERDTreeHighlightFile('config', 'yellow', 'none', 'yellow','#151515') call NERDTreeHighlightFile('conf', 'yellow', 'none', 'yellow', '#151515') call NERDTreeHighlightFile('json', 'yellow', 'none', 'yellow', '#151515') call NERDTreeHighlightFile('html', 'yellow', 'none', 'yellow', '#151515') call NERDTreeHighlightFile('styl', 'cyan', 'none', 'cyan', '#151515') call NERDTreeHighlightFile('css', 'cyan', 'none', 'cyan', '#151515') call NERDTreeHighlightFile('coffee', 'Red', 'none', 'red', '#151515') call NERDTreeHighlightFile('js', 'Red', 'none', '#ffa500', '#151515') call NERDTreeHighlightFile('php', 'Magenta', 'none', '#ff00ff', '#151515') "设置这些变量在vim中 let g:NERDTreeDirArrowExpandable = '' let g:NERDTreeDirArrowCollapsible = '' let g:solarized_base16 = 1 "设置进度条主题 let g:airline_theme="luna" "这个是安装字体后 必须设置此项" let g:airline_powerline_fonts = 1 "打开tabline功能,方便查看Buffer和切换,这个功能比较不错" "我还省去了minibufexpl插件,因为我习惯在1个Tab下用多个buffer" let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#buffer_nr_show = 1 " "设置切换Buffer快捷键" nnoremap <C-N> :bn<CR> nnoremap <C-P> :bp<CR>" " 关闭状态显示空白符号计数,这个对我用处不大" let g:airline#extensions#whitespace#enabled = 1 let g:airline#extensions#whitespace#symbol = '!' "最新状态除非进行分匡不会出现(1分钟内),所以设为2,就会一直出现 set laststatus=2 "终端默认颜色8色,现在设成256色支持 set t_Co=256 "airline,默认是禁止的,所以需要加上下面这个语句 let g:airline#extensions#tabline#enabled = 1 "分离器可以确定独立的进度条,这里是你定义'|'键 let g:airline#extensions#tabline#left_sep = ' ' let g:airline#extensions#tabline#left_alt_sep = '|'
5、安装插件遇到的各种问题
问题1:英文看不懂(百度翻译)
问题2:目录不知道安哪里(一个是#下用户,一个是$下用户,一般都安装到$下的.virmc即可)
问题3:没有.vimrc文件怎么办(请follow me)
cd vim .vimrc
问题4:安装不到我给出的路径(删了重新想想哪里出错了,一定要对着github上的装,别看博客,大部分除了,给两个命令直接安装,并不能帮你成为vim大神)
问题5:不过具体安装一个插件都要用(:PluginInstall 去安装)
看到Done!,你才能心安~~~~
问题6:初级,just like me,不要想着装个神级vim,配出花来,能用,且不难看,就等真正感受到vim编程的命令很熟悉之后,在去折腾吧~~~~
6、vim中大家都在装的插件有
(1)taglist:文件结构
(2)the nerd tree:资源管理器
(3)airline:状态条
(4)ctrlP:查找工具
。。。。。。。。。。vim插件实在是太多了
各种下载或者git clone 请各位去github上search,排名最高的绝对是你要的~~~
7、我配好的Vim,不好勿喷,求送花
转载于:https://blog.51cto.com/momo462/1785338