zoukankan      html  css  js  c++  java
  • Vi&Vim

    1. 简介:

      Vi编辑器是所有Unix及Linux系统下标准的编辑器,在Unix及Linux系统的任何版本,Vi编辑器是完全相同的,Vi也是Linux中最基本的文本编辑器。

      ​ Vim都是Linux中用的最多的编辑器,与Vi不同的是,Vim比较高级,可以视为Vi的升级版本。Vi使用于文本编辑,但是Vim更适用于coding(写代码的)。

      Vim特点

      • 惯于使用Windows的人可能不太习惯使用Vim;
      • Vim是一个功能强大的全屏幕文本编辑器,是 Linux/UNIX上最常用的文本编辑器Vi;
      • Linux上很多命令默认调用的编辑器都是Vim(Linux还有emacs等编辑器,大家熟练之后可以选用自己喜欢的);
      • 可以建立、编辑、显示文本文件;
      • Vim没有菜单,只有命令。只能通过命令来下达指令来进行编辑等操作。
    2. Vim三种模式:

      • 命令行输入Vi/Vim+filename(已经存在的文件名或者创建一个新文件),Vi之后默认进入命令模式;
      • 进入命令模式后等待输入正确指令,输入i/a/o进入像Windows记事本一样的插入模式;
      • 完成修改之后摁Esc之后回到命令模式,输入:可以进入编辑模式;
      • 在编辑模式下输入命令之后(即 “ : ” 之后)回车即可执行,编辑模式命令执行完之后会自动回到命令模式;
      • 命令模式下输入:wq即可保存退出。
      image-20200422211550667
    3. 命令模式:使用 Vim 编辑文件时,默认处于命令模式,敲的任何一个字符系统都会当成命令来处理。在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等)。

      image-20200422215635689
    4. 输入模式:在命令模式状态下输入 i/a/o 等插入命令可以进入输入模式,在该模式Vim可以对文件执行写操作,类似于在 Windows 系统的文档中输入内容。

      image-20200422215758431

    5. 编辑模式:在在命令模式状态下按:进入编辑模式,可以在末行:之后输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等),命令执行后会自动返回命令模式。

      image-20200422215824703

      任何模式下按Esc键都可以返回命令模式。

    6. Vim常用命令(在命令模式下输入):

      • 插入命令

        命令 作用
        i 在当前光标所在字符前插入随后输入的文本,光标后的文本相应向右移动
        I 在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符
        o 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
        O 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
        a 在当前光标所在字符后插入随后输入的文本
        A 在光标所在行的行尾插入随后输入的文本
      • 定位命令

        命令 作用
        :set nu 设置行号
        :set nonu 取消行号
        gg 到第一行
        G 到最后一行
        nG 到第n行
        :n 到第n行
        $ 移至行尾
        0 移至行首
      • 删除命令

        命令 作用
        x 删除光标所在处字符
        nx 删除光标所在处后n个字符
        dd 删除光标所在行
        ndd 删除当前行(包括此行)后 n 行文本
        dG 删除光标所在行到文件末尾内容
        D 删除光标所在处到行尾内容
        :n1,n2d 删除从 a1 行到 a2 行的内容
      • 复制、粘贴和剪切命令

        命令 作用
        yy 复制当前行
        nyy 复制当前行以下n行
        dd 剪切当前行
        ndd 剪切当前行以下n行
        p、P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行
      • 替换和取消命令

        命令 作用
        r 取代光标所在处字符
        R 从光标所在处开始替换后面等长字符,按Esc结束
        u 取消上一步操作
        :n1,n2s/a1/a2/g 将文件中 n1 到 n2 行中所有 a1 都用 a2 替换
        :g/a1/a2/g 将文件中所有的 a1 都用 a2 替换
        :1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
        :%s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
      • 搜索和搜索替换命令

        命令 作用
        /string 搜索指定字符串
        搜索时忽略大小写 :set ic
        /^abc 查找以 abc 为行首的行
        /abc$ 查找以 abc 为行尾的行
        ?abc 从光标所在为主向后查找字符串 abc
        n 向同一方向重复上次的查找指令
        N 向相反方向重复上次的查找指令
        :%s/old/new/g 全文替换指定字符串
        :n1,n2s/old/new/g 在一定范围内替换指定字符串

        要查找的字符串是严格区分大小写的,如果想忽略大小写,则输入命令 :set ic;调整回来输入:set noic

        如果在字符串中出现特殊符号,则需要加上转义字符 ""。常见的特殊符号有 、*、?、$ 等。如果出现这些字符,例如,要查找字符串 "10$",则需要在命令模式中输入 "/10$"。

      • 保存和退出命令

        命令 作用
        :w 保存修改
        :w new_filename 另存为指定文件
        :wq 保存修改并退出
        ZZ 快捷键,保存修改并退出
        :q! 不保存修改退出
        :wq! 保存修改并强制退出(文件所有者及root可使用)

      vi-vim-cheat-sheet-sch

  • 相关阅读:
    iPhone UIButton图标与文字间距设置【转】
    UIButton左边图片右边文字的做法
    UICollectionViewCell设置阴影
    ARC中__bridge, __bridge__transfer, __bridge_retained 关系
    NSFileHandle的用法(用于读写文件)
    自定义FrameWork
    IOS7 适配以及向下兼容问题
    IOS 7 UITableView cell lines不能靠左解决方法
    xml报错“cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element”
    《Effective Java》笔记 :(一)创建和销毁对象
  • 原文地址:https://www.cnblogs.com/yangyu-IoT/p/12757959.html
Copyright © 2011-2022 走看看