Ubuntu学习之vi编辑器

一、vi简介

  1. vi是 Visual interface 的简称,是Linux 中 最经典的文本编辑器。
    1. vi特点
      1. 没有图形界面 的功能强大的编辑器
      2.  只能是编辑文本内容,不能对字体、段落进行排版
      3. 不支持鼠标操作
      4. 没有菜单
      5. 只有命令
    2. vi 编辑器在 系统管理、服务器管理 编辑文件时,其功能永远不是图形界面的编辑器能比拟的
  2. vim是从vi 发展出来的一个文本编辑器,支持代码补全、编译 及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,被称为编辑器之神。
  3. 在很多 Linux 发行版中直接把 vi 做成 vim 的软连接

二、打开和新建文件

  1. vi 文件名
    1. 如果文件已经存在,会直接打开该文件
    2. 如果文件不存在,会新建一个文件
  2. vi 文件名 +行数 :打开文件并且定位行
    1. 如果只带上 + 而不指定行号,会直接定位到文件末尾
  3. 异常处理
    1. 如果 vi 异常退出,在磁盘上可能会保存有交换文件,下次再使用 vi 编辑该文件时,会看到以下屏幕信息,按下字母 d 可以 删除交换文件即可。
      1. 按下键盘时,注意关闭输入法

三、三种工作模式

  1.  命令模式
    1.  打开文件首先进入命令模式,是使用 vi 的 入口
    2. 通过 命令 对文件进行常规的编辑操作,例如:定位、翻页、复制、粘贴、删除……
    3. 在其他图形编辑器下,通过 快捷键 或者 鼠标 实现的操作,都在 命令模式 下实现
  2. 末行模式 —— 执行 保存、退出 等操作
    1. 要退出 vi 返回到控制台,需要在末行模式下输入命令
    2. 末行模式 是 vi 的 出口
    3. 末行模式命令
      1. w :write 保存
      2. q :quit 退出,如果没有保存,不允许退出
      3. q! : quit 强行退出,不保存退出
      4. wq :write & quit 保存并退出
      5. x :保存并退出
      6. :e :edit会打开内置的文件浏览器,浏览要当前目录下的文件
      7. :n 文件名 :new新建文件
      8. :w文件名 :write另存为,但是仍然编辑当前文件,并不会切换文件
  3. 编辑模式 —— 正常的编辑文字

