vim的使用

原创文章点击这里

1 插件安装

1.1 下载插件包

链接: https://pan.baidu.com/s/1UN3BZB4Wy9DxzVrk3IsUUw
提取码: v6ie
包含的插件:

  • taglist
  • cscope_maps
  • nerdtree
  • xxx

1.2 安装 cscope

执行命令:

tar -xvf cscope-15.9.tar.gz
cd cscope-15.9
./configure
make
sudo make install

如果make时出现错误:build.c:52:20: fatal error: curses.h: 没有那个文件或目录,需要安装libncurses库,执行:

sudo apt-get install libncurses5-dev

1.3 安装 ctages

执行命令:

tar -xvf ctags-5.8.tar.gz
cd ctags-5.8
./configure
make
sudo make install

1.4 安装nodejs

nodejs下载地址


tar node-v12.9.1-linux-x64.tar.gz

mv node-v12.9.1-linux-x64 /usr/local/

mv /usr/local/node-v12.9.1-linux-x64 /usr/local/node

sudo ln -s /usr/local/node/bin/node /usr/local/bin/node

sudo ln -s /usr/local/node/bin/npm /usr/local/bin/npm

# 输入 npm 查看

2 插件的使用

2.1 ctags 的使用

  • 在当前目录下生成tags文件,执行:

    ctags -R
    
  • 如果经常在不同工程中查阅代码,可以在~ /.vimrc中添加:

    set tags=tags
    set autochdir
    

    或者,在~/.vimrc中加入一行:

    set tags=xxx/tags # 这里的目录是上一步中生成tags文件的路径
    

    或者,在vim中输入命令:

    set tags=./tags # 当前路径下的tags文件
    
  • 快捷键
    ctrl+]:跳转到函数定义,或者用命令:ta xxx
    ctrl+o/t:返回跳转前的位置
    g+d:跳转到局部定义

  • 自动打开定义xxx函数的地方

    vim -t xxx
    
  • 列出查找/跳转过程

    :tags
    

2.2 taglist 的使用

  • 在~/.vimrc中设置:
    let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的  
    let Tlist_Exit_OnlyWindow=1 "如果taglist窗口是最后一个窗口,则退出vim  
    let Tlist_Ctags_Cmd="/usr/bin/ctags" "将taglist与ctags关联
    
  • 打开taglist左侧窗口,按q退出:
    :TlistOpen
    
  • 光标在taglist中时的快捷键:
    回车:跳到光标下tag所定义的位置
    o:在新窗口中显示刚刚的tag定义的位置
    空格:在底部显示此tag的函数名原型
    u:更新tag列表(如果添加了新函数)
    s:更改排序方式
    [[:跳到前一个文件
    ]]:跳到后一个文件

2.3 cscope 的使用

  • 生成文件索引文件cscope.files
    由于索引文件中的路径需要全路径,所以可以使用一个Python脚本来生成,存放在~/.index.py,脚本内容如下:

    import os
    save_file = open("cscope.files", 'w')
    for root, dirs, list in os.walk("./"):
        for i in list:
            cur_path = os.path.abspath(root)
            file_path = cur_path + "/" + i
            save_file.write(file_path+"\n")
    save_file.close()
    

    在需要生成cscope.files文件的目录下执行:

    python ~/.index.py
    
  • 在当前目录下生成cscope.out文件

    cscope -bqk
    
  • 如果经常在不同工程中查阅代码,可以在~ /.vimrc中添加:

    if filereadable("cscope.out")
        cs add cscope.out
    elseif $CSCOPE_DB != ""
        cs add $CSCOPE_DB
    endif
    

    或者,在命令行中输入以下命令即可添加cscope数据库:

    :cs add ./cscope.out
    

    或者,在.vimrc文件中添加以下语句制定路径:

    export CSCOPE_DB="xxxx/cscope.out"
    
  • 常用命令

    :cs f s xxx #查找C语言符号,即查找函数名、宏、枚举值等出现的地方
    :cs f g xxx #查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
    :cs f d xxx #查找本函数调用的函数
    :cs f c xxx #查找调用本函数的函数
    :cs f t xxx #查找指定的字符串
    :cs f e xxx #查找egrep模式,相当于egrep功能,但查找速度快多了
    :cs f f xxx #查找并打开文件,类似vim的find功能
    :cs f i xxx #查找包含本文件的文
    

    这里的s ~ i对应数字0 ~ 8

  • 使用快捷键
    需要cscope_maps.vim文件,插件包里已经包含
    使用快捷键时,把光标移动到要查找的关键字上,同时按下ctrl+\,松开后再按s~i中某个快捷键:

    <CTRL - \> s
    <CTRL - \> g
    <CTRL - \> d
    <CTRL - \> c
    <CTRL - \> t
    <CTRL - \> e
    <CTRL - \> f
    <CTRL - \> i
    

