Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。来源:百度百科
01安装
#安装
sudo apt-get install vim-gtk
#查看安装信息
vim --version
#vim插件apt-vim管理:
curl -sL https://raw.githubusercontent.com/egalpin/apt-vim/master/install.sh | sh
#安装YouCompleteMe#自动补全工具
apt-vim install -y https://github.com/Valloric/YouCompleteMe.git
#算了大锅乱炖吧
sudo apt-get install python-twisted xclip vim-gnome astyle python-setuptools
02配置
syntax on"语法高亮
set mouse=a " always use mouse
set number"显示行号
"自动缩进与C语言风格缩进
set autoindent
set cindent
"缩进宽度
set tabstop=4
set softtabstop=4
set shiftwidth=4
"switch case 对齐风格
set cino=g0,:0
"Tagbar
let g:tagbar_width=35 "宽度
let g:tagbar_ctags_bin='/usr/bin/ctags' "设置tagbar使用的ctags的插件
let g:tagbar_right=1 "位置在右侧
let g:tagbar_autofocus=0 "是否自动聚焦
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen() "打开文件自动打开tagbar
nmap <F6> :TagbarToggle<CR> "快捷键
" NERD tree
let NERDChristmasTree=0
let NERDTreeWinSize=35
let NERDTreeChDirMode=2
let NERDTreeIgnore=['\~$']
let NERDTreeShowBookmarks=1
let NERDTreeWinPos="left"
" Automatically open a NERDTree if no files where specified
autocmd vimenter * if !argc() | NERDTree | endif
" Close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" Open a NERDTree
nmap <F5> :NERDTreeToggle<cr>
"YouCompleteMe
"自动开启语义补全
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_complete_in_strings = 1
let g:ycm_collect_identifiers_from_tags_files = 1
"开启基于tag的补全,可以在这之后添加需要的标签路径
let g:ycm_collect_identifiers_from_tags_files = 1
"开始补全的字符数
let g:ycm_min_num_of_chars_for_completion = 2
"补全后自动关闭预览窗口
let g:ycm_autoclose_preview_window_after_completion = 1
"禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=0
"离开插入模式后自动关闭预览窗口
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
"语法关键字补全
let g:ycm_seed_identifiers_with_syntax = 1
"在实现和声明之间跳转,并分屏打开
let g:ycm_goto_buffer_command = 'horizontal-split'
nnoremap <Leader>g :YcmCompleter GoTo<CR>
execute pathogen#infect()
call pathogen#helptags
常用配置
:set number 显示行号
:set nonumber 取消行号
:set numberwidth=3 设置行号列宽
:set hlsearch 高亮显示搜索内容
:set incsearch 输入关键字的时候高亮显示
:set ignorecase 搜索时忽略大小写
:set wrapscan 循环搜索(默认值)
:set nowrapscan 只搜索一次
:set showmatch 在输入右括号时,短暂地跳到对应括号处
:set matchtime=10 跳转时间,单位:十分之一秒
:set cursorcolumn 高亮光标所在列
:set nocursorcolumn 取消高亮光标所在列
:set cursorline 高亮光标所在行
:set nocursorline 取消高亮光标所在行
:set wrap 自动换行
:set nowrap 取消自动换行
:set autoindent 保持上一行的缩进
:set shiftwidth=4 设置缩进单位
:set ruler 在右下角显示光标位置
:set noruler 不显示光标位置
:set scrolloff=3 使光标始终和上下边缘相距3行
:set list 设置制表符可见
:set autochdir 将当前目录自动切换为文件所在目录
:set scrollbind 设置多窗口同步滚动
:set noscrollbind 取消多窗口同步滚动
:set autoread 如果文件被修改,自动读入,该项可能会不起作用
:set backspace=indent,eol,start 在Insert模式可以删除行首的空格、断行、进入Insert模式之前的位置
:set readonly 设置只读,该项写在配置文件中可能不起作用,在编辑时有效
:set fileformat? 显示当前的文件格式
:set nomodifiable 设置不可修改
:syntax on 打开语法高亮
:syntax off 取消语法高亮
:filetype on 自动识别文件类型
:colorscheme desert 选择颜色方案
资料出处
03 文件命令
命令 |
操作 |
vim file |
打开文件 |
vim file1,file2,file3 |
同时打开多个文件 |
:open file |
在新窗口中打开文件 |
:bn |
切换到上一个文件 |
:bp |
切换到下一个文件 |
:args |
查看当前打开的文件列表 |
:w filename |
保存到filename |
:#,# w filename |
保存部分文件内容#~#之间 |
:r filename |
向当前插入其他文件的内容 |
:q! |
不保存退出 |
:wq |
保存并退出 |
:e! |
放弃所有修改退出 |
05 移动命令
命令 |
操作 |
h/j/k/l |
向⬅️/⬇️/⬆️/➡️移动 |
w/b |
下一个/上一个单词开头 |
e/ge |
下一个/上一个单词结尾 |
W/B |
和w/b相同,但跳过符号 |
0 |
本行第一个字符上 |
^ |
本行第一个非空白字符 |
$ |
行尾 |
% |
查找匹配的括号 |
{/} |
上一段/下一段 |
gg |
文件头部 |
G |
文件结尾 |
:line |
到第line行 |
C-d/C-u |
向下/向上滚到半屏 |
C-f/C-b |
向下/向上滚到一屏 |
06编辑命令
命令 |
操作 |
i/a |
当前位置之前/之后插入 |
I/A |
当前行行首/行尾插入 |
o/O |
当前行之后/之前插入一行 |
s/old/new |
old替换new,只替换一个 |
[%/#,#]s/old/new/g |
old替换new,替换当前行所有,%是全文,#,#是指两行之间 |
x |
删除当前字符 |
X |
删除当前字符的前一个字符 |
dl/dh |
=x/X |
dd/dj/dk |
删除当前行/上一行/下一行 |
yy |
拷贝当 前行 |
p/P |
在当前行后/前粘贴 |
v选择后+y |
可视模式选择后复制 |
:1,10 co 20 |
1到10行拷贝到20行之后 |
:1,10 m 20 |
1到10行移动到20行之后 |
</> |
缩进/反缩进 |
C-n/C-p |
在编辑模式下自动补齐 |
07 查找命令
命令 |
操作 |
/text |
正向查找text,n下一个,N上一个 |
?text |
反向查找text,n下一个,N上一个 |
*/# |
对当前词正向/反向查找 |
fx |
向后搜索x |
:set ignorecase |
忽视大小写 |
:set hlsearch |
高亮搜索 |
:set incsearch |
逐步搜索,对当前输入的进行搜索 |
:set noxxxx |
xxxx对应以上操作,指取消选项 |
:set wrapscan |
重新搜索 |
08 窗口命令
命令 |
操作 |
new/split/vsplit |
打开一个新窗口,最后一个水平 |
C-w+方向 |
移动到指定窗口 |
:close/q |
关闭窗口,如果只有个一个窗口,q会退出vim |
09控制命令
命令 |
操作 |
u |
撤销最后执行的命令 |
U |
修正整行 |
C-r |
Redo命令 |
C-g |
显示光标所在行位置及文件状态信息 |
. |
重复上一次命令 |
v |
可视化模式 |
C-v |
可视化块模式 |
出处
网友评论