vim工具介绍

vim是Linux或者类unix系统下非常实用的文本编辑处理工具,今天将为大家介绍一下常用方法。

指令介绍

vim [option] ... file

  • +#n file: 打开文件后直接让光标移动到第n行(0~文件最大行),如果未指定数字,直接移动到行尾。
  • +/PATTERN file: 使光标移动到与PATTERN首次匹配的行首
  • -b file 以二进制方式打开文件。
  • -d file1 file2 ...比较多个文件,文件不同之处会以不同颜色标记出来,需要注意的是,在关闭文件时,选中其中一个文件,在命令模式下执行:q即可退出。
  • -m file 以只读模式打开文件,即使写入数据,也不会被保存,以这种方式打开文件极大的保证了数据的安全性。
  • -e/-ex file 直接进入ex模式

vim与其它普通编辑器比较特别的一个地方是在不同的模式下,相同的输入会体现出不同的输出,因此vim也可以称之为模式编辑器,vim有三种常用模式,命令模式、编辑模式和扩展命令模式,下面将分别就说明它们之间的特性。

命令模式

命令(Normal)模式也就是我们常用的模式,也可以称之为普通模式,

执行vim filename进入该模式,该模式下主要用于移动光标、查看、复制、删除、剪切、粘贴、查找文本等,在该模式下无法插入文本。

文本查看
字符跳转
  • h:左移; l:右移; j:下移;k: 上移
  • n+cmd n表示数字,cmd表示hjkl,例如:3h向左移动3个字符;3j向下移动3行,其他组合命令类似。
单词跳转
  • b: 回退到当前或者前一个单词的词首
  • e: 跳转到当前或者下一个单词的词尾
  • w: 跳转到下一个单词的词首
  • n+cmd n表示数字,cmd表示b、e、w中任意一个,例如:3b从当前单词开始向前移动到前3个(如果光标位置在某个词的中间位置,则移动2个位)单词的词首。如果当前行不满足条件,则跳转至上一行。
页内跳转
  • H : 跳转到当前页的页首
  • M: 跳转到当前页的页中
  • L:跳转到当前也的页尾
  • zt: 将光标所在位置移动到屏幕顶部
  • zz: 将光标所在位置移动到屏幕中间
  • zb: 将光标所在位置移动到屏幕底部
行内跳转
  • 0 : 移动光标到行首
  • $ : 移动光标到行尾
  • ^ : 移动至行首的第一个非空白字符, 如果没有字符则仍然跳转到行首
行间跳转
  • G : 跳转至文档的最后一行
  • 1G: 跳转第一行
  • nG: n表示数字,跳转至第n行
  • gg: 跳转至第一行
