vim常用操作和设置

vi和vim区别

vi:

  • 所有的Unix Like系统都会内建vi文书编辑器,其他的文本编辑器则不一定会存在
  • 按u只能撤销上次命令

vim:

  • vim完全兼容vi,是vi的升级版本;vi适合文本编辑,vim更适合coding
  • 多级撤销,无限制撤销操作
  • 语法高亮,显示关键字
  • 正则表达式搜索
  • 多文件编辑
  • 与tags工具配合

vim资料文档

vim提供了丰富的文档

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\>

多行注释

  1. 进入命令行模式,按ctrl + v进入 visual block模式,把需要注释的行标记起来
  2. 按大写字母I,再插入注释符,例如//
  3. 按两次esc键就会全部注释

历史命令

q: 可以查看最近的历史命令的命令行窗口。用up and down选定,使用Enter就可以执行这个命令。

文件切换

  1. :e . / Explore . " 浏览当前目录
  2. :Sexplore . " 在水平分割窗口中浏览当前目录
  3. :Vexplore . " 在垂直分割窗口中浏览当前目录
  4. :bp 跳到上一个文件
  5. :bn 跳到下一个文件
  6. :files 显示已打开文件的列表
  7. :b{num} "跳转到文件列表中的任意一个文件,如跳转到第5个文件:b2
  8. gf "goto file, 光标移动到头文件后,输入gf进入头文件

vim多窗口操作

新窗口

  1. split a window into two via 'CTRL-W s' (or 'CTRL-W v' for a vertical split)
  2. open a file in a new window via ':spl[it] filename']

窗口切换

  1. CTRL-W w' (or CTRL-W arrow key, or CTRL-W h/j/k/l for left/up/down/right)

关闭窗口

  1. close a window via 'CTRL-W c' (or good old ':q')
  2. 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优秀配置

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

posted @ 2020-06-27 21:09  zephyr~  阅读(627)  评论(0编辑  收藏  举报