VIM 使用

打开文件

  • 定位到某个函数(在生成了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 从定义处跳回去

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值