四、常用命令

  1. 重复次数:在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令 重复执行指定次数
  2. 移动和选择
        1. 移动(基本)
            1. h :向左,食指
            2. j:向下,食指
            3. k:向上,中指
            4. l:向右,无名指

      1. 行内移动
        1. w :word向后移动一个单词
        2. b :back向前移动一个单词
        3. 0 :行首
        4. ^ :行首,第一个不是空白字符的位置
        5. $ :行尾
      2. 行数移动
        1. gg :go文件顶部
        2. G :go文件末尾
        3. 数字gg :go移动到 数字 对应行数
        4. 数字G :go移动到 数字 对应行数
        5. :数字:移动到 数字 对应行数
      3. 屏幕移动
        1. Ctrl + b :back向上翻页
        2. Ctrl + f :forward向下翻页
        3. H :Head屏幕顶部
        4. M :Middle屏幕中间
        5. L :Low屏幕底部
      4. 段落移动
        1. vi 中使用 空行 来区分段落,在程序开发时,通常 一段功能相关的代码会写在一起 —— 之间没有空行
        2. { :上一段
        3. } :下一段
      5. 括号切换
        1. 在程序世界中,()、[]、{} 使用频率很高,而且 都是成对出现的
        2. % :括号匹配及切换
      6. 标记
        1. 在开发时,某一块代码可能需要稍后处理,例如:编辑、查看
        2. 此时先使用 m 增加一个标记,这样可以 在需要时快速地跳转回来 或者 执行其他编辑操作
        3. 标记名称 可以是 a~z 或者 A~Z 之间的任意 一个 字母
        4. 添加了标记的 行如果被删除,标记同时被删除
        5. 如果 在其他行添加了相同名称的标记,之前添加的标记也会被替换掉
        6. mx :mark添加标记 x,x 是 a~z 或者 A~Z 之间的任意一个字母
        7. 'x :直接定位到标记 x 所在位置
      7. 选中文本(可视模式)
        1. 学习复制命令前,应该先学会怎么样选中要复制的代码
        2. 在vi中要选择文本,需要先使用Visual命令切换到可视模式
        3. vi中提供了三种可视模式,可以方便程序员选择选中文本的方式
        4. 按ESC可以放弃选中,返回到命令模式
        5. v :可视模式从光标位置开始按照正常模式选择文本
        6. V  :可视行模式选中光标经过的完整行
        7. Ctrl+v :可视块模式垂直方向选中文本
        8. 可视模式下,可以和移动命令连用,例如:ggVG能够选中所有内容
  3. 编辑操作:删除、复制、粘贴、替换、缩排
    1. 删除文本
      1. x :cut删除光标所在字符,或者选中文字
      2. d :(移动命令)delete删除移动命令对应的内容
      3. dd :delete删除光标所在行,可以ndd复制多行
      4. D :delete删除至行尾
      5. 如果使用可视模式已经选中了一段文本,那么无论使用d还是x,都可以删除选中文本
      6. 删除命令可以和移动命令连用,以下是常见的组合命令:
        1. dw :从光标位置删除到单词末尾
        2. d0 :从光标位置删除到一行的起始位置
        3. d} :从光标位置删除到段落结尾
        4. ndd :从光标位置向下连续删除n行
        5. d代码行G :从光标所在行删除到指定代码行之间的所有代码
        6. d'a :从光标所在行删除到标记a之间的所有代码
    2. 复制、粘贴
      1. 原理:vi中提供有一个被复制文本的缓冲区,复制命令会将选中的文字保存在缓冲区;删除命令删除的文字会被保存在缓冲区;在需要的位置,使用粘贴命令可以将缓冲区的文字插入到光标所在位置。
      2. vi中的文本缓冲区同样只有一个,如果后续做过复制、剪切操作,之前缓冲区中的内容会被替换;vi中的文本缓冲区和系统的剪贴板不是同一个;所以在其他软件中使用CTRL+C复制的内容,不能在vi中通过P命令粘贴;可以在编辑模式下使用鼠标右键粘贴。
      3. y(移动命令):copy复制
      4. yy:copy复制一行,可以nyy复制多行
      5. p:paste粘贴
      6. 命令d、x类似于图形界面的剪切操作——CTRL+X
      7. 命令y类似于图形界面的复制操作——CTRL+C
      8. 命令p类似于图形界面的粘贴操作——CTRL+V
    3. 撤销和重复
      1. 撤销和恢复撤销
        1. u : undo 撤销上次命令
        2. CTRL + r :redo恢复撤销的命令
    4. 查找替换
      1. 替换
        1. r :replace替换当前字符命令模式
        2. R :replace替换当前行光标后的字符替换模式
        3. R命令可以进入替换模式,替换完成后,按下ESC可以回到命令模式,替换命令的作用就是不用进入编辑模式,对文件进行轻量级的修改
      2. 缩排和重复执行
        1. >> :向右增加缩进
        2. << :向左减少缩进
        3. . :重复上次命令
        4. 缩排命令在开发程序时,统一增加代码的缩进比较有用!一次性在选中代码前增加4个空格,就叫做增加缩进;一次性在选中代码前删除4个空格,就叫做减少缩进;在可视模式下,缩排命令只需要使用一个>或者<。
        5. 在程序中,缩进通常用来表示代码的归属关系,前面空格越少,代码的级别越高前面空格越多,代码的级别越低.
      3. 常规查找
        1. /str :查找str
          1. 查找到指定内容之后,使用Next查找下一个出现的位置:
          2. n:查找下一个
          3. N:查找上一个
          4. 如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可
      4. 单词快速匹配
        1. * :向后查找当前光标所在单词
        2. # :向前查找当前光标所在单词
      5. 查找并替换(在vi中查找和替换命令需要在末行模式下执行)
        1. :%s///g 记忆命令格式
        2. :%s/旧文本/新文本/g 全局替换(一次性替换文件中的所有出现的旧文本)
        3. :s/旧文本/新文本/g可视区域替换(先选中要替换文字的范围)
      6. 确认替换
        1. :%s/旧文本/新文本/gc 确认替换
          1. y-yes替换
          2. n-no不替换
          3. a-all替换所有
          4. q-quit退出替换
          5. l-last最后一个,并把光标移动到行首
          6. ^E向下滚屏
          7. ^Y向上滚屏
    5. 插入
        1. i :insert在当前字符前插入文本常用
        2. I :insert在行首插入文本较常用
        3. a :append在当前字符后添加文本
        4. A :append在行末添加文本较常用
        5. o : 在当前行后面插入一空行常用
        6. O :在当前行前面插入一空行常用

    6. 演练举例说明
      1. 演练 连续10个星号
        1. 要实现这个效果可以在命令模式下
        2. 步骤:
          1. 输入10,表示要重复10次
          2. 输入i进入编辑模式
          3. 输入*也就是重复的文字
          4. 按下ESC返回到命令模式,返回之后vi就会把第2、3两步的操作重复10次
        3. 提示:正常开发时,在进入编辑模式之前,不要按数字
      2. 演练 利用可视块给多行代码增加注释
        1. 移动到要添加注释的第1行代码,按^来到行首
        2. 按CTRL+v进入可视块模式
        3. 使用j向下连续选中要添加的代码行
        4. 输入I进入编辑模式,并在行首插入,注意:一定要使用I
        5. 输入#也就是注释符号
        6. 按下ESC返回到命令模式,返回之后vi会在之前选中的每一行代码前插入#

五、分屏命令

  1. :sp[文件名] :split横向增加分屏
  2. :vsp[文件名] :verticalsplit纵向增加分屏
  3. 切换分屏窗口
    1. w :window切换到下一个窗口
    2. r :reverse互换窗口
    3. c :close关闭当前窗口,但是不能关闭最后一个窗口
    4. q :quit退出当前窗口,如果是最后一个窗口,则关闭vi
    5. o :other关闭其他窗口
  4. 调整窗口大小
    1. + :增加窗口高度
    2. -  :减少窗口高度
    3. > :增加窗口宽度
    4. < :减少窗口宽度
    5. = :等分窗口大小

六、常用命令速查图

  1. vimrc
    1. vimrc是vim的配置文件,可以设置vim的配置,包括:热键、配色、语法高亮、插件等
    2. Linux中vimrc有两个位置,家目录下的配置文件优先级更高
      1. /etc/vim/vimrc
      2. ~/.vimrc
    3. 常用的插件有:代码补全、代码折叠、搜索、Git集成……
      1. 网上有很多高手已经配置好的针对python开发的vimrc文件,可以下载过来直接使用

七、其他补充

 

THE END
分享
二维码
打赏
海报
Ubuntu学习之vi编辑器
一、vi简介 vi是 Visual interface 的简称,是Linux 中 最经典的文本编辑器。 vi特点 没有图形界面 的功能强大的编辑器  只能是编辑文本内容,不能对字体、……
<<上一篇
下一篇>>