vim常用操作和设置
vi和vim区别
vi:
- 所有的Unix Like系统都会内建vi文书编辑器,其他的文本编辑器则不一定会存在
- 按u只能撤销上次命令
vim:
- vim完全兼容vi,是vi的升级版本;vi适合文本编辑,vim更适合coding
- 多级撤销,无限制撤销操作
- 语法高亮,显示关键字
- 正则表达式搜索
- 多文件编辑
- 与tags工具配合
vim资料文档
vim提供了丰富的文档
- vim官网:https://www.vim.org/
- 源码安装:https://github.com/vim/vim
- apt安装:sudo apt-get install vim
- 文档汇总:https://www.vim.org/docs.php
- help文档:https://vimhelp.org/
- 中文文档:https://www.vim.org/translations.php
vim使用和操作
使用指导大全
https://www.runoob.com/linux/linux-vim.html
查询帮助
help命令可解决大部分问题,比在网上查资料更快捷
- help:显示帮助vim总目录
- help cmd:显示系统命令或者vim命令的帮助信息,如 help ls、help set。
- help key:显示设置项信息,如help mouse
字符匹配查询模式
命令模式下,按/或?
,然后输入要查找的字符,Enter。
/和?的区别是,一个向前(下)找,一个向后(上)。
如果你输入 /int
,你也可能找到print。
\>
表示只匹配单词末尾,类似地,\<
只匹配单词的开头。一次要匹配一个完整的单词int,只需:/\< int\>
多行注释
- 进入命令行模式,按ctrl + v进入 visual block模式,把需要注释的行标记起来
- 按大写字母I,再插入注释符,例如//
- 按两次esc键就会全部注释
历史命令
q:
可以查看最近的历史命令的命令行窗口。用up and down选定,使用Enter就可以执行这个命令。
文件切换
- :e . / Explore . " 浏览当前目录
- :Sexplore . " 在水平分割窗口中浏览当前目录
- :Vexplore . " 在垂直分割窗口中浏览当前目录
- :bp 跳到上一个文件
- :bn 跳到下一个文件
- :files 显示已打开文件的列表
- :
b{num}
"跳转到文件列表中的任意一个文件,如跳转到第5个文件:b2 - gf "goto file, 光标移动到头文件后,输入gf进入头文件
vim多窗口操作
新窗口
- split a window into two via 'CTRL-W s' (or 'CTRL-W v' for a vertical split)
- open a file in a new window via ':spl[it] filename']
窗口切换
- CTRL-W w' (or CTRL-W arrow key, or CTRL-W h/j/k/l for left/up/down/right)
关闭窗口
- close a window via 'CTRL-W c' (or good old ':q')
- make the current window the only one via 'CTRL-W o'
vim的常用设置
在用户home路径创建“.vimrc”配置文件,添加以下配置
" ***********显示类配置***********
" 显示行号
set number
" 语法高亮
syntax on
" 高亮显示搜索关键字
set hlsearch
" 增量搜索,补全关键字同时显示搜索结果
set incsearch
" 忽略大小写
set ignorecase
" 总是显示状态栏
set laststatus=2
" 显示当前行线
set cursorline
" 显示中文
set fileencodings=gb2312,utf-8
" ***********编辑类配置***********
" 开启新行时自动缩进
set autoindent
set tabstop=4
" 激活鼠标使用,n:普通模式 v:可视模式 i:插入模式 a所有的模式 可组合使用
" 按"后,选中复制,esc退出
set mouse=nvi
" 设置空格为输入命令模式
map <space> :
" ***********全局类配置***********
" 关闭vi兼容模式
set nocompatible
" 禁止生成swap file文件
set noswapfile
插件
vim本身的功能比较单一,虽然能应付到得了文本的增删改查,但是如果要使用vim浏览大型的软件工程,文件切换、符号跳转、符号查找等等这些功能需要额外安装插件进行功能扩展。微软vscode和vim的功能扩展思想是一样。
vim官网列出了很多的插件,https://www.vim.org/scripts/script_search_results.php
下面介绍几个强烈推荐的插件。
taglist
查看源代码的宏、函数、变量等标签,https://www.vim.org/scripts/script.php?script_id=273
安装步骤
-
下载taglist.zip并解压到如下目录
~/.vim/plugin/taglist.vim - main taglist plugin file
~/.vim/doc/taglist.txt - documentation (help) file -
进入~/.vim/doc目录,在Vim下运行"helptags ."命令。此步骤是将doc下的帮助文档加入到Vim的帮助主题中,这样我们就可以通过在Vim中运行“help taglist.txt”查看taglist帮助。
配置.vimrc文件
map <F2> :TlistToggle<CR> "设置打开/关闭 taglist快捷键
let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow=1 "如果taglist窗口是最后一个窗口,则退出vim
其他配置选项
- Tlist_Ctags_Cmd选项用于指定你的Exuberant ctags程序的位置,如果它没在你PATH变量所定义的路径中,需要使用此选项设置一下;
- 如果你不想同时显示多个文件中的tag,设置Tlist_Show_One_File为1。缺省为显示多个文件中的tag;
- 设置Tlist_Sort_Type为”name”可以使taglist以tag名字进行排序,缺省是按tag在文件中出现的顺序进行排序。按tag出现的范围(即所属的namespace或class)排序,已经加入taglist的TODO List,但尚未支持;
- 如果你在想taglist窗口是最后一个窗口时退出VIM,设置Tlist_Exit_OnlyWindow为1;
- 如果你想taglist窗口出现在右侧,设置Tlist_Use_Right_Window为1。缺省显示在左侧。
- 在gvim中,如果你想显示taglist菜单,设置Tlist_Show_Menu为1。你可以使用Tlist_Max_Submenu_Items和Tlist_Max_Tag_Length来控制菜单条目数和所显示tag名字的长度;
- 缺省情况下,在双击一个tag时,才会跳到该tag定义的位置,如果你想单击tag就跳转,设置Tlist_Use_SingleClick为1;
- 如果你想在启动VIM后,自动打开taglist窗口,设置Tlist_Auto_Open为1;
- 如果你希望在选择了tag后自动关闭taglist窗口,设置Tlist_Close_On_Select为1;
- 当同时显示多个文件中的tag时,设置Tlist_File_Fold_Auto_Close为1,可使taglist只显示当前文件tag,其它文件的tag都被折叠起来。
- 在使用:TlistToggle打开taglist窗口时,如果希望输入焦点在taglist窗口中,设置Tlist_GainFocus_On_ToggleOpen为1;
- 如果希望taglist始终解析文件中的tag,不管taglist窗口有没有打开,设置Tlist_Process_File_Always为1;
- Tlist_WinHeight和Tlist_WinWidth可以设置taglist窗口的高度和宽度。Tlist_Use_Horiz_Window为1设置taglist窗口横向显示;
NERDtree
以树形显示文件系统,方便文件切换,https://www.vim.org/scripts/script.php?script_id=1658
安装步骤
-
下载压缩包并解压到如下目录
~/.vim/pack/vendor/start/nerdtree
-
执行命令生成help帮助,
vim -u NONE -c "helptags ~/.vim/pack/vendor/start/nerdtree/doc" -c q
配置.vimrc文件
map <F3> :NERDTreeToggle<CR> "设置打开关闭快捷键
常用用命令
在NERDtree界面按T
,可在vim界面打开多个tab,实现多个页面切换。
其他vim优秀配置
- https://vimjc.com/vimrc.html
- https://blog.csdn.net/darnell888/article/details/108382660
- https://vim.wxnacy.com/#docs/vimgrep
FAQ
vim添加的配置,提示不支持怎么办?
vim有tiny、small、normal、big、huge等不同版本。如果系统默认安装的tiny或者small版本,那么有些特性是不支持的,可以使用vim --version命令查看当前vim的版本以及支持的特性。安装huge版本则可支持更多显示特性:sudo apt-get install vim-gui-common
vim如何支持系统剪切版本
https://www.jianshu.com/p/abe7ae1766b2
https://www.cnblogs.com/songlen/p/6883522.html