zoukankan      html  css  js  c++  java
  • 编辑器之神-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
    • %:全文
  • 相关阅读:
    不注意的小问题
    Hibernate、Spring和Struts工作原理及使用理由
    正则表达式贪婪与非贪婪模式
    Springmvc构造RESTful详细讲解
    正则表达式贪婪与非贪婪模式1
    BOJ二叉排序树的后序遍历
    qsort()应用大全
    辗转相除法求最大公约数(C语言)
    九度题目1014:排名 (结构体多级排序)
    BOJ第三题:二叉树前序遍历
  • 原文地址:https://www.cnblogs.com/ytuan996/p/10591537.html
Copyright © 2011-2022 走看看