vim的使用以及vim插件的配置

目录

vim简介

vim工作模式

光标移动

 文件插入操作

文本删除

文本复制,剪切与粘贴

文本修改与替换

文本查找与替换

修改的撤销,重做与保存

编辑多个文件

分页与折叠栏

多窗口操作

vim配置与vimrc配置文件

vim的按键映射

vim脚本语法

ctags的使用

taglist的使用

winmanager的使用

cscope安装及使用

quickfix的使用

NERD_commenter安装和使用

插件superTab的使用

c文件和头文件互相切换

书签的使用

保存会话


vim简介

vim是一款功能强大,高度可指定的文本编辑工具。vi是visual  interface的简写,vim是 Vi  IMproved的简写。

vim的安装命令:

sudo  apt-get install vim

如果安装不了,可以输入以下指令更新下数据:sudo apt-get update。然后再次输入以下指令进行安装:sudo apt-get install vim。

vim工作模式

普通模式:

                vim打开一个文件时默认模式

插入模式:

                 敲击键盘上的  i ,o,a  进入该模式,敲击ESC键退出该模式

 命令行模式:

                  敲击键盘上的    进入该模式

                  在该模式下输入set num可以显示行号,同时命令可以保存/etc/vim/vimrc配置文件 

可视化模式:

                   敲击键盘上的  v 进入该模式,然后移动光标就可以选中文件。

替换模式:

                   敲击键盘上的 R 就可以进入到替换模式   

光标移动

单个字符移动:

           h:向左移动

           l:向右移动

           j:向下移动

           k:向上移动

如果需要向左移动10个字符,可以敲击 10+h。

单词移动:

           w:将光标移动到下一个单词开头

           b:将光标移动到前一个单词的开头

           e:将光标移动到下一个单词的末尾

           E:移动到单词的结尾(忽略标点符号)

           ge:将光标移动到上一个单词词末

           2w:指定移动的次数

 行移动:

           ¥:将光标移动到当前行的末尾

            0:将光标移动到当前行的行首

            ^ :将光标移动到当前行的第一个非空字符(行首和当前行非空字符不是一个位置)

            2|:  移动当前行的第2列

            fx:将光标移动到当前行的第一个x字符上

            3fx:将光标移动到当前行的第三个x字符上

            tx: 将光标移动到目标字符上

            %:用于符号间的移动,它会在一对(),【】,{}之间跳跃

    在屏幕中移动:

            xG:跳转到指定的第x行, G移动到文件末尾,··或者单引号返回到跳转前的位置

            gg:移动到文件开头

            x%:移动到文件中间,就使用50%

            H:移动到home

            M:移动到屏幕中间

            L:移动到一屏末尾

            ctrl+G:查看当前的位置状态

滚屏与跳转:

            半屏滚动:ctrl + u/ctrl +d

            全屏滚动:ctrl+ f/  ctrl +b

   定位光标的位置:

             zz:将光标置于屏幕的中间

             zt:将光标移动到屏幕的顶部

             zb:将光标移动到屏幕的底部

