vi 和 vim 的基本用法

来源:互联网 发布:mac快捷键大全 编辑:程序博客网 时间:2024/05/22 17:04

vi 和 vim 的基本用法

vi 和 vim 是 liunx 内置的编辑器。vi编辑速度是最快的;vim编辑器可以看作vi的高级版本,它实现了用颜色来进行特殊信息的显示。

vim 和 vi 编辑器的三种模式

  • 一般模式: vim 文件名 (直接进入一般模式):在一般模式下,可以进行上下左右的光标移动、删除字符、行,还可以进行复制和粘贴操作
  • 编辑模式,在一般模式中按 i,l,o,O,a,A,r,R 等做任意一个字符后,将进入编辑模式,窗口最底下会显示– INSERT–,此时可以对文本内容进行编辑模式。一般情况下输入 i 进入编辑模式
  • 在编辑模式中,按 ESC 鍵可以回到一般模式。在一般模式中,输入 :,/,? 的任意一个字符,光标将移动到窗口底部,此时可以保存编辑好的文件或离开vi编辑器等。 ** 输入 : 之后得到的命令行模式窗口 ,按 wq : 写入文件,并退出, q! :强制退出不保存。 ! :表示强制退出。。

vim 和 vi 的简单的快捷操作

  • ^(即Shift+6):移动到当前行的开头处 (一定要在一般模式下,就是在编辑模式下按 ESC
  • $(即Shift+4):移动到当前行的结尾处 (也是在一般模式下)
  • 撤消前一个命令:在最后一个命令之后立即输入 u 来撤消该命令 (也是在一般模式下) ====撤消对一行的更改:输入U来撤消你对一行所做的所有更改,这个命令只有在你没将光标移动到该行以外时才生效。
  • 删除一行:将光标放置到该行的任意处并输入dd
  • 删除到文件的结尾:为删除从当前行到文件结尾的所有内容,需输入dG
  • 为删除一个字符,需将光标放置在要删除的字符上并输入x ; 为删除光标之前(其左边)的一个字符,需输入X
  • 复制一行命令:yy
  • 粘贴命令:p
  • 输入 /,并在 / 后面输入要查找的串,然后按下回车,查找到后会在查找到的东西上回一直会出现亮点:输入 :noh 撤销,输入 n 跳转到该串的下一个出现处,输入 N 跳转到该串的上一个出现处
  • 显示行号 : set number
  • 取消行号显示 : set nonumber
  • 设置显示用户模式 : set showmode
  • 设置文件只读 : set readonly
  • 一般模式下按’shift + 9’ 跳到段落的开始,按 shift +0 跳到段落的末尾
  • H(home) 移动到屏幕最顶部,按 L 键可以将光标移动到屏幕最底部, 按 M 键可以将光标移动到屏幕中间
  • CTR+D(Down) 向下翻屏移动光标
  • CTR+U(UP)向上翻屏移动光标,命令前面还可以加数字表示翻屏多少行
  • CTR+F(Forward) 与PageDown键,显示下一屏文本
  • CTR+B(Backward) 与PageUp显示上一屏改文本
  • G(Globalize) 命令将光标移动到指定行号,在一般模式下,直接输入 行号+ G,移动到文本的指定行数

编辑文本

  • 插入文本 :在一般模式下,按 I、i、a或A 进行文本插入,其中 i 命令用于在光标之前插入文本内容,I 表示在行开始插入,a 表示在光标之后插入,A 则表示在行尾插入。
  • 新加入一行输入:直接在一般模式下,输入 o 表示在当行下的下方创建一个新行,O 表示在当前行的上方打开一个新行
  • 文本替换:在一般模式下输入命令 r + 要替换后的字符(光标要在被替换的字符上) 实现替换单个字符,替换完成后直接返回一般模式。命令Rr 相同,只是要手动按 ESC 鍵后返回一般模式

文本的删除操作

  • x 删除光标右边的字符,每次删除一个,如果指定3x,则每次删除三个 ,X 删除光标左边的字符,每次删除一个,如果指定`3X,则每次删除三个
  • dd 命令删除一行
  • dl 删除字符,与x命令相同
  • d0 从行首开始删除,到光标处为止
  • d) 从当前光标开始,删除到句子的末尾
  • ~ 如果字符是大写,则自动转换成小写,如果是小写,则自动转换成大写

缓存区的使用

  • 在利用vim进行文本编辑时,编辑修改后的文本不会立即保存到硬盘上,而是保存在缓冲区中,如果没有把缓冲区里的文件存盘,原始文件不会被更改。vim在打开文件时将文本内容读到缓冲区中,在进行文本编辑时,修改的文本保存在缓冲区,此时硬盘上的原文件不变。下面让我们来演示一下缓冲区的使用。 (在一般模式的输入: buffers查看缓存区的情况)


    在命令模式输入:open test1.txt进入test1.txt编辑界面,然后再输入:buffers查看缓冲区状态,得到如下结果
  • 可以看到此时test1.txt加载为活动缓冲区,而test2.txt则被加载到交换缓冲区。此时利用:bprevious命令可以切换test2.txt为活动缓冲区,test1.txt 为交换缓存区
  • 其他的缓存区命令

文件的存盘和读取

  • 保存并退出: 在编辑模式中,如果文本编辑任务已经完成,想直接保存退出,返回到 Linux CLI 命令行的话,直接按 ESC 然后按 ZZ即可。
  • 读取文件内容到缓冲区: 在编辑模式中,采用:r 文件名 命令读取文件内容到当前缓冲区;例如,:r test1.txt 可以 test1.txt 文件内容写到缓冲区
  • 将缓冲区内容写到文件: 在编辑模式中,采用 :w 命令将修改后的文件写到磁盘,也可以使用 :wq 命令将修改的文件写到磁盘上后退出vim返回inux CLI,如果不想保存直接退出,则使用 :q! 命令直接退出vim,返回到CLI命令行。

文本的查找

  • 正则表达式搜索: 正则表达式搜索是指加入了像 ^,$,. 等特殊匹配字符,它们的作用如下表

文本替换

  • 文本替换使用以下语法格式:

    : s/well/good/  替换当前行第一个 well 为 good: s/well/good/g 替换当前行所有 well 为 good:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good:n,$ s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good , n 为数字,若 n 为 .,表示从当前行开始到最后一行:% s/well/good/(等同于 :g/well/s//good/) 替换每一行的第一个 well 为 good:% s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good###################可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符: s#well/#good/# 替换当前行第一个 well/ 为 good/:% s#/usr/bin#/bin#g  可以把文件中所有路径/usr/bin换成/bin