vim 编辑器

\vi: Visual Interface

文本编辑器种类

  • 行编辑器: sed
  • 全屏编辑器: nano, vim

vim: vi improved

使用

vim: 模式化的编辑器

  • 基本模式:

    • 编辑模式
    • 命令模式
    • 输入模式
  • 打开文件 vim [options] files

    • ** options **
      • +#: 打开文件后,直接让光标处于第#行的行首
      • +/PATTERN: 打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
  • 模式转换

    • 编辑模式 --> 输入模式
      • i: insert, 在光标所在处前面输入
      • a: append, 在光标所在处的后面输入
      • o: 在当前光标所在行的下方插入一个新行
      • I: 在当前光标所在的行首输入
      • A: 在当前光标所在行的行尾输入
      • O: 在当前光标所在行的上方插入一个新行
      • c:
      • C:
    • 输入模式 --> 编辑模式
      • ESC
    • 编辑模式 --> 命令模式
      • :
    • 命令模式 --> 编辑模式
      • ESC
  • 光标跳转

    • 子符间跳转:
      • h, j, k, l
        • h: 左
        • j: 下
        • k: 上
        • l: 右
      • #COMMAND: 跳转由#指定的个数的字符
    • 单词间跳转:
      • w: 下一个单词的词首
      • e: 当前或下一个单词的词尾
      • b: 当前或前一个单词的词首
    • 行首行尾跳转:
      • ^: 跳转到行首的第一个空白字符
      • 0: 跳转至行首
      • $: 跳转至行尾
    • 行间移动:
      • #G: 跳转至由#指定行
      • G: 最后一行
      • 1G,gg: 第一行
    • 句间移动
      • ): 往后移动一句
      • (: 往前移动一句
    • 段落间移动
      • }: 向后移动一段
      • {: 向前移动一段
  • vim的编辑命令

    • 字符编辑

      • x: 删除光标处的字符
      • #x: 删除光标处其实的第#个字符
      • xp 交换光标所在处的字符及其后面字符的位置

    • 替换命令(r,replace)

      • r: 替换光标所在处的字符
    • 删除命令

      • d: 删除命令, 可结合光标跳转字符实现范围删除

        • d$: 光标一直到行尾的字符
        • d^: 光标一直到行首的字符
        • d0:
        • dw
        • de
        • db
          • #command

      • dd: 删除光标所在的行

        • #dd: 多行删除
      • D: 删除光标所在行的所有字符

    • 粘贴命令(p, put, paste)

      • p: 缓冲区存的如果为整行, 则粘贴在当前光标所在的行的下方; 否则, 则粘贴至当前光标所在处的后面
      • P: 缓冲区存的如果为整行, 则粘贴在当前光标所在行的上方; 否则, 则粘贴至当前光标所在处的前面
    • 复制命令(y, yank)

      • y: 复制, 工作行为与d命令相似
        • y$
        • y0
        • y^
        • yw
        • ye
        • yb
          • #yy: 复制多行

    • 改变命令(c, change)

      • c: 修改
        * 编辑模式 --> 输入模式
        • c$
        • c^
        • c0
        • cb
        • ce
        • cw
          • #command
        • cc: 删除并输入新的内容
          • #cc
    • 可视化模式

      • v: 按字符选定
      • V: 按行选定

        Note: 经常结合编辑命令:d c y

    • 撤销此前的编辑:

      • u(undo): 撤销此前操作
        • #u: 多次撤销
    • 撤销此前的撤销 Ctrl+r

    • 重复前一个编辑操作"."

  • 翻屏操作

    • Ctrl+f: 向文件尾部翻一屏

    • Ctrl+b: 向文件首部翻一屏

    • Ctrl+d: 向文件尾部翻半屏

    • Ctrl+u: 向文件首部翻半屏

  • vim中的命令模式

    • (1) 地址定界
      • :start_pos,end_pos)
        • #: 具体第#行, 例如2表示第2行
        • #,#: 从左侧#表示行起始, 到右侧#表示行结尾
        • #,+#: 从左侧#表示的行起始, 到右侧#+#表示行尾
        • .: 当前行
        • $: 最后一行
        • %: 全文, 相当于1,$
        • /PATTERN1/,/PATTERN2/: 从第一次被PATTERN1模式匹配到的行开始, 一直到被PATTERN2匹配到的行结束
          • #,/PATTERN/
          • /PATTERN/,$
      • 使用方式
        • 后跟一个编辑命令
          • d
          • y
          • w /PATH/TO/SOMEWHERE: 将范围内的行另存至指定文件中
          • r /PATH?FROM/SOMETHERE: 从指定位置插入指定文件中的所有内容
    • (2) 查找
      • /PATTERN: 从当前光标所在处向文件尾部查找
      • ?PATTERN: 从当前光标所在处向文件首部查找
        • n: 与命令同方向
        • N: 与命令反方向
    • (3) 查找并替换
      • s: 在命令模式下完成查找替换操作
        • s/要查找的内容/替换为的内容/修饰符
          • 要查找的内容, 可使用模式
          • 替换为的内容, 不能使用模式, 但是可以使用\1,\2,\3....等后向引用符号,还可以使用&引用前面查找时查找到的整个内容
          • 修饰符
            • i: 忽略大小写
            • g: 全局替换 默认情况下, 每行只替换第一次出现

        Note: 查找替换中的分割符/可以替换为其他字符例如@,#,

  • 多文件模式

    • vim FILE1 FILE2 FILE3 ...
      • :next 下一个
      • :prev 前一个
      • :first 第一个
      • :last 最后一个
      • :wall 保存所有
      • :qall 退出所有
  • 窗口分割模式

    • vim -o|-O FILE1 FILE2 ...

      • -o: 水平分割
      • -O: 垂直分割
    • 在窗口间切换: Ctrl+w,arrow|h,j,k,l

    • 单文件窗口分割:

      • Ctrl+w,s: split, 水平分割
      • Ctrl+w,v: vertical, 垂直分割
  • 定制vim的工作特性:

    • 配置文件: 永久有效
      • 全局: /etc/vimrc
      • 个人: ~/.vimrc
    • 命令模式: 对当前vim进程有效
    • (1) 行号:
      • 显示: set number, 简写为set nu
      • 取消显示: set nonumber, 简写为set nonu
    • (2) 括号匹配
      • 匹配: set showmatch, 简写为set sm
      • 取消: set noshowmatch, 简写为set nosm
    • (3) 自动缩进
      • 启用: set ai
      • 禁用: set noai
    • (4) 高亮搜索
      • 启用: set hlsearch
      • 禁用: set nohlsearch
    • (5) 语法高亮
      • 启用: syntax on
      • 禁用: syntax off
    • (6) 忽略字符的大小写
      • 启用: set ic
      • 不忽略: set noic

你可能感兴趣的:(vim 编辑器)