vi编辑器

概述

  • vi是一种全屏幕编辑器(visual),真正的vi编辑器是专用产品,不允许直接用于Linux,但vi有多种兼容程序如:elvis、vim、stevie、和nvi
  • vi [参数] < filename >
    • 用vi编辑器打开指定文件
    • vi +n 文件名
      • 打开文件并将光标置于第n行
  • vi也支持同时编辑多个文件
    • 例如:vi file1 file2
  • 在使用vim编辑文件时如果强制退出终端,会针对当前文件生成一个临时文件,下次再打开这个文件时,会提示有相关的临时缓存文件,并给出几个选项:0只读模式打开、E重新编辑、R恢复、D删除..., 直接回车默认以只读模式打开

安装

  • 有的版本的linux需要单独安装
    • 示例:sudo apt-get install vim
  • 安装ctags
    • 示例:sudo apt-get install ctags

操作模式

命令模式 :

  • :wq 保存退出
    • 同功能的还有 :ZZ、:x、shift+zz
  • :q! 不保存强制退出
  • :w 保存不退出
  • :q 正常退出
  • 移动光标
    • 0 移动到光标所在列的最前面
    • $ 移动到光标所在列的最后面
    • ctrl+d 向下半页
    • ctrl+f 上下一页
    • ctrl+u 向上半页
    • ctrl+b 向上一页
    • L 移动端视窗的最后列
    • H 移动到视窗的第一列
    • b 移动到上个字的第一个字母
    • w 移动到下个字的第一个字母
    • e 移动到下个字的最后一个字母
    • ^ 移动到光标所在列的第一个非空白字符
    • n- 减号 移动到上n列的第一个非空白字符
    • n+ 加号 移动到下n列的第一个非空白字符
    • nG 移动到第n列
    • fxFx 往右移动到x字符上,往左移动到x字符上
    • txTx 往右移动到x字符前往左移动;到x字符前配合f&t使用
    • ;, 重复一次配合f&使用,放方向重复一次
    • /string?string 往右移动到有string的地方,往左移动到有string的地方
    • nN 配合/&?使用,重复一次配合/&?使用,反方向重复一次
    • n( 移动到前n个句子的最前面
    • n) 移动到下n个句子的最前面
    • n{ 移动到前n个段落的最前面
    • n} 移动到下n个段落的最前面
  • 删除与修改
    • x 删除光标所在字符
    • dd 删除光标所在列
    • r 修改光标所在字符
    • R 进入取代状态,新增资料会覆盖原先资料,直到按ESC回到指令模式为止
    • s 删除光标所在字符,并进入输入模式
    • S 删除光标所在列,并进入输入模式
    • u 恢复被删除的资料;ctrl+r 反撤销
    • U 恢复光标所在列的所有改变
  • 编辑指令:是由指令与范围所构成,例如dw是由删除指令d与范围w所组成
    • 指令:
      • D 删除(delete)
      • y 复制(yank)
      • p 放置(put)
      • c 修改(change)
    • 范围:
      • e 光标所在位置到该字的最后一个字母
      • w 光标所在位置到下个字的第一个字母
      • b 光标所在位置到上个字的第一个字母
      • $ 光标所在位置到该列的最后一个字母
      • 0 光标所在位置到该列的第一个字母
      • ) 光标所在位置到下个句子的第一个字母
      • ( 光标所在位置到该句的第一个字母
      • } 光标所在位置到该段落的最后一个字母
      • { 光标所在位置到该段落的第一个字母
:10dd #删除10行
:10yy #复制10行
:10j #往下移10行
:10,20d #删除第10行至第20行的数据
:10d #删除第10行的数据
:%d #删除整个编辑器缓冲区
:10,20co30 #将第10行至第20行的数据复制到第30行之后
:10,20mo30 #将第10行至第20行的数据剪切到第30行之后
  • 查找命令
    • / 在光标之后查找
    • ? 在光标之前查找
    • n 往下继续寻找下一个相同的字符
    • N 往上继续寻找相同的字符
  • 环境设定命令
    • 自动缩进:在编辑文件或程序时,有时会遇到需要缩进的状况
      • :set nu 设定资料的行号
      • :set nonu 取消行号设定
      • :set ai 自动缩进
      • :set noai 取消自动缩进

编辑模式vi

  • a 从光标所在位置后面新增
  • A 从光标所在列最后面的地方开始新增
  • i 从光标所在位置前面插入
  • I 从光标所在列的第一个非空白字符前面开始插入
  • o 在光标所在列下新增一列并进入输入模式
  • O 在光标所在列上方新增一列并进入输入模式

插入/输入模式 i a o

环境变量设置

  • 在.vimrc配置文件中配置以下内容
    • set nu "显示行号
    • syntax on "语法高亮
    • set cindent "c语言的缩进模式
    • set autoindent "自动缩进
    • set tabstop=4 "设置tab缩进长度为4空格
    • set list lcs=tab:|\ " 设置tab提示符号为 "|",注意最后一个反斜杠后面要留有空格
    • set cc=0 " 设置高亮的列,这里设置为0,代表关闭
    • set cursorline " 突出显示当前行
  • .vimrc文件的注释要用双引号开头,而不是井号

推荐文章