Linux—vi/vim命令详解(3000字)

目录

vi/vim概念

vi/vim的三种模式

vi/vim常用命令

命令行模式的命令

进入插入模式

从插入模式切换为命令行模式

移动光标

操作文本

其他功能

底行输入模式

保存文件

操作文本

搜索和替换

注释


vi/vim概念

        vi 用来进入 vi 编辑器,vi 编辑器是所有 Unix 及 Linux 系统下标准的文本编辑器,它的强大不逊色于任何最新的文本编辑器

        Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用

vi/vim的三种模式

命令行模式(command mode)

        每次使用命令编辑文件时,默认是命令行模式,可以控制屏幕光标的移动,字符或行的删除,移动复制某区段,

插入模式(Insert mode)

        只有在插入模式下,才可以做文本输入

底行模式(last line mode)

        只能从命令行模式切换到插入模式,可以将文件保存或退出,也可以设置编辑环境,如寻找字符串、列出行号等。

vi/vim常用命令

编辑文件/创建文件

        使用 vi/vim 文件名 可以进行编辑文件或新建文件

切换到插入模式

        在命令模式任意按 a、i 或 o 就能进入到插入模式编辑文件

切换到命令模式

        按 Esc、双击 Esc 或 删除底行内容就能回到命令模式

切换到底行模式

        切换到命令模式之后,输入 : 或者 / 进入底行模式

保存及退出

        : w 文件名 (将文件以指定的文件名保存)

        : wq (保存并退出)

        : q! (不保存强制退出)

命令行模式的命令

进入插入模式

        i,I :i 从光标当前位置开始输入;I 为在目前所在行的第一个非空格符处开始输入

        a,A :a 从目前光标所在位置的下一个位置开始输入;A 为从光标所在行的最后一个字符处开始输入

        o ,O:o 表示在光标所在的下面插入新的一行输入,;O 为在目前光标所在位置的上面插入新的一行开始输入

        取代

        r,R :r 用随后输入的一个字符取代光标所在的字符;R 用随后输入的文本取代从当前光标开始至后面的若干字符,若新输入的字符数超过原有对应字符数,则多出部分就附加在后面,直到按 Esc 退出取代模式 

从插入模式切换为命令行模式

        单击 Esc

        双击 Esc

        删除底行模式内容

移动光标

        h 、j 、k 、l ,分别控制光标的左、下、上、右(也可以使用方向键),想要进行多次移动的话,例如向下移动 20 行,可以使用 20j 或 20↓ 的组合按键

        ctrl  b :屏幕往后移动一页

        ctrl  f :屏幕往前移动一页

        ctrl  u :屏幕往后移动半页

        ctrl  d :屏幕往前移动半页

        0 :移到光标所在行首

        G :光标移动到整个文本的末行,[行号] G:将光标移至指定行的首位

        H :光标移动到当前屏幕的首行,[行号] H:将光标移至指定行的首位

        M :光标移动到当前屏幕中间的首位

        L :光标移动到当前屏幕的末行,[行号] L:光标移动到倒数的指定行首位

        $ :移动到光标所在行的行尾

        ^ :移动到光标所在行的首位

        w / W :光标跳到下段字行的首位

        e / E :光标跳到当前行的行尾或下段字行的行尾

        b / B :光标跳到当前行的首位获上段字行的首位

        gg :光标移动到整个文本的首位

        #| :# 为数字,光标移到该行的第 # 个位置

        #<空格> :# 为数字,光标移动在光标后 # 位

        [行数] + :光标移动到当前行的下一行或指定行的首位

        - :光标移动到当前行的上一行

        ( 、{ :光标移动到整个文本的首位

        ) 、} :光标移动到整个文本的末尾

操作文本

复制 / 粘贴

        yw :复制光标所在位置到行尾的字符

        yy :复制光标所在行

        #yy :# 为数字,复制光标所在向下 # 行

        y1G :复制游标所在行到第一行的所有数据

        yG :复制游标所在行到最后一行的所有数据

        y0 :复制光标所在的那个字符到该行行首的所有数据

        y$ :复制光标所在的那个字符到该行行尾的所有数据

        dd :剪切光标所在行

        #dd :# 为数字,剪切光标所在的向下 # 行

        dG :剪切光标所在到最后一行的所有数据

        d$ :剪切游标所在之后到行尾的字符

        D :剪切光标位置到行尾的所有字符

        d0(数字):剪切游标所在前一位字符到当前行首位

        d1G :剪切光标所在到第一行的所有数据

        dM :剪切从光标所在行至屏幕中间行的全部内容

        p :在光标下一行粘贴

        P :在光标上一行粘贴

