4000 vim使用总结
2017-03-22 22:13
183 查看
vim使用命令
【自动补全操作】Ctrl + n / Ctrl + p 自动补全字符串
Ctrl +x Ctrl +f 自动补全文件名
【多文件操作】
打开多个文件:
vim file1 file2 … filen 在同一个窗口中打开所有想要打开的文件
vim -o file1 file2 … filen 打开一个编辑会话,水平分割窗口,一个文件占用一个窗口
vim -O file1 file2 … filen 打开一个编辑会话,垂直分割窗口,一个文件占用一个窗口
vim -o5 file1 file2 将水平分配5个相同的窗口,有3个是闲置的
文件切换:
:e file 在当前窗口载入显示file文件
:ls 显示打开的所有文件列表,带编号
:b1~n 切换至第n个文件
:bn 下一个文件
:bp 上一个文件
Ctrl+6 两文件间的切换
【多窗口操作】
切割窗口操作:
:sp(lit) 水平切割窗口
:vsp(list) 垂直切割窗口
:qa(ll) 关闭所有窗口
默认新建立的窗口显示相同的文件,可以通过以下命令显示不同的文件:
:
split(vsplit) [++opt] [+cmd] [file]
多窗口切换:
按住Ctrl + W,然后再加上h, j, k, l,分别表示向左、下、上、右移动窗口,也可以使用上、下、左、右键
Ctrl + w + h:向左移动窗口
Ctrl + w + j: 向下移动窗口
Ctrl + w + j: 向上移动窗口
Ctrl + w + l: 向右移动窗口
Ctrl + w + w:这个命令会在所有窗口中循环移动
Ctrl + w + t:移动到最左上角的窗口
Ctrl + w + b:移动到最右下角的窗口
Ctrl + w + p:移动到前一个访问的窗口
【调整窗口大小】
改变当前窗口的尺寸,同时当然也会影响到其他窗口。
在gvim和vim中,可以用鼠标点击窗口的顶部白色条并窗口直接调整尺寸。
也可以直接用命令,调整尺寸命令也是以Ctrl + W开头:
Ctrl + W + = :让所有窗口调整至相同尺寸(平均划分)
Ctrl + W + -:将当前窗口的高度减少一行,也可在ex命令中,:resize -4明确指定减少的尺寸
Ctrl + W + +:将当前窗口的高度增加一行。同样在ex命令中,:resize +n 明确指定增加尺寸
Ctrl + W + < :将当前窗口的宽度减少
Ctrl + W + > :将当前窗口的宽度增加
Ctrl + W + |:将当前窗口的宽度调到最大,也可他哦你通过ex命令:vertical resize n明确指定改变宽度
使用技巧
【新建文件自动添加头部】" 新建python文件自动添加头部信息 let g:python_author = 'cold' # 姓名 let g:python_email = 'wh_linux@126.com' # 邮箱 function HeaderPython() normal 1G call setline(".", "#!/usr/bin/env python") normal o call setline(".", "# -*- coding: utf-8 -*-") normal o call setline(".", "#") normal o call setline(".", "# Author : ".g:python_author) normal o call setline(".", "# E-mail : ".g:python_email) normal o call setline(".", "# Create Date : ".strftime("%y-%m-%d %H:%M:%S")) normal o call setline(".", "# File Name : ".expand("%")) normal o call setline(".", "# Desc :") let lnum = line(".") normal o call setline(".", "#") normal o call cursor(lnum, len(getline(lnum))) normal a "normal G "normal o "normal o endf autocmd bufnewfile *.py call HeaderPython()1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
【多行多列操作】
按v进入visual状态,选择多行,用>或<缩进或缩出
通常根据语言特征使用自动缩进排版:在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。
:20,30 s/^/#/g 第20到30行用 # 注释掉。
:20,30 s/^#//g 取消注释
:4,10 s/^[^I ]+// 去掉行首的空白字符
:co 12 “把当前行 copy 到行 12 的地方。
可以看到 vim 命令针对当前行,在前面加个范围就可以针对多行。
用 . 表示当前行, % 表示全文, $ 表示末尾
:.,30 s/^/#/g
vim配置文件使用
vim --version查看vim支持的功能以及配置文件目录
set nocompatible " 关闭 vi 兼容模式 " colorscheme morning " 设定配色方案/usr/share/vim/vim74/colors set number " 显示行号 set cursorline " 突出显示当前行 set ruler " 打开状态栏标尺 set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4 set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格 set tabstop=4 " 设定 tab 长度为 4 set expandtab " 将tab键替换成空格 " :set ts=4 " :set noexpandtab " :%retab! " :set list 显示制表符,显示方式如下设置 " set listchars=tab:>-,trail:- " set listchars=tab:\|\ ,trail:.,extends:>,precedes:<,eol:$ set nobackup " 覆盖文件时不备份 set autochdir " 自动切换当前目录为当前文件所在的目录 syntax on " 自动语法高亮 filetype plugin indent on " 开启插件 set backupcopy=yes " 设置备份时的行为为覆盖 set ignorecase smartcase " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感 set nowrapscan " 禁止在搜索到文件两端时重新搜索 set incsearch " 输入搜索内容时就显示搜索结果 set hlsearch " 搜索时高亮显示被找到的文本 set noerrorbells " 关闭错误信息响铃 set novisualbell " 关闭使用可视响铃代替呼叫 set t_vb= " 置空错误铃声的终端代码 " set showmatch " 插入括号时,短暂地跳转到匹配的对应括号 " set matchtime=2 " 短暂跳转到匹配括号的时间 set magic " 设置魔术 set hidden " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存 set guioptions-=T " 隐藏工具栏 set guioptions-=m " 隐藏菜单栏 set smartindent " 开启新行时使用智能自动缩进 set backspace=indent,eol,start " 不设定在插入状态无法用退格键和Delete 键删除回车符 set cmdheight=1 " 设定命令行的行数为 1 set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏) set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\%c:%l/%L%)\ " 设置在状态行显示的信息 set nofoldenable " 开始折叠 set foldmethod=syntax " 设置语法折叠 set foldcolumn=0 " 设置折叠区域的宽度 setlocal foldlevel=1 " 设置折叠层数为 " set foldclose=all " 设置为自动关闭折叠 " nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> " 用空格键来开关折叠1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
vim插件的使用
ctags
【安装】安装:
yum install -y ctags
【生成tags文件】
ctags -R 递归的为当前目录及子目录下的所有代码文件生成tags文件
ctags .c .h 为某些源码生成tags文件
为了使得字段补全有效,在生成tags时需要一些额外的参数,推荐的c++参数主要是:
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q
其中:
选项c++-kinds 用于指定C++语言的 tags记录类型, –c-kinds用于指定C语言的, 通用格式是 –{language}-kinds
选项 fileds 用于指定每条标记的扩展字段域
extra 选项用于增加额外的条目: f表示为每个文件增加一个条目, q为每个类增加一个条目
【使用方法】
在vim打开源码时,指定tags文件,才可正常使用,通常手动指定,在vim命令行输入:
:set tags=./tags(当前路径下的tags文件)
若要引用多个不同目录的tags文件,可以用逗号隔开
或者,设置 ~/.vimrc,加入一行,则不用手动设置tags路径:
set tags=~/path/tags
若要加入系统函数或全局变量的tag标签,则需执行:
ctags -I __THROW --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+px --fields=+S -f ~/.vim/systags -R /usr/include /usr/local/include *
并且在~/.vimrc中添加(亦可用上面描述的手动加入的方式):
set tags+=~/.vim/systags
这样,便可以享受系统库函数名补全、原型预览等功能了。
如果经常在不同工程里查阅代码,那么可以在~/.vimrc中添加:
set tags=tags;
set autochdir
设置好了tags文件,在定位变量/函数的定义时,最常用的快捷键是:
Ctrl + ]
跳转到变量或函数的定义处,或者用命令
:ta name
而使用快捷组合键
Ctrl + o/t
返回到
c1c7
跳转前的位置。
另外,ctags不会生成局部变量的索引,不过可以使用gd组合键(对光标所在处的word进行快捷查找定位)来定位,也是相当快捷的。
$ vim -t myAdd
用vim打开文件时,添加参数-t funcName会自动打开定义该函数的文件并定位到定义首行,上面这句就是找到myAdd定义的文件打开并将光标置于定义的第一行处。
:tags
会列出查找/跳转过程(经过的标签列表)
另外,附上vim环境中其他较为好用的快捷键:
* 定位至当前光光标所指单词的下一次出现的地方
# 定位至当前光光标所指单词的上一次出现的地方
n 定位至跳至已被标记出的单词下一次出现的地方
shift+n 定位至跳至已被标记出的单词上一次出现的地方
关于更详细的ctags用法,vim中使用
:help tags
taglist
【功能】a source code browser(supports C/C++,
Java, perl,
Python, tcl, sql,
PHP, etc): 提供了源码的结构化浏览功能,可将源码中定义的类、函数、变量等以树结构显示,层次关系可一目了然,而且于快速定位并查看。
【下载安装】
taglist插件是以vim脚本的形式存在,因此只需要将其下载下来放到相应的目录即可。taglist基于ctags才能发挥作用,因此在使用taglist之前,确保已经安装了ctags。
下载地址(两个可选择任意一个):
Official site http://vim-taglist.sourceforge.net/
VIM online http://www.vim.org/scripts/script.php?script_id=273
将文件放到/usr/share/vim/vim74对应的文件夹下即可
在vim配置文件中配置taglist选项:
"如果ctags不在Path路径下,则配置ctags的路径 if MySys() == "windows" let Tlist_Ctags_Cmd = 'ctags' elseif MySys() == "linux" let Tlist_Ctags_Cmd = '/usr/bin/ctags' endif let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的 let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口 let Tlist_Sort_Type = "name" "taglist以tag名字进行排序,缺省是按tag在文件中出现的顺序进行排序 let Tlist_Use_SingleClick = 1 "设置单击tag就跳转到定义处,确实双击 let Tlist_Auto_Open=1 "启动vim自动打开taglist窗口 let Tlist_Close_On_Select=1 "在选择了tag后自动关闭taglist窗口 let Tlist_File_Fold_Auto_Close=1 "当同时显示多个文件中的tag时,可使taglist只显示当前文件tag,其它文件的tag都被折叠起来。 let Tlist_GainFocus_On_ToggleOpen=1"在使用:TlistToggle打开taglist窗口时,输入焦点在taglist窗口中 let Tlist_Process_File_Always=1 "taglist始终解析文件中的tag,不管taglist窗口有没有打开 let Tlist_Use_Horiz_Window = 1 "设置taglist窗口横向显示 " Tlist_WinHeight和Tlist_WinWidth可以设置taglist窗口的高度和宽度1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
在taglist窗口中可以使用的快捷键:
快捷键 | 功能说明 |
---|---|
CR | 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样 |
o | 在一个新打开的窗口中显示光标下tag |
Space | 显示光标下tag的原型定义 |
u | 更新taglist窗口中的tag |
s | 更改排序方式,在按名字排序和按出现顺序排序间切换 |
x | taglist窗口放大和缩小,方便查看较长的tag |
+ | 打开一个折叠,同zo |
- | 将tag折叠起来,同zc |
* | 打开所有的折叠,同zR |
= | 将所有tag折叠起来,同zM |
[[ | 跳到前一个文件 |
]] | 跳到后一个文件 |
q | 关闭taglist窗口 |
F1 | 显示帮助 |
cscope
安装:yum install -y cscope
配置文件语法介绍
快捷键映射
【vim模式】Vim的模式众多,但是一般被提及的也就是这么几种:
Normal Mode
也就是最一般的普通模式,默认进入vim之后,处于这种模式。
Visual Mode
一般译作可视模式,在这种模式下选定一些字符、行、多列。
在普通模式下,可以按v进入。
Insert Mode
插入模式,其实就是指处在编辑输入的状态。普通模式下,可以按i进入。
Select Mode
在gvim下常用的模式,可以叫作选择模式吧。用鼠标拖选区域的时候,就进入了选择模式。
和可视模式不同的是,在这个模式下,选择完了高亮区域后,敲任何按键就直接输入并替换选择的文本了。
和windows下的编辑器选定编辑的效果一致。普通模式下,可以按gh进入。
Command-Line/Ex Mode
就叫命令行模式和Ex模式吧。两者略有不同,普通模式下按冒号(:)进入Command-Line模式,可以输入各种命令,
使用vim的各种强大功能。普通模式下按Q进入Ex模式,其实就是多行的Command-Line模式。
【Map基本概念】
命令的组合
同Vim下的其他命令一样,命令的名字往往由好几段组成。前缀作为命令本身的修饰符,微调命令的效果。
对于map而言,可能有这么几种前缀
nore
表示非递归,见下面的介绍
n
表示在普通模式下生效
v
表示在可视模式下生效
i
表示在插入模式下生效
c
表示在命令行模式下生效
【快捷键映射实例】
右括号自动补全:
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i<CR><ESC><S-o>
inoremap < <><ESC>i
inoremap " ""<ESC>i
inoremap ' ''<ESC>i
参考
Vim 的补全模式加速器,轻松玩转全部 15 种自动补全模式http://cscope.sourceforge.net/
http://ctags.sourceforge.net/
vim插件ctags的安装和使用
vim插件taglist的安装和使用
强大的vim配置文件,让编程更随意
相关文章推荐
- [经验总结]安装使用VIM代码补全插件snippetsEmu
- vim使用系列之二——总结一下自己常用的VIM操作(边用边更新, 2010.10.22)
- vi/vim使用总结
- vim使用总结
- VIM使用总结
- vim使用总结
- Vim使用总结
- vim 使用技巧 部分总结
- vim使用总结
- vim使用技巧总结
- vim使用系列之二——总结一下自己常用的VIM操作(边用边更新)
- VIM使用总结
- VIM使用总结
- vim 使用总结
- vim使用系列之二——总结一下自己常用的VIM操作
- vim使用总结
- Vim使用阶段性总结系列(3) – stb225之Vim环境 推荐
- VIM使用--总结自己常用的VIM操作
- VIM使用总结
- Vim使用总结