vim 笔记

目录

    vim 目录结构

    • vim目录结构 以下针对 vim90, 有些文件夹可能没有,没有的话,可以自己新建一个
    • after : plugin 加载完后,加载 after 中的内容
    • autoload : 自动会运行的脚本
    • bitmaps : 默认图标存放路径
    • colors : 配色方案
    • compiler : 设置同类型名的当前缓冲区下的编译器相关选项。
    • doc : 插件文档,使用 :help 时可以用到
    • ftdetect : filetype detection, vim 启动时执行,检测和设置文件的类型。
    • ftplugin : plugin,autoload,ftplugin不同
    • GvimExt32
    • GvimExt64
    • import
    • indent : 自动缩进定义文件, 根据打开文件名字加载
    • keymap
    • lang : 界面显示语言
    • macros : 宏示例
    • plugin : 插件, 每次启动 vim 时都会加载
    • spell : 拼写检查脚本
    • syntax : 语法高亮
    • tools : 工具
    • tutor

    vimrc 配置

    github比较全的配置

    配置文件在 ~/.vimrc,将下面的设置写入 ~/.vimrc 中即可每次打开 vim 时都实现特特定的效果。也可以在打开 vim 后, 在命令模式下输入下面的内容也可以实现特定的效果,这种方式只会在当前打开的 vim 界面有效。

    • set hlsearch : 设置搜索高亮,当查到字符串时高亮显示
    • set nu : 显示行号
    • set nonu : 取消行号显示
    • set tags=tags : 设置 tags 为当前文件夹下的 tags
    • set cursorcolumn : 高亮所在列
    • set cursorline : 高亮所在行。高亮操作
    • set runtimepath^=/home/chao/.vim/pack/vimwiki : ^= 新增一个 runtimepath 路径,可以管理插件
    • set enc=utf-8 : 设置 utf-8 编码
    • syntax clear : 取消高亮
    • set guioptions : 设置gui模式下菜单栏和导航栏是否显示
    • set wrap : 设置折行,长的行用多行显示,但是本质还是一行
    • set nowrap : 不设置折行,可能会出现一行太长,屏幕装不下的情况
    • set guioptions+=T : 显示工具栏
    • set guioptions-=T : 不显示工具栏
    • set ignorecase : 搜索时忽略大小写

    vim 的几种模式

    打开 vim 后,输入 :help vim-modes 便可以查看 vim 的几种模式,对于 vim 9.0.1425, 得到的结果是:
    7种基本模式

    • Normal mode : 正常模式,正常模式下可以输入所有的编辑命令,这也称之为命令模式
    • Visual mode : 可视模式,这与正常模式类似,但是当使用移动命令(h,j,k,l等)时,会衍生出来一块高亮的区域。当使用非移动命令, 会对高亮部分内容生效。比如高亮了一块区域,然后输入 d, 便会删除高亮的部分
    • Select mode : 选择模式,这看起来最想 MS-Windows 的选择模式,键入可打印字符会删除选择并启动插入模式。
    • Insert mode : 插入模式,在插入模式下,输入的文本会保存在 buffer 中,类 unix 输入的文本下会保存在为 .文件名.swp 中
    • Command-line mode : 命令行模式, 也叫做 Cmdline mode, 可以在窗口下面输入一行文本。: 用于 Ex 命令,? 用于搜索,/ 用于过滤
    • Ex mode : 与 Command-line mode 类似,但是输完一个命令后仍然在 Ex mode.
    • Terminal-Job mode : 终端任务模式,在终端窗口交互式作业,输入的键转到作业,而作业的输出将显示到终端窗口此外,还有 7 种额外的模式,这些是基本模式的变种, 包括 Operator-pending modeReplace modeVirtual Replace modeInsert Normal modeTerminal-Normal modeInsert Visual mode 和 Insert Select mode

    正常模式/命令模式

    进入vim后即为正常模式

    • ctrl+w, _ (shift+-) : 最大化窗口
    • ctrl+w, = : 恢复窗口
    • “+gP : 可以从剪贴板复制,gvim有效。
    • u : 撤回一次更改,类似 windows 下的 ctrl + z
    • ctrl + R : 取消一次撤回的更改,类似 windows 下的 ctrl + y
    • ma : 生成一个标签 a (只在当前文件有效)
    • `a : 跳转到标签 a
    • delmarks a : 删除标签 a

    命令行模式

    命令模式下很多东西都可以写在 ~/.vimrc 中, ~/.vimrc 中的很多内容也都可以在命令行模式下执行,:启动命令模式

    • :set ft=c : ft filetype
    • :set runtimepath ? : 查看 vim 的 runtimepath。
    • :tags : 列出所有标签
    • :marks : 查看设置过的标签
    • :source ~/.vimrc : 重新加载 vimrc 中的配置
    • :set guifont=* : gui环境下设置字体
    • :g/example/d : 删除所有包含example的行
    • :v/example/d : 只保留所有包含example的行
    • 显示当前打开文件的路径
      • :echo expand('%:p') 显示绝对路径
      • :f 显示相对路径
      • ctrl + g 显示相对路径

    可视模式

    • u : 选择的内容小写
    • U : 选择的内容大写

    跳转

    通过 tags 进行跳转

    • bn : 跳转下一个记录
    • bp : 跳转到上一个记录
    • ma : 生成一个标签 a (只在当前文件有效)
    • `a : 跳转到标签 a
    • delmarks a : 删除标签 a
    • marks : 查看设置过的标签

    为 UVM 生成 tags

    首先进入 uvm 源码的 src 目录,执行下列语句

    ctags --languages=systemverilog -R .
    

    就会在源码目录生成 tags 文件,然后编辑用户家目录的 .vimrc 文件,添加如下内容,注意 /opt/uvm/uvm-1.1d/src 为上面生成的 tags 文件路径:

    set tags=./tags
    set tags+=/opt/uvm/uvm-1.1d/src/tags
    

    然后打开 systemverilog 文件就可以进行跳转了。

    • tags : 列出所有标签
    • ctrl + ] : 跳转到函数,类等
    • ctrl + t : 返回跳转前的位置,如果有多次跳转,只能一次一次返回

    跳转到文件中的目录

    • gf : go to file
    • :bd : 返回到原来的文件
    • :bn : 跳转到下一个记录
    • :bp : 跳转到上一个记录

    匹配

    • \s : 匹配空格

    多标签(tab)

    此标签 (tab) 非彼标签 (tag)
    vim 可以添加标签,方便切换

    • :tabnew : 新建一个标签,可以后街文件
    • :tabopen : 打开文件
    • :tabedit : 编辑文件

    遇到的问题

    编码设置,解决 windows gvim 菜单键乱码问题

    " vimrc 中注释用 "
    " 编码设置,解决 windows gvim 菜单键乱码问题。
    set enc=utf-8
    set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
    " some conf
    " ...
    if(has("win32") || has("win95") || has("win64") || has("win7") || has("win10"))
        source $VIMRUNTIME/delmenu.vim
        source $VIMRUNTIME/menu.vim
    endif
    

    插件

    存放插件的路径放在 runtimepath 中, 启动 vim 时, 会按照下面的步骤执行:

    1. 处理 .vimrc 文件
    2. 扫描 ~/.vim 中的所有目录
    3. 查找包含 pack/*/start 中的插件
    • 如果发现放在 start 下的插件没有作用, 看看改路径是否在 runtimepath 中, 查看方式如下 : 打开 vim 后, 输入 : set runtimepath? 即可查看 runtimepath, 如果没有, 则需要在~/.vimrc中加入set runtimepath ^=/home/chao/.vim/pack/vimwiki

    手动安装

    插件安装
    在 start 目录下的插件会自动执行,在 opt 目录下的插件需要通过 packadd xx 来加载插件

    • 将插件放在 ~/.vim/pack/*/start/ 目录下
    • 或者在 ~/.vim/pack/ 目录下创建一个目录,然后在该目录下创建一个 start 目录,将插件放在 start 目录下

    vim安装vba格式的插件

    以安装vimwiki为例, 首先打开 vimwiki.vba 文件

    vim vimwiki.vba
    

    然后执行下面的语句

    :so %
    :q
    

    用到的一些插件

    NERDTree

    • vim 的一个树形文件浏览器插件
    • NERDTree 打开 NERDTree 插件

    其它暂未分类

    • iabbrev 设置缩写, 可以在写在 plugin 或者 ftplugin 文件下对应的语言中
    iabbrev pf `print()`
    

    后面在相应的语言代码中输入 pf 然后按空格键,便会自动输入 print

    使用宏的步骤

    1. 先按 q, 然后按任意一个字母, 如 a, 就可以录制宏
    2. 比如需要删除1,3,5,7等奇数行, 先输入 dd 删除一行, 然后输入 2j 跳到下一行
    3. 结束宏录制, 按 q
    4. 使用宏, 按@a 使用一次, 输入 7@a 使用 7 次

    key map

    map <C-]> <S-*><C-w><C-]><C-w><S-t>
    nnoremap <C-Left> :tabprevious<CR>
    nnoremap <C-Right> :tabnext<CR>
    nnoremap <C-h> :tabprevious<CR>
    nnoremap <C-l> :tabnext<CR>
    nnoremap gf <C-w>gf
    nnoremap <C-j> <C-w>j
    nnoremap <C-k> <C-w>k
    如果在这个过程中遇到了其它问题,欢迎在评论区留言,如果你已解决,也欢迎把具体的解决方法留在评论区,以供后来者参考
    ×

    感谢您的支持,请扫码打赏

    微信打赏 支付宝打赏
    guest
    0 评论
    内联反馈
    查看所有评论