vim 使用方法
1 配置vim
- 打开
vimrc
vim ~/.vimrc
- 写入配置信息
set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
call vundle#end()
filetype plugin indent on
"scope-------------------------------------------------------------
if has("cscope")
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
if filereadable("cscope.out")
cs add cscope.out
endif
set csverb
endif
:set cscopequickfix=s-,c-,d-,i-,t-,e-
nmap <silent> <F5> : cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <silent> <F6> : cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <silent> <F7> : cs find c <C-R>=expand("<cword>")<CR><CR>
"tagbar----------------------------------------------------------
Plugin 'majutsushi/tagbar' " Tag bar"
let g:tagbar_width=25
autocmd BufReadPost *.cpp,*.c,*.h,*.cc,*.cxx call tagbar#autoopen()
"nerdtree--------------------------------------------------------
Plugin 'scrooloose/nerdtree'
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
let NERDTreeWinSize=15
let NERDTreeShowLineNumber=1
let NERDTreeAutoCenter=1
let NERDTreeShowBookmarks=1
"ALE(asynchronization lint Engine)-------------------------------
Plugin 'w0rp/ale'
let g:ale_sign_column_always = 1
let g:ale_sign_error = 'x'
let g:ale_sign_warning = 'w'
let g:ale_echo_msg_format = '[%linter%] %code: %%s'
let g:ale_lint_on_insert_leave = 1
let g:ale_lint_on_text_changed = 'normal'
let g:ale_c_gcc_options = '-Wall -O2 -std=c99'
let g:ale_cpp_gcc_options = '-Wall -O2 -std=c++14'
let g:ale_c_cppcheck_options = ''
let g:ale_cpp_cppcheck_options = ''
"youcompleteme---------------------------------------------------
Plugin 'Valloric/YouCompleteMe'
let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
"vim-gutentags---------------------------------------------------
Plugin 'ludovicchabant/vim-gutentags'
let g:gutentags_project_root=['.root','.svn','.git','.hg','.project']
let g:gutentags_ctags_extra_args=['--fields=+niazS','--extra=+q']
let g:gutentags_ctags_extra_args+=['--c++-kinds=+px']
let g:gutentags_ctags_extra_args+=['--c-kinds=+px']
"Others---------------------------------------------------------
set nu!
syntax enable
syntax on
colorscheme desert
:set autowrite
2 vim 命令
2.1 移 动
h,l,j,k
: 左右下上w,b
: 移动到下/上一个单词nG
(n Shift+g): 游标移动到第 n 行gg
: 游标移动到第一行G(Shift+g)
: 游标移动到最后一行f+字母
向后搜索字母
并跳转到第一个匹配的位置F+字母
向前搜索字母
并跳转到第一个匹配的位置
2.2 快速退出
- 普通模式下输入
Shift+zz
即可保存退出vim
2.3 进入插入模式
i
: 在当前光标处进行编辑I
,A
: 在行首/末插入a
: 在光标后插入编辑o
,O
: 在当前行后/前插入一个新行cw
: 删除一个单词,同时进入插入模式
2.4 删除
x
: 反退格键(Delete键),X
退格键(Backspace键)dw
: 删除一个单词(不适用中文)类似于上一节说的cw
,只是删除后还在普通模式d$
: 删除至行尾,d^
删除至行首dG
: 从当前行删除到文档结尾处,d1G
从当前行删至文档首部dd
: 删除一行- NOTE:
- 前缀(操作):
d
代表删除 - 中缀(行号)
- 后缀(定位):
d
代表行,G
代表尽头,$
代表行尾,^
代表行首,w
代表单词,e
当前单词末尾
2.5 复制
复制为y
,后可以接定位符
yy
: 复制游标所在的整行(3yy
表示复制3行)y^
: 复制至行首,或y0
,不含光标所在处字符y$
: 复制至行尾,含光标所在处字符yw
: 复制一个单词y2w
: 复制两个单词yG
: 复制至文本末y1G
: 复制至文本开头:9, 15 copy 16 或 :9, 15 co 16
: 第9行到第15行的文本内容复制
到第16行的后面:9, 15 move16 或 :9, 15 m 16
: 第9行到第15行的文本内容移动
到第16行的后面
2.6 粘贴
p
: 粘贴至光标后(下)P
: 粘贴至光标前(上)
2.7撤销
u
: 撤销命令ctrl+r
: 撤回之前的命令
2.8 查看路径
- 首先,在命令行模式(Esc)下
按1
然后,ctrl + G
2.9替换命令
- 在10 - 20行添加
//
注释
:10,20s#^#//#g
- 在10 - 20行删除
//
注释
:10,20s#^//##g
- 在10 - 20行添加
#
注释
:10,20s/^/#/g
- 在10 - 20行删除
#
注释
:10,20s/^#//g
- 全局替换
:%s/source/target/g
- 批量注释
:起始行号,结束行号s/^/注释符/g
- 取消注释:
:起始行号,结束行号s/^注释符//g
- 如果匹配
//
那么使用#
作分隔符,这样不需要对/
作转义处理
2.10 vim中打开另一个文件
- 垂直切分窗口
:vsp +文件路径 //vsplit + 文件路径
:vsp /etc/httpd/conf.d/vhost.conf
- 水平切分窗口
:sp +文件路径 //split + 文件路径
:sp /etc/httpd/conf.d/vhost.conf
2.11 vim中文本对齐
- 方法一:
命令模式下:=:1,$
- 方法二:
gg(把关标定位到最上面),V(进入VISUAL模式),shift+g(选中整篇文本),然后=
- 方法三:
gg=G
2.12 大小写转化
- U 将可视模式下选择的字母全改成大写字母
- u 将可视模式下选择的字母全改成小写