花了点时间研究了强(zhuang)大(bi)的编辑器vim,简单的配置了一下,并记录下心得。不过这只是学习的开始,想要打造真正属于自己的编辑器还得不断学习。
安装
珍爱生命,远离折腾。
首先从安装开始,ubuntu系统应该都会带有vim,如果没有,就输入以下命令安装:
sudo apt-get install vim-gtk
ubuntu安装一向很简单。安装好vim就证明你马上就要入坑了!
命令行输入vim
,最初的界面是这样的:
配置完成的界面是这样的:
快捷键
vim的高效之处在于可以脱离鼠标,使用键盘操作一切。对熟练掌握vim的程序员来说,减少鼠标的使用会节省大量的时间,提高效率。
vimrc
Github地址:https://github.com/alpha87/vimrc
这是最初的配置文件,配置比较简陋,但是写一些简单的代码足够了。
命令行输入:
sudo vim ~/.vimrc
即可打开配置文件,编辑:
" AlPha-vim-config
" http://alpha87.cn
" 最新配置见 github
" 非vi
""""""""""""""""""""
set nocompatible
" 中文帮助
""""""""""""""""""""
set helplang=cn
" 查找时自动跳转
""""""""""""""""""""
set incsearch
" 查找不区分大小写
"""""""""""""""""""
set ignorecase
" 代码缩进
""""""""""""""""""""
set tabstop=4
set softtabstop=4
set shiftwidth=4
set textwidth=79
set expandtab
set autoindent
set fileformat=unix
" 系统剪贴板
""""""""""""""""""""
set clipboard=unnamed
" 修改编码
""""""""""""""""""""
set encoding=utf-8
"关闭代码折叠
""""""""""""""""""""
set nofoldenable
" 修改配色
""""""""""""""""""""
colorscheme elflord
" 显示行号
""""""""""""""""""""
set number
" 突出显示当前栏
""""""""""""""""""""
map <leader>c :set cursorline!<cr>
set cursorline
" 隐藏滚动条
""""""""""""""""""""
set guioptions-=r
set guioptions-=L
set guioptions-=b
" 语法高亮
""""""""""""""""""""
syntax on
set hlsearch
let python_highlight_all = 1
let g:pymode_syntax = 1
let g:pymode_syntax_all = 1
let g:pymode_syntax_indent_errors = g:pymode_syntax_all
let g:pymode_syntax_space_errors = g:pymode_syntax_all
" Vundle 插件管理
""""""""""""""""""""
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Bundle 'Raimondi/delimitMate'
Bundle 'kien/rainbow_parentheses.vim'
Bundle 'Lokaltog/vim-powerline'
Plugin 'scrooloose/nerdtree'
Plugin 'Yggdroot/indentLine'
Plugin 'Valloric/YouCompleteMe'
Bundle "klen/python-mode"
Bundle 'nvie/vim-flake8'
Bundle 'bronson/vim-trailing-whitespace'
Bundle 'hdima/python-syntax'
Bundle 'kien/ctrlp.vim'
call vundle#end()
filetype plugin indent on
" 文件搜索
"""""""""""""""""""
" 打开ctrlp搜索
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlP'
" 相当于mru功能,show recently opened files
map <leader>fp :CtrlPMRU<CR>
"set wildignore+=*/tmp/*,*.so,*.swp,*.zip " MacOSX/Linux"
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/]\.(git|hg|svn|rvm)$',
\ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz)$',
\ }
"\ 'link': 'SOME_BAD_SYMBOLIC_LINKS',
let g:ctrlp_working_path_mode=0
let g:ctrlp_match_window_bottom=1
let g:ctrlp_max_height=15
let g:ctrlp_match_window_reversed=0
let g:ctrlp_mruf_max=500
let g:ctrlp_follow_symlinks=1
" 状态栏
"""""""""""""""""""
let g:Powerline_symbols = 'unicode'
" 标志无效空格
"""""""""""""""""""
map <leader><space> :FixWhitespace<cr>
" \+space去掉末尾空格
" 缩进指示线 indentLine
"""""""""""""""""""
map <leader>i :IndentLinesToggle<cr>
" \+i 关闭缩进指示线,再按开启
let g:indentLine_char = '┆'
let g:indentLine_enabled = 1
" 目录树 nerdtree F2开启和关闭树"
"""""""""""""""""""
map <F2> :NERDTreeToggle<CR>
let NERDTreeChDirMode=1
" 显示书签"
let NERDTreeShowBookmarks=1
" 设置忽略文件类型"
let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']
" 窗口大小"
let NERDTreeWinSize=25
" YCM
"""""""""""""""""":
" 默认配置文件路径"
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
" 打开vim时不再询问是否加载ycm_extra_conf.py配置"
let g:ycm_confirm_extra_conf=0
set completeopt=longest,menu
" python解释器路径 \+r 运行程序
let g:ycm_path_to_python_interpreter='/usr/bin/python'
" 是否开启语义补全"
let g:ycm_seed_identifiers_with_syntax=1
" 是否在注释中也开启补全"
let g:ycm_complete_in_comments=1
let g:ycm_collect_identifiers_from_comments_and_strings = 0
" 开始补全的字符数"
let g:ycm_min_num_of_chars_for_completion=1
" 补全后自动关机预览窗口"
let g:ycm_autoclose_preview_window_after_completion=1
" 禁止缓存匹配项,每次都重新生成匹配项"
let g:ycm_cache_omnifunc=0
" 字符串中也开启补全"
let g:ycm_complete_in_strings = 1
" 离开插入模式后自动关闭预览窗口"
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
" 上下左右键行为"
inoremap <expr> <Down> pumvisible() ? '\<C-n>' : '\<Down>'
inoremap <expr> <Up> pumvisible() ? '\<C-p>' : '\<Up>'
inoremap <expr> <PageDown> pumvisible() ? '\<PageDown>\<C-p>\<C-n>' : '\<PageDown>'
inoremap <expr> <PageUp> pumvisible() ? '\<PageUp>\<C-p>\<C-n>' : '\<PageUp>'
" 括号匹配高亮
"""""""""""""""""
let g:rbpt_colorpairs = [
\ ['brown', 'RoyalBlue3'],
\ ['Darkblue', 'SeaGreen3'],
\ ['darkgray', 'DarkOrchid3'],
\ ['darkgreen', 'firebrick3'],
\ ['darkcyan', 'RoyalBlue3'],
\ ['darkred', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['brown', 'firebrick3'],
\ ['gray', 'RoyalBlue3'],
\ ['black', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['Darkblue', 'firebrick3'],
\ ['darkgreen', 'RoyalBlue3'],
\ ['darkcyan', 'SeaGreen3'],
\ ['darkred', 'DarkOrchid3'],
\ ['red', 'firebrick3'],
\ ]
let g:rbpt_max = 40
let g:rbpt_loadcmd_toggle = 0
" 括号自动补全
""""""""""""""""""
au FileType python let b:delimitMate_nesting_quotes = ['"']
这份配置文件只涉及到比较基础的功能,代码提示,快速运行,编码缩进等。需要注意的是代码提示在导入模块的时候不会提示,但是在之后的使用过程中会提示。这也有利于你记住导入包的名字啊,抛开pycharm,让你真正写代码的时候发现模块都不会拼写,多尴尬!
多行注释及取消注释
多行注释:
进入命令行模式,按
ctrl + v
进入 -visual block- 模式,选中多行,把需要注释的行标记起来;按大写字母
I
,再插入注释符,例如#
;按
esc
键(等1秒钟后)全部注释。
取消多行注释:
进入命令行模式,按
ctrl + v
进入 -visual block- 模式,选中列的个数;按字母j,或者k选中注释符号;
按
d
键就可全部取消注释。