删除

        X :删除光标前的一个字符(相当于 backspace 键) 

        x :删除光标所在位置的字符

        #x :# 为数字,删除从光标位置所在后 # 个字符

        dd :删除光标所在行

        #dd :# 为数字,删除光标所在的向下 # 行

        dG :删除光标所在到最后一行的所有数据

        d$ :删除游标所在之后到行尾的字符

        D :删除光标位置到行尾的所有字符

        d0(数字):删除游标所在前一位字符到当前行首位

        d1G :删除光标所在到第一行的所有数据

        dM :删除从光标所在行至屏幕中间行的全部内容

        X :删除光标所在位置的前一个字符

        #X :# 为数字,删除光标所在位置的前 # 个字符

        文本功能

        [行数] J :将光标所在行与下一行或设置指定的行数的数据结合成同一行,通过空白隔开

        ctrl  g :显示光标所在行的行号

        u :撤销前一个动作

        Ctrl  r :重做上一个动作

        . :重复前一个动作

其他功能

        状态显示

        Ctrl G :显示文件的状态信息,包括正在编辑的文件名、是否修改过、当前行号、文件的行数以及光标之前的行占整个文件的百分比

        屏幕调零

        [行号] z [行数] <回车> :将光标所在的行作为屏幕的首行

        [行号] z [行数] . :将光标所在的行作为屏幕的中间行

        [行号] z [行数] - :将光标所在的行作为屏幕的最末行

若给出行号,那么该行号所对应的行就作为当前行显示在屏幕的首行、中间行和最末行,若给出行数,则它规定了在屏幕上显示的行数

例:

10 z 20 <回车> :将文件中的第 10 行作为屏幕显示的首行,并一共显示 20 行

10 z . :将文件中的第 10 行作为屏幕显示的中间行,显示行数为整屏

10 z 5 - :将文件中的第 10 行作为屏幕显示的最末行,显示行数为 5 行

底行输入模式

保存文件

        :w [file-name]:[ 以指定文件名称 ] 保存文件

        :w! :强制保存文件

        :wq [file-name] :[ 以指定文件名称 ] 保存文件并退出

        :wq! :强制保存文件并退出

        :q :退出文件

        :q! :不保存文件并强制退出

        :r [file-name]    在当前文件中读入另一个文件的数据加到光标所在行后面

        :2,3 w [file-name]    将第 2 行 到第 3 行的内容保存成 filename 这个文件

行号

        :set nu(number 缩写):显示行号

        :set nonu :显示行号

        :#(行号):输入 # 回车,就会跳到第 # 行的首位

搜索和替换

        搜索

        / :向下查找,在 / 后输入要查找的内容

        ? :向上查找,在 ? 后输入要查找的内容

        n :重复前一个搜索的动作

        N :反向进行前一个搜索动作

        替换

        [数字] s :表示删除当前光标字符并进入插入模式开始输入,如果在之前加入数字,例如 5,则表示删除从当前光标开始的 5 位字符并进入插入模式开始输入

        [数字] S :表示删除光标所在行的内容并进入插入模式开始输入,如果在之前加入数字,例如 5,则表示删除从当前光标开始往下 5 行内容并进入插入模式开始输入

        :/%s/old/new/g :全文替换指定字符

        c$ :删除从光标开始到该行末行的内容并进入插入模式

        [数字] C :例如数字是 3,删除光标当前位置之后直到下面第 3 行内容并进入插入模式

        [数字] cc :表示删除光标所在整行内容并进入插入模式;如果加上前面的数字,例如 5,则表示删除从光标当前行开始到第 5 行内容并进入插入模式

注释

方法一:块选择(vim)

批量注释

        Ctrl  v 进入块选择模式,然后移动光标选中你要注释的内容,再按 I 进入插入模式输入注释符号如 // 或 #,然后按两下 Esc,系统会自动将你选中的所有行都加上注释

取消注释

        Ctrl  v 进入块选择模式,选中你要删除的行注释符号按 d 即可删除注释

方法二:

        :起始行号,结束行号s/^/注释符/g:在指定的行添加注释

例:

        :10,20s#^#//#g:在 10 到 20 行添加 // 注释

        :10,20s/^/#/g:在 10 到 20 行添加 # 注释

        :起始行号,结束行号s/^注释符//g:取消指定行的注释

例:

        :10,20s#^//##g:在 10 到 20 行删除 // 注释

        :10,20s/#//g:在 10 到 20 行删除 # 注释

若有不足或者不正之处,欢迎指正批评,感激不尽!如果有疑问欢迎留言,绝对第一时间回复!

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

牧魂.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值