zoukankan      html  css  js  c++  java
  • 文本编辑器——VI/VIM


    在Linux中,我们知道,一切皆文件,那么需要修改配置文本编辑器就是必不可少的,而vi/vim就是我们Linux中非常强大编辑器。vim是vi的升级版。接下来我们就一起来看看吧!

    vi/vim

    编辑模式作用
    命令模式 用户执行命令,例如复制行、粘贴行
    输入模式 用于输入文本、修改文本等
    末行模式 用于查找文本、保存修改等
    末行模式命令模式输入模式按两次Esc按:按i、I、a、A、o、O按一次Esc末行模式命令模式输入模式

    输入模式无法直接回到末行模式

    命令模式—>输入模式

    按一下任意一个字母

    • i insert,在当前光标所在字符的前面,转为输入模式
    • I 大写的i,在当前光标所在行的行首转换为输入模式
    • a append,在当前光标所在字符的后面转换为输入模式
    • A 在当前光标所在行的行尾转换为输入模式
    • o open,在当前光标所在行的下方新建一行并转为输入模式
    • O 大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式

    输入模式—>命令模式

    • 按一次ESC

    命令模式—>末行模式

    • 按一次:

    末行模式—>命令模式

    • 按两次Esc

    文件打开后默认处于命令模式下

    • vim [文件名] 打开文件
    • vim +n [文件名] 打开文件并定位到第n行
    • vim +/pattern [文件名] 打开文件并定位到第一次被/pattern匹配到的内容行首

    末行模式

    命令意义
    q! 不保存退出
    wq! 强行保存并退出
    x 强行保存并退出
    q 退出
    wq 保存并退出
    w 保存但不退出
    w! 强制保存

    命令模式

    • 直接使用ZZ保存并退出
    • 在之前学习的时候,并不是很常用这个方式,经常是用wq!来保存退出,但是后来发现还是这个比较方便。但也有弊端,原本在字母小写时直接Shift+Z,就是两个大写的ZZ。结果一不小心就按成了Ctrl+Z了。给终止了,结果就GG。
    • 如果不小心终止了vi、vim。那么下次我们再打开这个文件会有错误的提示,就像是你word没有保存就关闭,下次打开会提示你要不要复原。我们的文本编辑器一样。Linux里会在你打开的目录中新建一个.文件名.swp的文件,不想在每次打开有提示,直接删除这个文件就可以了。

    在命令模式下

    以单词为单位移动

    • w 移动至下一个单词的词首
    • e 跳至当前或下一个单词的词尾
    • b 跳至当前或上一个单词的词首

    逐字符移动

    • h 向左移动一个字符
    • l 向右移动一个字符
    • j 向下移动一个字符
    • k 向上移动一个字符
    • #h 向左移动#个字符
    • #l 向右移动#个字符
    • #j 向下移动#个字符
    • #k 向上移动#个字符

    行内跳转

    • 0 数字0,跳至绝对行首
    • ^ 跳至行首的第一个非空白字符
    • $ 跳至绝对行尾

    行间跳转

    • gg 跳转至第一行
    • G 跳转至最后一行
    • #gg 跳转到第#行
    • #G 跳转到第#行

    句子间跳转

    • ( 左小括号,跳转到上一个句子
    • ) 右小括号,跳转到下一个句子

    段落间跳转

    • { 左大括号,跳转到上一个段落
    • } 右大括号,跳转到下一个段落

    翻屏

    • ctrl+f 向下翻一屏
    • ctrl+b 向上翻一屏
    • ctrl+d 向下翻半屏
    • ctrl+u 向上翻半屏

    可视化模式

    • v 按字符选取内容
    • V 按行(矩形块)选取内容

    字符编辑

    • x 删除光标所在处的单个字符
    • #x 删除光标所在处及其向后共#个字符
    • xp 交换光标所在处的字符及其后面字符的位置

    删除

    • dG=d$ 删除当前光标所在位置到行尾的内容
    • d^ 删除当前光标所在位置到第一个行首非空白字符位置的内容
    • dgg=d0 删除当前光标所在位置到绝对行首的内容
    • #d跳转符删除跳转符范围内的#个,例如:
      • dw 删除一个单词
    • dd 删除当前光标所在行整行
    • #dd 删除包括当前光标所在行在内的#行
    • D 删除当前光标所在行的内容,保留空行

    命令模式下d命令常与跳转命令组合使用

    复制、粘贴

    • yy 复制
    • p 粘贴
    • 小写p
      • 在光标后面或者上一行粘贴
      • 删除或复制的为整行内容,则粘贴至光标所在行的下方
      • 删除或复制的为非整行,则粘贴至光标所在字符的后面
    • 大写P
      • 在光标前面或者下一行粘贴
      • 删除或复制的为整行内容,则粘贴至光标所在行的上方
      • 删除或复制的为非整行,则粘贴至光标所在字符的前面

    替换

    • R 替换模式,替换多个字符
    • r# 将当前光标的字符替换为#,这里的#可以是任何字符

    ##撤销编辑

    • u 撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作
    • ctrl+r 还原最近一次的撤销操作
    • . 重复前一次编辑操作

    在末行模式下

    删除

    • 1,5d 删除第1到第5行

    • 范围表示

    表示方法意义
    . 光标所在行
    $ 最后一行
    +# 光标所在往后的#行
    $-# 倒是第#+1行
    % 表示全文

    文本查找

    • /word 从上往下查找匹配的内容
    • ?word 从下往上查找匹配的内容
    • n 从上往下查找匹配到的内容的下一条
    • N 从下往上查找匹配到的内容的下一条

    行号

    • set nu 显示行号
    • set nonu 取消显示行号

    查找并替换

    • #,# s/word1/word2/g

    例:

    :1,5 s/wj/jay/g  //把第一行到第五行中的wj替换为jay
    
    以上内容均属学习时整理,如有不详或错误,敬请指出。
    
    本文作者: 坏坏
  • 相关阅读:
    JAVA中handleEvent和action的区别
    Hessian的使用以及理解
    Java基础中的RMI介绍与使用
    Callable与Runable接口 submit与execute区别
    XXL-JOB原理--定时任务框架简介(一)
    11.并发包阻塞队列之LinkedBlockingQueue
    并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
    正确实现用spring扫描自定义的annotation
    自贡进入“刷脸卡”时代 人脸识别支付“黑科技”现身自流井老街
    谷歌最新研究:量子计算机能在8小时内破解2048位RSA加密
  • 原文地址:https://www.cnblogs.com/bad5/p/12424293.html
Copyright © 2011-2022 走看看