2.4 nerdtree 的使用

  • 调出左侧目录树
    :NERDTree
    
  • 热键
    o:打开/关闭文件夹
    回车:打开文件
    p:跳转到父目录
    P:跳转到根目录
    m:显示文件系统菜单(添加、删除、移动操作)
  • 在.vimrc中的设置如下(插件包里已经配置好),打开/关闭NERDTree的快捷键是F3
    "打开vim时,自动打开NERDTree
    autocmd vimenter * NERDTree
    " 设置NerdTree打开的快捷键,可自行更改
    map <F3> :NERDTreeMirror<CR>
    map <F3> :NERDTreeToggle<CR>
    "当NERDTree为剩下的唯一窗口时自动关闭
    autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
    

2.5 MarkdownPreview 的使用

打开.md文件,按下F4即可在网页上打开预览;
具体可以参考这里

  1. 安装nodejs

下载地址

tar node-v12.9.1-linux-x64.tar.gz
mv node-v12.9.1-linux-x64 /usr/local/
mv /usr/local/node-v12.9.1-linux-x64 /usr/local/node
sudo ln -s /usr/node/local/bin/node /usr/local/bin/node
sudo ln -s /usr/node/local/bin/npm /usr/local/bin/npm
# 输入 npm 查看
  1. 下载markdown-preview.vim
    下载地址
    克隆到本地后,把该目录复制到.vim/bundle/中即可使用,用vim打开md文件后,可以执行下面的命令来打开或关闭预览:

:MarkdownPreview
:MarkdownPreviewStop

  1. 设置快捷键
    在.vimrc文件中添加以下语句即可使用快捷键F4打开预览:
map <F4> :MarkdownPreview<CR>

3 其他快捷键

3.1 删除空格

删除行末空格:

:%s/\s\+$//
# 其中:
# 行末:$
# 行首:^
# 空格:\s
# 行末空格:\s\+$
# 行首空格:^\+\s

3.2 移动

热键:

  • W/w:移动到下一个单词开头
  • E/e: 移动到下一个单词结尾
  • B/b: 倒退到上一个单词开头

3.3 分屏

快捷键:

<CTRL - w> v # 水平方向复制窗口
<CTRL - w> s # 竖直方向复制窗口
<CTRL - w> w # 切换到另一个选中窗口
<CTRL - w> j/k/h/l # 按照方向切换窗口
<CTRL - w> > # 宽度+1
<CTRL - w> 10 > # 宽度+10
<CTRL - w> < # 宽度-1
<CTRL - w> + # 高度+1
<CTRL - w> 10 + # 高度+10
<CTRL - w> - # 高度-1
<CTRL - w> H/J/K/L # 把当前窗口移动到最左/下/右/上
vim -on file1 file2 # 上下分屏
vim -On file1 file2 # 左右分屏
:sp filename # 横屏打开另一个文件
:vsp filename # 竖屏打开另一个文件
:qall # 退出全部打开的窗口

3.4 自动补全

ctrl + n
ctrl + p

3.5 缩进

== 缩进所在行
=a{ 缩进所在程序块
gg=G 缩进全部

4 vim实用命令

4.1 读取二进制文件

如果正常打开二进制文件会是乱码,所以 vim 打开这类文件是要加上参数 -b:

vim -b filename # 打开二进制文件、
:%!xxd
:%!xxd -g 1 # 用1个字节做拆分

4.2 批量行尾插入

ctrl+v
$
A
输入要插入的内容
esc结束

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值