设置跳转标记:

             mx,my,mz设置三个位置

              `x,`y,`z跳转到设置

 文件插入操作

i:在当前光标的前面插入字符

a:在当前光标的后面插入字符

o:在光标的下一行插入字符

u:撤销修改

I:在一行的开头添加文件

A:在一行的结尾处添加文本

O:在光标当前行的上一行插入文本

s:删除当前光标处的字符并进入到插入模式

S:删除光标所在处的行,并进入到插入模式

文本删除

字符删除:

             x:删除当前光标所在处的字符

             X:删除当前光标左边的字符

单词删除:

             dw:删除一个单词(从光标处到空格)

             daw:无论光标在什么位置,删除光标所在的整个单词(包括空白字符)

             diw:删除整个单词文本,但是保留空格字符不删除

              d2w:删除从当前光标开始处的2个单词

               d¥:删除从光标到一行末尾的整个文本

                d0:删除从光标到一行开头的所有单词

                 dl:删除当前光标处的字符 

                 dh:删除当前光标左边的字符

行删除: 

                 dd:删除当前光标处的一整行

                 5dd:删除从光标开始处的5行代码

                 dgg:删除从光标到文本开头

                 dG:删除从光标到文本结尾

  行合并:

                  J:删除一个分行符,将当前行与下一行合并

文本复制,剪切与粘贴

y:复制  p:粘贴

yw:复制一个单词

y2w:复制2个单词

y$:复制从当前光标到行结尾的所有单词

y0:复制当前光标到行首的所有单词

yy:复制一整行

2yy:复制从当前光标所在行开始的2行

复制文本块:

1.首先进入visual模式:v键

2.移动光标选择文本

3.复制与粘贴的操作:p键

文本修改与替换

cw:删除从光标处到单词结尾的文本并进入到插入模式

cb:删除从光标处到单词开头的文本并进入到插入模式

cc:删除一整行并进入到插入模式

 ~:修改光标下字符的大小写

r: 替换当前光标下的字符

文本查找与替换

/string     正向查找

?string     反向查找

设置高亮显示:

在命令模式下输入:set  hls

*按键将当前光标处的单词高亮显示,使用n浏览下一个查找高亮的结果

s/old/new    将当前行的第一个字符串old替换为new

s/old/new/g    将当前行的所有字符串old替换为new

90s/old/new/g    将指定行的所有字符串old替换为new

90,93s/old/new/g   将指定范围的行的所有字符串old替换为new

%s/old/new/g      将文本中所有的字符串old替换为new

%s/old/new/gc     依次替换每个字符串关键字

%s/^struct/int/g    将所有以struct开头的字符串替换为int

修改的撤销,重做与保存

u:撤销上一步的操作

U:恢复一整行原来的面貌(文件打开时的文本状态)

Ctrl + r  :将原来的撤销重做一遍

q:若文件没有修改,直接退出

q!:若文件已经被修改,放弃修改退出

wq:文件已经被修改,保存修改并退出

e!:放弃修改,重新回到文件打开时的状态

编辑多个文件

文件和缓冲区的区别

             文件是保存在磁盘上的,而打开的文件是在内存中

             在内存中有一个缓冲区,用来存放打开的文件

             vim每次打开文件时都会创建一个缓冲区,vim支持打开多个文件

:buffers   查看缓冲区列表

:buffer  N    根据缓冲区列表的编号跳转到指定缓冲区

:bnext/bprev    遍历缓冲区列表

:bfirst/blast      分别调到缓冲区列表的开头和结尾

:write    将缓冲区的修改保存到磁盘上

:edit!  e!放弃缓冲区的修改,恢复到文件打开时的状态

:edit   file   编辑另一个文件

:wnext   保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件

:set  autowrite    自动保存

分页与折叠栏

标签页的新建:    tabedit   file  /   tab   split

标签页的切换:     tabn/tabp

按键  gt/gT

标签页的关闭:tabclose     关闭当前的标签页:tabonly

创建一个折叠:

在普通模式下输入:

zf200G(将光标和200行之间的代码折叠起来)

折叠的打开与关闭

za:打开和关闭折叠

zr/zm:一层一层低打开和关闭折叠

zR/zM:分别打开和关闭所有的折叠

折叠建的光标移动

zj:跳转到下一个折叠处

zk:跳转到上一个折叠处

删除折叠:

zd:删除光标下的折叠

zD:删除光标下的折叠以及嵌套的折叠

zE:删除所有的折叠标签

创建的折叠当退出vim之后就失效了

多窗口操作

分割窗口

split  /    vsplit   filename   

窗口间跳转

ctrl + w     hjkl

ctrl + w      w

移动窗口

ctrl + w    HJKL

调整窗口尺寸

ctrl + w    +/-     调整窗口的高度

ctrl + w    </>     调整窗口的宽度

ctrl  +w     =    所有的窗口设置相同的尺寸

:resize n    将当前窗口尺寸调整为N行

关闭窗口

close:关闭一个窗口

qall:退出所有窗口

qall!:放弃修改,退出所有窗口

wqall:保存并退出所有窗口

wall:保存所有窗口

vim配置与vimrc配置文件

vi与vim的关系

vi是什么?

       ---Visual interface的简写

       ---是行编辑器EX的可视化操作接口

       ---vi输入Q进入EX模式,在EX模式下输入vi进入vi

vim是什么?

       ---vi  improved,改进版的VI

vim对vi的改进:

       ---多级撤销,多窗口,增加了图形界面功能

       ---内置脚本语言,可以无限制扩充与自定义需求

vim的兼容模式

       ---vim确省是vi兼容模式,方向键,退格键不能用

       ---大多数unix类似的操作系统已默认安装vim  

       ---大多数GNU/linux已经将/bin/vi链接到vim的可执行文件

vim启动过程

1.设置内部变量SHELL和term

2.处理命令行参数:包括选项和要打开的文件名

3.加载系统级和用户级别的配置文件

4.加载插件并执行

5.执行GUI部分的初始化

6.如果viminfo不为空,则读取viminfo文件,恢复上次的编辑环境

7.打开显示所有的窗口

8.执行用户指定的启动时命令

vim配置文件:vimrc

    ----查看各个配置文件路径

          -vim --version

    ----用户级配置文件

          - $HOME/.vimrc   只对当前用户有效

    ----系统级配置文件

          - /etc/vim/vimrc     对所有的用户都有效

常用的一些vim设置:基本设置,主题设置

vim的按键映射

 按键映射基础知识:

-----vim里唯一能够让它屈服你的意志的功能:按键 映射

-----查看某个按键映射:verbose map   xx

 map-------normal,visual,operator pending

nmap------normal

vmap------visual

omap------operator pending

map!-------insert,command line

imap--------insert

cmap-------command line

常用的功能,辅助键

tab键:<tab>

<CR>代表Enter键

<F5>代表F5功能键

<Esc>代表Escape键

<LEFT>,<RIGHT>,<UP>,<DOWN>,<DELETE>

<BS>代表Backspace键,<space>代表空格键

 inoremap代表:i代表是在插入模式下有效,nore表示不递归no  recursion。

括号自动补全 

 插入模式下的光标移动

方法一:

      1.回到Normal模式

      2.移动光标到指定位置

      3.重新回到插入模式

方法二:按键映射

      

 编译完成后跳出括号的按键映射

  复制,粘贴快捷键设置

自动编译,运行源文件

 ---在命令行模式下:

              --cmap<C-R> make && ./hello

              --在命令行模式下,ctrl+r即可自动编译运行

---在normal模式下:

              --map<F5> :make &&clear && ./hello

              --在normal模式下,使用F5快捷键自动编译运行

内建命令

vim在不同模式,都有内建的命令:

               ---normal模式下:hjkl用来移动光标,dd/p删除粘贴等

               ---命令行模式下:q退出,查找命令等

插入模式下是个例外:

               ---但是用户也可以自定义命令(这也是vim的强大所在)

               ---如:imap  ptf   printf  插入模式下用户输入ptf,就是输入printf

建议:

               ---尽量不要在insert模式下自定义命令

               ---同样的功能,完全可以在normal模式下完成

               ---尽量不要覆盖内建命令

vim脚本语法

vim脚本:

              ---语法文件vimrc也是vim脚本,在该文件你可以设置命令选项

              ---或者使用冒号命令(EX命令或者命令行命令)

变量:

         命名:

              ---由字符,数字,下划线组成,不能由数字开头

              ---let    列出当前定义的所有变量

         局部变量:

              ---脚本文件局部变量 s:name         :let  s:count=1(只在本文件有效)

              ---全局变量               g:name

              ---vim预定义变量      v:name

              ---窗口局部变量                           w:name 

              ---缓冲区局部变量     b:name

         删除变量:

              使用unlet      :unlet  s:count

              变量不存在也不用报错         :unlet!s:count

         字符串变量:

              定义一个字符串变量             :let  name=“peter”

              回显变量                               :echo   name

变量的类型是动态的,当我们通过:let 赋值时类型才被确定

表达式:

常见的表达式:

      ----echo 5*3+3*2

字符串常量和变量都属于表达式;

其他的表达式:

      ----环境变量   $NAME

      ----选项          $name

      ----寄存器       @r

语句:

条件语句:

        if(condition)

           {statement}

        endif

逻辑操作:

     a == b  a!=b  a>b   a>=b  a<=b  a=~b(a是否匹配b) a!~b

     字符串比较时,用“#”大小写敏感,用“?“忽略大小写

     a!~#b   a=~#b   a!~?b   a=~?b

循环:

  while

  endwhile

执行一个表达式:

执行冒号命令

: execute  ”cmd"

执行普通命令

:normal cmd

例如:删除一行    :normal  dd

使用函数:

定义一个函数:

function{name}({var1},{var2})

{body}

endfunction

定义一个已经存在的函数:

function!{name}({var},{var2},...)

可变参数:

function({var1},{var2},....)

a:1    表示第一个可选参数

a:2    表示第二个可选参数

查看函数内容:

function   name

删除函数

delfunction  name

列表

vim数据类型:

     ---基本数据类型:字符串,数值

     ---复合数据类型:列表,字典

列表的定义和使用:

 let alist=【‘apple’,‘pear’,‘peach’】

call  add(alist,‘banana’)

echo alist

for  n in alsit

echo n

endfor

字典

字典的定义和使用:

let  notebook={'jim':'98','kate':'100'}    定义,保存键-值

echo  notebook【‘jim’】     查找字典

for key  in keys(notebook)   遍历字典

echo  key

endfor

字典函数:

echo  notebook.jim

let   notebook.kate='99'

echo  notebook

echo  split('how ate you')  ->['how','are','you']

ctags的使用

ctags的简介

ctags(Generate tag files  for  source  code)是vim下方便代码阅读的工具。尽管ctags也可以支持其他编译器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易浏览源代码。

ctags的安装命令

在终端命令行下直接输入 sudo apt-get install ctags 进行安装

使用命令 ctags --version 查看版本信息

ctags的配置

使用sudo  vi  /etc/vim/vimrc编辑vim配置文档,在其中加入如下的命令:set  tags=tags文件的路径 ;例如我的tags文件路径为/home/lizhiwen/tags,所以我的可以这样加set   tags=/home/lizhiwen/tags;如果需要配置多个tags,只需要在后面添加就行了。

vim的使用

把光标移动变量名或者函数名上,然后按下Ctrl +] ,这样就能直接调到这个变量或者函数的定义的源文件中,并把光标定义到这一行。用Ctrl + t可以退回原来的地方。

taglist的使用

taglist的简介

taglist插件是一筐基于ctags,在vim代码窗口旁以分割窗口形式显示当前的代码结构概览,增加代码浏览的便利程度的vim插件

taglist的安装

第一步:

taglist的下载网址:Vim源代码浏览器插件下载|SourceForge.net

第二步:

解压:unzip taglist_46.zip.解压之后可以看到文件夹doc和文件夹plugin

第三步:

拷贝:将plugin文件夹里面的taglist.vim拷贝到~/.vim/plugin文件夹下。如果没有~/.vim这个文件夹,可以手动创建一个。

也可以安装在/usr/share/vim/vim81目录下面,只要是官方路径下面就可以

一般用户自己安装的插件建议安装在~/.vim下面

taglist的打开和关闭

在vim的命令模式下输入   Tlist    打开taglist窗口

使用空格键,在屏幕底显示函数原型

在vim的命令模式下输入   TlistClose    关闭taglist窗口

taglist的配置

在vimrc配置文件添加:

let Tlist_Show_ One_ File = 1 只显示当前文件的tags

let Tlist_Exit_OnlyWindow = 1 如果Taglist窗口是最后一个窗口则退出vim

let Tlist_Use_Right_Window = 1 在右侧窗口中显示

let Tlist_File_Fold_Auto_Close =1 自动折叠

let Tlist_Auto_Open = 1 默认打开taglist

let Tlist_Sort_Type = "name" 按姓名排列tags

let Tlist_Process_File_Always = 1 实时更新tags

winmanager的使用

安装步骤

1.在网上下载winmanager.zip插件

2.使用命令unzip解压,j解压后出现两个文件夹:doc和plugin

3.将doc和pulgin文件里面的内容拷贝到~/.vim里面

winmanager的打开和关闭

WMToggle   打开

WMClose   关闭

winmanager自动打开的配置方法

在~/.vimrc中设置:

let g:AutoOpenWinManager = 1

同时,修改~/.vim/plugin/winmanager.vim文件,加入:

"set auto open Winmanager if g:AutoOpenWinManager autocmd VimEnter * nested call s:StartWindowsManager()|'q'|4wincmd w endif

cscope安装及使用

下载安装

在Ubuntu终端输入:

sudo apt-get install cscope

cscope的配置

在/etc/vim/vimrc中加入如下指令:

set cscopequickfix=s-,c-,d-,i-,t-,e-

生成cscope符号表数据库

在源码目录下运行:cscope -Rbq

测试运行

cscope -Rk

运行后出现如下画面:

 查找完毕按下tab键又可以重新查找了

使用

将cscope.out索引文件添加到vim中:直接在vim命令行模式下输入:

cs add cscope.out

查找命令:

cs  find  g  xxxx文件

cs  find  c  xxxx文件

常用的查找命令

s:查找c符号

g:查找定义

d:查找本函数调用的函数

c:查找调用本函数的函数

t:查找字符串

f:查找文件

quickfix的使用

简介

quickfix是vim内置插件,用于浏览命令执行结果信息

常用命令

:copen  打开quickfix 窗口

:cclose  关闭quickfix 窗口

:cc         显示详细错误信息

:cp         跳到上一个错误

:cn         跳到下一个错误

:cl           列出所有错误

:cw         如果有错误列表,则打开quickfix窗口

:col         到前一个旧的错误列表

:cnew     到后一个较新的错误列表

NERD_commenter安装和使用

下载网址:

The NERD Commenter - A plugin that allows for easy commenting of code for many filetypes. : ​​​​​​vim onlinehttps://www.vim.org/scripts/script.php?script_id=1218使用unzip进行解压,得到两个文件夹。一个doc一个plugin文件夹

将两个文件夹里面的内容拷贝到~/.vim下面doc文件夹和plugin文件夹

常用的注释命令

普通模式下:

\cc      注释当前行和选中行

\cu      取消注释

\ca      转换注释的方式 /**/和//

\cA      跳转到当前行结尾添加注释,并进入到插入模式

\cs      添加性感的注释,一般代码开头

\c$      注释当前光标到行末尾之间的内容

\cy       添加注释并复制添加到注释的内容

在visual模式下:

\cc   会注释掉选中的模块

插件superTab的使用

下载网址:

SuperTab - Do all your insert-mode completion with Tab. : vim onlinehttps://www.vim.org/scripts/script.php?script_id=1643安装:

使用vim打开vbm文件:vi   supertab.vbm

在vim命令行模式下输入:UseVimball  ~/.vim      插件就会被安装到~/.vim目录下

配置:

在~/.vimrc中添加如下命令:

let g:SuperTabDefaultCompletionType="context"

c文件和头文件互相切换

a.vim插件的下载地址:

a.vim - Alternate Files quickly (.c --> .h etc) : vim onlinehttps://www.vim.org/scripts/script.php?script_id=31将a.vim拷贝至目录~/.vim/plugin下

头/源文件切换命令:

:A         头文件/源文件切换

:AT       新建vim标签式窗口后切换

:gt         切换标签页

书签的使用

下载地址:

Visual Mark - Visual mark, similar to UltraEdit's bookmark : vim onlinehttps://www.vim.org/scripts/script.php?script_id=1026安装:

将文件拷贝到~/.vim/plugin目录下

配置:

需要修改才能在linux系统中使用

修改第55行将exec":lan mes en_US"改为exec":lan POSIX"

使用:

在normal模式下,使用mm设置书签

使用F2在书签间跳转

在当前行第二次使用mm可以删除标记

保存会话

保存和加载会话信息session

会话信息:当前编辑环境的空窗口,所有的缓冲区,当前目录,折叠相关的信息,帮助窗口,所有的选项和按键映射,所有的标签页,窗口大小

在命令行模式下输入:mksession  文件名   ,创建一个会话文件Session.vim(默认文件)

vim启动后,在命令行模式下输入 source  Session.vim即可恢复

或者启动时直接使用:vim    -S   Session.vim即可恢复

保存和加载Viminfo信息

Viminfo信息:包括 命令行历史,搜索历史,缓冲区列表,非空寄存器内容,全局变量,最近搜搜/替换模式等

保存Viminfo信息:wviminfo   文件名

恢复Viminfo信息: rviminfo   文件名

例如:

先使用   tabedit   文件名  创建标签页,这个时候就有多个标签页

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值