Linux之Vim常用命令

1 普通模式

以下命令请在普通模式执行

1.1 进入命令模式命令

  • vi filename : 打开或新建文件,并将光标置于第一行首
  • vi +n filename :打开文件,并将光标置于第n行
  • vi + filename :打开文件,并将光标置于最后一行首
  • vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
  • vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
  • vi filename....filename :打开多个文件,依次编辑

1.2 移动光标

  • j:向下
  • 20j: 向下移动 20 行
  • k:向上
  • h:向左
  • l:向右
  • 0:数字0,到行首
  • ^:到行首第一个字符,如果前面有空格的话
  • $:到行尾
  • n$:光标移至第n行尾
  • gg:快速到文件头
  • G:快速到文件尾
  • 50G:跳转到第 50 行
  • n+:光标下移n行
  • n-:光标上移n行
  • w:光标跳到下个字的开头
  • e:光标跳到下个字的字尾
  • b:光标回到上个字的开头
  • #l:光标移到该行的第#个位置,如:5l,56l。
  • ctrl+ b:屏幕往移动一页。
  • ctrl + f:屏幕往移动一页。
  • ctrl + u:屏幕往移动半页。
  • ctrl + d:屏幕往”前”移动半页。
  • ctrl + g列出光标所在行的行号
  • space:光标右移一个字符
  • Backspace:光标左移一个字符
  • ):光标移至句尾
  • ( :光标移至句首
  • }:光标移至段落开头
  • {:光标移至段落结尾
  • H :光标移至屏幕顶行
  • M :光标移至屏幕中间行
  • L :光标移至屏幕最后行

注意:请不要在插入模式进行光标移动,效率很低下

1.3 复制

  • yy:复制一行
  • #yy:例如,6yy表示拷贝从光标所在的该行往下数6行文字
  • 8yy:向下复制8行
  • yw:复制光标开始的一个单词
  • #yw:复制#个字到缓冲区
  • y$:复制光标到行尾
  • yfA:复制光标到第一个大写A中间的内容
  • y2fA:复制光标到第二个大写A中间的内容
  • n,my:指定n到m行复制

1.4 剪切

  • x:向后剪切一个一个字符,如果是在行尾,则为向前剪切
  • 4x:剪切4个
  • xp:非行尾交换两个字符,如从bs变成sb

1.5 删除

  • dd:删除一行
  • 100dd:删除100行
  • dw:删除一个单词
  • df":删除到出现的第一个双引号
  • d^:删除至行首
  • #dd:从光标所在行开始删除#行
  • x:每按一次,删除光标所在位置的后面一个字符。
  • #x:例如,6x表示删除光标所在位置的后面6个字符。
  • X:大写的X,每按一次,删除光标所在位置的前面一个字符。
  • #X:例如,20X表示删除光标所在位置的前面20个字符。
  • Ctrl+u:删除输入方式下所输入的文本

注意:删除的内容会放到剪贴板,按p即可粘贴到其他地方。

1.6 粘贴

  • p(小写):粘贴复制或剪切的内容,将缓冲区内的字符贴到光标所在位置。
    在光标下一行粘贴
    注意:所有与y有关的复制命令都必须与p配合才能完成复制与粘贴功能
  • 5p:将复制或剪切的内容粘贴5次
  • P(大写):在光标上一行粘贴(插入)

1.7 替换和撤销

  • r+<待替换字母>:将游标所在字母替换为指定字母
  • R:连续替换,直到按下Esc
  • cc:替换整行,即删除游标所在行,并进入插入模式
  • cw:替换一个单词,即删除一个单词,并进入插入模式
  • c#w:例如,c3w表示更改3个字
  • u{n}:撤销一次或n次操作
  • U(大写):撤销当前行的所有修改
  • Ctrl+r:redo,即撤销undo的操作

1.8 查找并替换

替换光标所在行第一个匹配的字符串:

# 语法
:s/旧字符串/新字符串
# 实例
:s/one/two

替换光标所在行所有旧字符串为新字符串:

# 语法
:s/旧字符串/新字符串/g

替换第几行到第几行中所有字符串:

# 语法
:n,m s/旧字符串/新字符串/g

# 实例
:2,4 s/one/two/g

最常用的就是全文替换了:

# 语法
:%s/旧字符串/新字符串/g

2 命令模式

以下命令请在命令模式下执行
在普通模式下,输入:即可进入。

2.1 退出编辑器

  • wq:保存当前文件并退出或者x
  • wqa:保存所有文件并退出
  • q!: 不保存,强制退出
  • qa!: 有多个文件被打开,同时退出

2.2 调整文本

  • %s/$/sth/ :在行尾追加sth
  • %s/^M//g :替换掉dos换行符,\^M使用ctrl+v + Enter即可输入
  • :g/^\s$/d* :删除空行以及只有空格的行
  • %s/#.*//g :删除#之后的字符,没错,这里使用的是正则。
  • ce:使本行文本内容居中
  • ri:使本行文本内容靠右
  • le:使本行文本内容靠左

2.3 查找字符串

  • / 关键字:从光标开始处向文件尾搜索,先按/键,再输入想寻找的字符,如果第一次找的关键字不是想要的,可以一直按n会往后寻找到要的关键字为止。
  • ? 关键字:从光标开始处向文件首搜索,先按?键,再输入想寻找的字符,如果第一次找的关键字不是想要的,可以一直按n会往前寻找到要的关键字为止

在普通模式下,按下/直接进入查找,输入相应的字符串按确定即可

  • n:查找下一个匹配
  • N:查找上一个匹配
  • 2n:查找下面第二个匹配

3 vim的3种模式的关系图

  • 命令行模式command mode) :
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
  • 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字输入,按ESC键可回到命令行模式
    i, I 进入输入模式 Insert mode : i 为从目前光标所在处输入, I 为在目前所在行的第一个非空格符处开始输入
    a, A 进入输入模式 Insert mode : a 为从目前光标所在的下一个字符处开始输入, 从光标所在行的最后一个字符处开始输入
    o, O 进入输入模式 Insert mode : o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在处的上一行输入新的一行
  • 底行模式(last line mode)
    将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等

4 vim时其他命令

4.1 显示隐藏行号

:set number 或者 :set nu 显示行号
:set nonumber 或者 :set nonu 隐藏行号
##号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行

4.2 底行模式下命令

选项设置

  • :set all:列出所有选项设置情况
  • :set term:设置终端类型
  • :set ignorance:在搜索中忽略大小写
  • :set list:显示制表位(Ctrl+I)和行尾标志($)
  • :set number:显示行号
  • :set report:显示由面向行的命令修改过的数目
  • :set terse:显示简短的警告信息
  • :set warn:在转到别的文件时若没保存当前文件则显示NO write信息
  • :set nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
  • :set nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
  • :set mesg:允许vi显示其他用户用write写到自己终端上的信息

Leave a Comment

Your email address will not be published.

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据