打开文件
- 定位到某个函数(在生成了cscope和 ctags 的数据库文件之后) ,直接跳到函数入口,文件在哪都可以不知道
$:vim -t 函数名 - 定位到文件的某行
$:vim 路径 +n(行号) - 定位到文件的某个匹配项的 第一个匹配位置
$:vim 路径 +/匹配 - 定位到文件的末尾
$:vim 路径 +
光标移动
gg 文件开始
G 文件结尾
:n 移动到第n行
ctrl+u 向下半页
ctrl+d 向上半页
^ 本行开头
$本行结束
搜索,替换
/pattern 高亮匹配项
n 跳转到下一个匹配项
N 跳转到上一个匹配项
:s/p1/p2/g 用p2替换匹配到的p1
:n1,n2s/p1/p2/g 在n1,n2行内进行替换
g+d 快速搜索当前位置的内容 或者 shift + *
:nohl 取消匹配后的高亮显示 (nohighlight)
多行移动
:n1,n2 m n3 将n1到n2之间的行插入到 n3行之后的位置,
等同于 用视图模式选中 n1至n2 的内容 按d,然后在第n3 行 按p
复制粘贴
:y 复制选中内容
yy 复制一行
yw 复制一个词
yb 复制一个字母
:p 粘贴
:ggvG 选取全文,可以再按y复制
复制一次粘贴多次:选取内容后 "0y, 将内容保存到0号寄存器中,就能多次粘贴了
vim多文件操作
:vsp 文件名 (垂直分隔)
:sp 文件名(水平分隔)
设置标记
:mark 字母 – 在当前位置设置一个标记
'(单引号)字母 跳转到之前设置标记的位置
小写字母只在当前文件生效
大写字母可以跨文件访问
比如:
定义标记:mark a
引用标记 'a
:delmarks 标记 删除某个标记
:delmarks! 删除所有标记
执行shell命令
:r 文件 ,将文件的内容作为输入
:r !命令 将shell命令执行的结果作为输入
将内容输出到文件
:n1,n2 w 文件名 // 将n1到n2行之间的内容覆盖到文件
:n1,n2 w>> 文件名 //将n1到n2行之间的内容追加到文件
插件
-
cscope
:cs find s/g/c/e xxxxx
s 和e好像差不多:搜索xxxx出现过的地方
g 查找定义
c 查找调用xxxx的地方
d 查找xxx调用了哪些函数 -
ctags
ctrl+] 相当于 :cs find g xxxx, 查找光标所在位置函数或变量的定义
ctrl+T , 从刚才ctrl +] 后跳转到的位置返回 到 跳转之前 -
Taglist
:Tlist 打开Taglist 窗口 -
NERDTree
:NERDTree 打开
vimrc 的配置
vimrc
表示当前单词 ,在写快捷键时会用到
重要的原生配置项
set nocompatible 表示不和vi兼容,要使用vim的特性必须要这一行,一般放在vimrc文件的第一行 简写setnocp
set paste "打开复制模式,此模式下,不会自动缩进,一般用于粘贴代码的时候
set nopaste "关闭复制模式
set mouse= "能用鼠标操作, set mouse= 使鼠标不能操作vim
set incsearch "似乎是一个自带的插件, 在使用/时会高亮所有的匹配项
set ruler "总是在状态栏显示当前光标的位置
set number "显示行号,set nonumber 取消行号的显示
set autoindent "自动缩进,每行的缩进和上一行相同
set cindent "按照c和c++标准所经
set tabstop=8 "设置tab的长度为8个空格
set encoding=utf-8 "设置编码格式
锦上添花的配置
自动停在上次关闭文件时的光标位置
map <F2>:Tlist<CR>
map <F3>:NERDTree<CR> 将复杂的操作绑定 成简单的按键
比如cs find s xxx
nmap <C->s :cs find s =expand("") 能够使用ctrl+\ 再按s ,自动搜索光标处的词
=expand("") 这一段能表示当前光标指向的词
set showcmd 显示用map绑定的原本的命令
.vimrc
set nocompatible
set showcmd
set number
set mouse=
set ruler
#格式配置
set shiftwidth=8 (表示每一级缩进的长度)
set softtabstop=8 (表示在编辑模式的时候按退格键的时候退回缩进的长度)
set autoindent (自动缩进)
set textwidth=80 (或者:set tw=200)(自动换行宽度200)
VIM插件
原理:vim 有一个 runtimepath 配置,是一个由逗号分隔的文件夹路径列表,在启动vim时,会自动执行每个文件夹下的 plugin 文件夹下的所有的 vim 文件。
编写自己的vim插件
vim 个性化设置与功能扩展均通过 script 来实现,这种 script 又叫 plugin。plugin 是 vim 的核心与精髓。
常见的plugin类型:
vimrc
global
filetype
syntax
compiler
vimrc 是核心 plugin (类似 main 函数),所有的配置都可以在这一个文件中完成。 所有其他配置都直接或间接由该文件调用以生效。
- 安装中文帮助文档
$ wget http://nchc.dl.sourceforge.net/sourceforge/vimcdoc/vimcdoc-1.5.0.tar.gz
下载 解压后
$ ./vimcdoc.sh -i
在vim中,可以切换帮助文档的中英文
set helplang=cn
set helplang=en
- ctags
http://ctags.sourceforge.net 官网,下载ctags-xxx.tar.gz
解压后,进入目录
$ ./configure
$ make
$ make install
在源代码根目录,生成tags文件
$ ctags -R
可以在源代码根目录的文件中,设置指定的tags文件
set tags= path/tags
然后就可以在代码中 用 ctrl+] 跳远到(函数,变量)定义处,用ctrl + t 从定义处跳回去