编辑器之神-vim

编辑器之神-vim

1 vi简介

vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。Vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。 vi没有菜单,只有命令,且命令繁多。

2 Vi有三种基本工作模式:

  • 命令模式:键盘的任意一个键都当成 “编辑命令”
  • 输入模式:键盘的任意一个键都当成文本内容
  • 末行模式:键盘的任意一个键都当成 “文本管理命令”
    image

2.1 命令模式

任何时候,不管用户处于何种模式,只要按一下ESC键,即可使Vi进入命令模式;我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。

2.2 输入模式

在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键ESC即可。

2.3 末行模式

末行模式也称ex转义模式。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。

3 vim基础操作

vim是从 vi 发展出来的一个文本编辑器

3.1 打开文件

  • vim /path/to/somefile ::G
  • vim +# :打开文件,并定位于第#行
  • vim +:打开文件,定位至最后一行
  • vim +/PATTERN : 打开文件,定位至第一次被PATTERN匹配到的行的行首

3.2 关闭文件

3.2.1 末行模式

  • :q 退出 没有动过文件
  • :wq 保存并退出 动过了,不后悔
  • :q! 不保存并退出 动过了,后悔了
  • :w 保存
  • :w! 强行保存

3.2.2 命令模式

ZZ: 保存并退出 不需要冒号

3.3 编辑(输入)

  • i: 插入光标前一个字符

  • I: 插入行首

  • a: 插入光标后一个字符

  • A: 插入行未

  • o: 向下新开一行,插入行首

  • O: 向上新开一行,插入行首

3.4 命令模式

3.4.1 移动光标

  • 字符
    • h: 左移
    • j: 下移
    • k: 上移
    • l: 右移
  • 单词
    • w: 移至下一个单词的词首
    • e: 跳至当前或下一个单词的词尾
    • b: 跳至当前或前一个单词的词首
  • 行内
    • 0: 绝对行首
    • ^: 行首的第一个非空白字符
    • $: 绝对行尾
  • 行间
    • G:文章末尾
    • 3G:第3行
    • gg:文章开头
  • 翻屏
    • Ctr-f: 向下翻一屏
    • Ctr-b: 向上翻一屏
    • Ctr-d: 向下翻半屏
    • Ctr-u: 向上翻半屏

3.4.2 删除&替换单个字符

  • x:删除光标位置字符
  • 3x:删除光标开始3个字符
  • r:替换光标位置字符

3.4.3 删除命令:

  • dw: 删除光标开始位置的字,包含光标所在字
  • dd: 删除光标所在行,n dd 删除指定的行数 D: 删除光标后本行所有内容,包含光标所在字符

3.4.4 撤销命令:

  • u: 一步一步撤销
  • Ctr-r: 反撤销
  • .: 重复上一次操作的命令

3.4.5 复制粘贴&剪切

  • yy: 复制当前行
  • n yy 复制 n 行
  • p: 在光标所在位置向下新开辟一行,粘贴

3.5 末行模式

3.5.1 set:设置

  • set nu number
  • set nonu nonumber

3.5.2 查找/

  • /after
  • n,N

3.5.3 执行命令

  • !ls -l

3.5.4 s查找并替换

  • 替换操作:
    • r: 替换当前字符
    • R: 替换当前行光标后的字符

s/str1/str2/gi

  • /:临近s命令的第一个字符为边界字符:/,@,#
  • g:一行内全部替换
  • i:忽略大小写

-范围:

  • n:行号
  • .:当前光标行
  • +n:偏移n行
  • $:末尾行,$-3
  • %:全文
posted @ 2019-03-25 00:21  嘿!小伙不错  阅读(202)  评论(0编辑  收藏  举报