目录

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   文件名  创建标签页,这个时候就有多个标签页

vim的使用以及vim插件的配置相关推荐

  1. IDEA安装Vim插件并配置共享VIM和Windows的剪切板

    IDEA安装Vim插件并配置共享VIM和Windows的剪切板 这两天学习了Vim的基本使用后,认为Vim的工作效率还是相当高的,所以便有了Idea中配置Vim使用的想法.也是经历了多重困难,查询了多 ...

  2. Vim之代码异步检测插件 ALE -- 实时检查verilog等代码的正确性

    Vim之代码异步检测插件 ALE 前言 知名的 vim 代码检测插件主要是两个 syntastic neomake ALE ALE 虽是后起之秀,但目前是功能最强大的一个 实时检测.为了让代码可以在编 ...

  3. vim 环境写 markdown 的插件推荐

    vim 环境写 markdown 的插件推荐 本文将介绍在vim环境写markdown文档或者博文的一些好用插件 markdown语法高亮及识别 博主使用vim-markdown做语法高亮.安装方法很 ...

  4. vim python补全_转:VIM python 自动补全插件:pydiction

    这是一个相当不错的 Python 代码自动完成的脚本. 可以实现下面python代码的自动补全: 简单python关键词补全 python 函数补全带括号 python 模块补全 python 模块内 ...

  5. vim 安装_vim实战:插件安装(Vundle,NerdTree)

    一:插件管理器Vundle 1.简介 Vundle是vim的一个插件管理器, 同时它本身也是vim的一个插件.插件管理器用于方便.快速的安装.删除.Vim更新插件.vim Vundle插件官方地址:h ...

  6. vim autoformat php,Linux Vim代码格式化/美化插件vim-autoformat安装

    vim-autoformat是Vim的一款代码自动化格式插件,vim-autoformat会根据文件的后缀,自动调用相应的相应命令进行代码格式化.所以,安装vim-autoformat的同时,还需要安 ...

  7. Vim 分屏功能+无插件Vim编程技巧

    本篇文章主要教你如何使用 Vim 分屏功能. 分屏启动Vim 使用大写的O参数来垂直分屏. vim -On file1 file2 ... 使用小写的o参数来水平分屏. vim -on file1 f ...

  8. vim 中的杀手级插件: vundle (vim 插件管理器)

    From:http://zuyunfei.com/2013/04/12/killer-plugin-of-vim-vundle/ vundle.txt:https://github.com/Vundl ...

  9. ale插件 vim_如何优雅的使用 Vim(二):插件介绍

    如何优雅的使用 Vim(二):插件介绍 插件使用 vim-plug 管理.很长一段时间,我都在用 Vundle,切换到 vim-plug 并非完全必要. " 插件定义开始 call plug ...

最新文章

  1. SketchUp Pro 2021基础入门学习视频教程
  2. kaggle、TDS、arXiv等,我最喜欢的数据科学资源
  3. Sqoop2入门之导入关系型数据库数据到HDFS上(sqoop2-1.99.4版本)
  4. re正则表达式的使用
  5. nacos1.3.2连接mysql_Nacos 1.3.0版本部署连接mysql 8+
  6. 实验吧之NSCTF misc250
  7. sql CHECK ,UNIQUE 约束(mysql)
  8. 双显示器设置:如何设置一台电脑两个显示器
  9. c语言年历表程序设计,c语言程序设计年历显示-20210413153548.docx-原创力文档
  10. 学习vim: vim cheat sheet
  11. 开心消消乐分析与设计
  12. 条形码的码制分类详解
  13. 1.1、信息化和信息系统
  14. 字体下面有背景颜色css,CSS 颜色 字体 背景 文本 边框 列表 display属性
  15. deflate php,PHP Deflate a string
  16. win10 SystemParametersInfo 设置屏保 不好使_Win10:Classic Shell是一款非常不错的系统UI定制工具...
  17. 1人抵1万名黑客的阿里女守护神,私底下竟然是这个样子!
  18. 双阶乘java,超级公式计算器-官方版合集下载-多特
  19. 四川高中计算机大赛官网,四川省教育厅关于公布2018年度四川省中小学电脑制作活动评选结果的通知...
  20. mysql 规则引擎_为什么要用规则引擎?

热门文章

  1. 禁用U盘!隐藏盘符和禁止查看
  2. 虚拟桌面:VmwareVDI架构详解
  3. hosts文件修改后域名无法访问
  4. Rust之错误处理(三):panic!还是不要panic!
  5. 前序中序、中序后序以及前序后序构造二叉树
  6. 智慧工地管理平台系统赋能建筑工地绿色施工
  7. 如何配置一台以机器学习、深度学习为用途的工作站?
  8. 廖雪峰老师个人网站推荐
  9. 自学资源(视频+文本)
  10. 服务器低功耗cpu性能,CPU走低功耗 难以解决服务器功耗问题