句间跳转
  • ) : 光标移动到下一句
  • ( : 光标移动到上一句
  • } : 光标移动到下一段
  • { : 光标移动到上一段
页面跳转
  • ctrl + f : 向后翻一屏
  • ctrl + b : 向前翻一屏
  • ctrl + d : 向后翻半屏
  • ctrl + u : 向前翻半屏
文本删除
  • x : 删除当前光标位置所在的字符;
  • nx: 删除当前光标位置及之后的n个字符;
  • xp: 替换当前光标及其后字符的位置;
  • ~ : 大小写字符转换;
  • J : 删除当前行后的换行符,主要用于将相邻的两行合并。
文本替换
  • r : 替换光标所在位置的字符,替换之后,下次将不能再替换,如果要多次替换,可以使用R
  • R : 切换成REPLACE模式,可以一直处于替换字符的模式,直至按下esc键。
删除文本
  • d : 结合光标移动的位置删除文本,如果左右移动,则删除单个字符,如果上下移动,则删除从当前位置和移动后的位置所在行的字符;
  • d$ : 删除光标所在位置到行尾之间的字符;
  • d^: 删除至行首;
  • d0: 删除从光标所在位置开始到行首之间的字符;
  • dw: 删除单个单词;
  • de: 删除光标位置到下一个字符之间的字符;
  • db: 删除光标所在位置的到单词的开头部分或者整个单词;
  • dd: 删除一行字符;
  • D: 删除光标所在位置到行尾之间的字符,和d$功能相同。
文本复制
  • y : 范围复制字符,上下移动,则复制上下两行字符,左右移动,则复制移动范围内的单个字符;
  • y$:复制光标位置到行尾之间的字符;
  • y0:复制光标位置到行首之间的字符;
  • ye:复制光标位置到下一个字符之间的字符;
  • yw:复制单个单词;
  • yb:复制光标所在位置的到单词的开头部分或者整个单词
  • yy:复制行,nyy:复制多行,n表示数字,
  • Y: 复制整行
改变文本

修改后切换成插入模式,模式从命令模式–> 插入模式

  • c$: 删除当前位置到行尾之间的字符,并进入编辑模式;
  • c^: 删除当前位置之前到行首之间的字符,并进入编辑模式;
  • c0: 删除当前位置到行首之间的字符,并进入编辑模式;
  • cb: 删除当前位置的单词或者当前位置到单词头,并进入编辑模式;
  • ce: 删除当前位置到上一个单词之间的非空字符,并进入编辑模式;
  • cw: 删除当前光标所在位置的字符并进入编辑模;
  • cc: 删除当前行并输入新内容,相当于S, nss, n表示数字;
  • C: 删除当前广味大行尾之间的字符,并进入编辑模式;
大小写切换
  • gU 将字符转化为大写字符
  • gu 将字符转化为小写字符
    可与其他命令搭配使用,例如:gUG表示将光标位置开始到结束位置的字符转化为大写字符。
特别说明

很多命令支持<start> cmd <end>模式,例如:y 复制、d 删除、gu、gU等。
例子1:
HgUG表示将当前页从头到位转化为大写字符
H: 命令作用开始位置,首行,
gU: 字符转化命令,
G: 命令作用结束位置,尾行。
例子2: 0d$表示删除一整行字符
0: 命令作用开始位置,行首
d: 删除命令;
$: 命令作用结束位置,行尾。

  • di": 删除光标在" "之间的字符
  • yi(: 光标在()之间,则复制()之间的字符;
  • vi[: 光标在[]之间,则选中[]之间的内容;
范围选择
  • 范围定位::start [, end]
    :n: 第n行
    :m, n: 从m行到n行
    m, +n: 从第m行到m+n行
    . :当前行
    $: 最后一行
    %: 行首到行尾,相当于1, $
搜索
  • /PATTERN : 从当前光标所在位置向下查找与PATTERN匹配的内容;
  • ?PATTERN: 从当前光标所在位置向上查找与PATTERN匹配的内容;
  • n : 在使用/PATTERN或者?PATTERN命令查找后,需要继续查找下一个匹配项;
  • N : 在使用/PATTERN或者?PATTERN命令查找后,需要继续查找上一个匹配项;
撤销修改
  • u: 撤销最近一次的修改
  • nu: 撤销前面n次修改
  • U: 撤销光标落在这行后所有此行的修改;
  • ctrl + r 重做最后的撤销
  • .: 重复前一个操作
  • n.重复前一个操作n次
文本标签
  • m[a-zA-Z]: 为某些常用的位置贴上标签,可使用的为52个大小写字母
  • '[a-zA-Z]:跳转到标记的位置,标签之间可来回跳转,一旦标记后将永久存在,后续仍然可以继续使用,除非覆盖。
查找替换
  • 在扩展命令模式下查找替换内容
    格式:s/old-parttern/new-parttern/修饰符
    修饰符:可省略
    i: 忽略大小写;
    g: 全局替换,默认情况下只替换第一次出现的内容;
    gc: 全局替换,每次替换前询问;
  • 全文替换%s/old-parttern/new-parttern/g
  • 另外,可以将/替换为#,例如:%s#old-parttern#new-parttern#g, 其他情况类型。

编辑模式

编辑(Insert)模式又称为插入模式,主要用途是修改、添加文本。

通常我们时先进入命令模式,通过一下几种方式进入编辑模式。

  • A: 在当前光标所在行的行尾出插入
  • a: 在光标所在位置的下一个字符插入
  • I: 在光标所在行的行首插入
  • i: 在光标所在位置插入
  • O: 在光标所在行的上一行另起一行插入
  • o: 在光标所在行的下一行另起一行插入

待文件编辑完成后,输入esc健,退出编辑模式,然后进入扩展命令模式,

  • 如果能确定输入无误,确定保存修改内容,输入:wq,即可保存;
  • 如果想丢弃修改的内容输入:w!,即丢弃已修改内容;
  • 如果想暂存数据。输入w即可;
  • 如果未插入任何内容,输入:q即可;
  • 还有一种保存方式是:x,表示强制保存,建议慎用。

扩展命令模式

扩展命令(extended command)模式又称为ex模式,用于保存,退出等。执行shift :后进入当前模式。

常用扩展命令
  • :w : 保存后,进入命令模式;
  • :w filename 将当前文件另存为filname,并进入命令模式,并留在当前文件中;
  • wq : 保存后退出编辑模式,并退出当前文件;
  • :q! : 丢弃修改内容后退出当前文件;
  • :r filename 读取filename中的文件到当前文件;
  • :! cmd执行命令;
  • :r!cmd读入命令的输出。
  • :nn在这里表示数字,表示第n行。

模式切换

模式之间是可以相互切换的,下面介绍一下它们的切换路径:

命令模式 -----(a/A、i/I、o/O)------>编辑模式
编辑模式 ------------------(esc)------------->命令模式
命令模式 ------------------(:)----------------->扩展命令模式
扩展命令模式---------(esc/enter)------------->命令模式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

banche168

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值