zoukankan      html  css  js  c++  java
  • 跟着鸟哥学Linux系列笔记2-第10章VIM学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念

    跟着鸟哥学Linux系列笔记0-如何解决问题

    跟着鸟哥学Linux系列笔记1

    常用的文本编辑器:Emacs, pico, nano, joe, vim

    VIM-为什么选择vi编辑器

      1. 所有Unix Like系统都会内置vi编辑器,而其他文本编辑器则不一定存在

      2. 很多软件的编辑接口都会主动调用vi,例如contab, visudo, edquota

      3. vim具有程序编辑能力,可以主动以字体颜色辨别语言正确性

      4. 程序简单,编辑速度相当快速

      第2点比较重要,因为太多Linux命令默认使用vi作为数据编辑的接口

    vi的使用:

      vi分为3种模型:一般模式,编辑模式,命令模式

    一般模式:以vi打一个文件进入一般模式,可以使用上下左右键来移动光标,可以删除字符或删除整行,也可以复制,粘贴文件数据

    编辑模式:在一般模式可以删除、复制、粘贴,但却无法编辑文件内容,要等到你按下i, o, a, r等任一个字母后才能进入编辑模式,按下这些键之后,在界面的左下方会出现INSERT或REPLACE,才可以进行编辑,如果要回到一般模式,则必须按下ESC退回编辑模式

    命令行模式:在一般模式中,输入:, /, ? 3个中的任意一个字符就可以将光标移动到最下面一行,在这个模式中,可以查找数据、读取、保存、大量替换字符、离开vi、显示行号等

    下图为相互转换图:

    按键说明:

    移动、翻页

    h: 光标向左移动一个字符,同方向左键

    j: 光标向下移动一个字符,同方向下键

    k: 光标向上移动一个字符,同方向上键

    l: 光标向后移动一个字符,同方向向右键

    多个字符移动则为:n+方向,如:向左移动30个字符为30h

    ctrl+f: 向下翻页

    ctrl+b: 向上翻页

    ctrl+d: 向下翻半页

    ctrl+u: 向上翻半页

    +: 光标移到非空格的下一行

    -: 光标移到非空格的上一行

    n+空格:向后移动n个字符,20[space],向后移动20个字符

    0或home: 移到这一行最前面

    $或end: 移到到这一行最后面

    H: 光标移至屏幕最上方那行第一个字符

    M: 光标移至屏幕中央那行第一个字符

    L: 光标移至屏幕最下方那行最后第一个字符

    G: 移到文件最后一行

    nG: 移至文件第n行

    gg: 移至文件第一行

    n[Enter]: 光标向下移动n行

    /word: 向下查找

    ?word: 向上查找

    n: 向下查找

    N: 向上查找

    替换

    :n1,n2s/word1/word2/g: 在n1~n2之间找word1, 并替换为word2

    :1, $s/word1/word2/g: 在1~最后一行之间找word1, 并替换为word2

    :1, $s/word1/word2/gc: 在1~最后一行之间找word1, 并替换为word2,在所有替换之前提示用户

    删除

    x, delete: 向后删除一个字符

    X, backspace: 向前删除一个字符

    nx: 向后删除n个字符

    nX: 向前删除n个字符

    dd: 删除光标所在的那一整行

    ndd: 删除光标所在行的向下20行

    d1G: 删除光标所在列第1行的所有数据

    dG: 删除光标所在列到最后一行的所有数据

    d0: 删除从光标所在处到该行的最前面一个字符

    复制

    yy: 复制光标所在的那一行

    nyy: 复制光标所在的向下行

    y1G:复制光标所在行到第一行的所有数据

    yG: 复制光标所在行到最后一行的所有数据

    y0: 复制光标所在那个字符到该行行首的所有数据

    y$: 复制光标所在那个字符到该行结尾的所有数据

    粘贴

    p, P将已复制的数据在光标下一行粘贴,大写P则为贴在光标上一行

    其他

    J: 将光标所在行与下一行的数据结合成同一行

    c: 重复删除,例如10cj, 向下删除10行

    u: 复原前一个操作

    ctrl+r: 重做上一个操作

    .: 恢复前一个操作

    编辑模式:

    i: 从目前光标所在处插入

    I: 从目前光标所在行第一个非空格符处开始插入

    a: 从目前光标所在处下一个字符插入

    A: 从目前光标所在行的最后一个字符插入

    o: 从目前光标所在的下一行处插入新的一行

    O: 从目前光标所在的上一行处插入新的一行

    r: 替换光标所在的那个字符一次

    R: 替换光标所在行所有匹配字符

    命令行模式:

    :w: 将编辑的数据写入到硬盘中

    :w!: 若文件属性为“只读”时,强制写入文件,写入前会校验权限

    :q: 退出vi

    :q!: 强制离开不保存文件

    :wq: 保存后离开

    :wq!: 强制保存并离开

    ZZ: 大写Z,若文件无更改,则不保存离开;若文件有更改,则保存离开

    :w[filename]: 将编辑文件保存为另一个文件

    :r[filename]: 在编辑的数据中,读入另一个文件的数据,将file这个文件内容加到光标所在行后面

    :n1,n2 w[filename]: 将n1~n2内容保存成filename文件

    :! command: 暂时离开vi到命令行模式下执行command的显示结果,例如::! ls /home即可在vi当中查看/home下面以ls输出的文件信息

    :set nu: 显示行号,设置之后,会在每一行前缀显示行号

    :set nonu: 不显示行号

    vim的备份文件,恢复与打开时的警告信息

    vim会主动创建备份文件:/tmp/vitest/.man.con.swp, 以swp结尾的备份文件

    在编辑时,不正常保存,再撕开时会找开,*.swp文件

    命令:alias,将显示所有的简写

    块选择:

    ctrl+v: 光标移动过的地方开始反白

    y: 将反白地方复制

    d: 将反白地方删除

    多文件编辑:

    :n: 编辑下一个文件

    :N: 编辑上一个文件

    :files: 列出目前这个vim打开的所有文件

    >vim filename / filename2

    多窗口功能:

    在命令行输入::sp[filename],即可多窗口编辑,以下为详细步骤

    1. 先打开文件:vim /man.config

    2. 输入: :sp

    3. 输入:G

    4. 再输入::sp /man.config

    5. 此时3屏显示同一个文件

    各个屏幕之间切换:ctrl+w+k(向上键): 找到上一个编辑窗口,ctrl+w+j(向下键): 找到下一个编辑窗口,ctrl+w+q: 结束离开

    vim环境设置与记录:~/.vimrc, ~/.viminfo

    查看设置,在一般模式输入::set all,即可查看当前文件所有设置

    整体vim设置值,一般是放在/etc/vimrc文件中,不过不建议修改它,可以修改~/.vimrc这个文件,默认不存在,可以自行手动创建

    vim常用命令示意图:

    其他问题:

    中文编码问题:

    1. Linux系统默认语系数据:/etc/sysconfig/i18n

    2. 在bash下,与LANG变量有关

    3. 文本原本编码

    4. 打开终端机的软件

    DOS与Linux的断行字符:

    在Linux中Enter按键为LF,而在DOS中Enter按键为CRLF,在Linux中显示DOS回车会多出^M$

    使用Linux中的格式转换工具可以进行转换:

      dos2UNIX [-kn] file [newfile]

      UNIX2dos [-kn] file [newfile]

    最终建议:由于字符编码方式不一样,不建议在windows系统当中将文件编辑之后,才上传到Linux系统,容易发生错误,而且如果在不同的系统之间复制一些纯文文件时,使用以上两个 命令转换

    语系编码转换:如何将big5编码转成utf-8,使用conv

      >iconv -f 原本编码 -t 新编码 file [-o newfile]

  • 相关阅读:
    微信支付-我遇到的那些问题
    [工作笔记]JDK版本不同导致的SSL异常
    mysql与oracle在groupby语句上的细节差异
    微信js-sdk调用
    循序渐进看Java web日志跟踪(3)-Log4J的使用和配置
    循序渐进看Java web日志跟踪(2)-Java日志API认识
    循序渐进看Java web日志跟踪(1)-Tomcat 日志追踪与配置
    手机号码正则表达式(含虚拟运营商)
    网站URL重写(Java UrlRewrite 的使用)
    TCP/IP提供网络传输速率
  • 原文地址:https://www.cnblogs.com/garinzhang/p/3577398.html
Copyright © 2011-2022 走看看