zoukankan      html  css  js  c++  java
  • 青蛙学Linux—文本编辑器Vi/Vim

    1、Vi和Vim

    1.1、简介

    Vi是Linux和Unix下最基本的文本编辑器,工作在字符模式下,没有图形界面,使用众多的命令和按键来进行操作。所有的Linux和Unix都会默认安装Vi,而且任何版本的Linux和Unix的Vi编辑器都是完全相同的。

    Vim是一个在Vi基础上改进的文本编辑器。在Vi强大的功能上增加了新的功能,如代码补全、代码高亮等。

    1.2、三种模式

    vi/vim可分为三种模式,分别为命令模式(Command mode)、输入模式(Insert mode)和底线命令模式(Last line mode)。

    vim-vi-workmodel

    2、使用Vi/Vim

    2.1、命令模式

    当Vi/Vim启动时,便进入命令模式。此时在键盘的输入将会被vi/vim识别为命令,而非向文件中输入字符。在该模式下通过不同的按键或按键组合可以实现各种功能,下面按照功能的类型来介绍这些按键:

    2.1.1、光标的移动

    h 或 左箭头:光标向左移动一个字符

    j 或 下箭头:光标向下移动一个字符

    k 或上箭头:光标向上移动一个字符

    l 或 右箭头:光标向右移动一个字符

    如果想要进行多次移动,可以加上移动的次数(输入数字)后再按动作键。如需要向下移动20行,可以使用“20j”

    Ctrl+f:向下移动一页,相当于Page Down

    Ctrl+b:向上移动一页,相当于Page Up

    Ctrl+d:向下移动半页

    Ctrl+u:向上移动半页

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

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

    n<space>:按下数字后再按空格键,光标会向右移动n个字符

    0 或 Home键:光标移动到这一行的最前面字符处

    $ 或 End键:光标移动到这一行的最后面字符处

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

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

    L:光标移动到屏幕的最下方那一行的第一个字符

    G:光标移动到文档的最后一行

    nG:光标移动到文档的第n行

    gg:移动到文档的第一行

    n<Enter>:光标向下移动n行

    2.1.2、删除、复制粘贴、复原重做

    x X:x向后删除一个字符(相当于del),X向前删除一个字符(相当于backspace)

    nx:连续向后删除n个字符

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

    ndd:删除从光标所在行开始的向下的n行

    d1G:删除光标所在行到第一行的所有数据

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

    d$:删除光标所在处到该行的最后一个字符

    d0:删除光标所在处到该行的第一个字符

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

    nyy:复制从光标所在行开始的向下的n行

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

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

    y$:复制光标所在处到该行的最后一个字符

    y0:复制光标所在处到该行的第一个字符

    p P:p将复制的数据在光标的下一行粘贴,P将复制的数据在光标的上一行粘贴

    J:将光标所在行与下一行组合成一行

    u:复原前一个动作

    Ctrl+r:重做上一个动作

    .:重复前一个动作

    2.2、输入模式

    在命令模式下按下i,即可进入输入模式,在输入模式中就可以向文档中输入内容。使用以下按键可以从命令模式进入输入模式:

    i I:i在光标前输入,I在光标所在行的第一个非空格符处开始输入

    a A:a在光标后输入,A在光标所在行的最后一个字符处开始输入

    o O:o在光标所在行的下一行开始输入,O在光标所在行的上一行开始输入

    r R:r只会取代光标所在字符一次,R会一直取代光标所在字符,直到按下Esc

    当按下以上的按键,在Vi/Vim的左下角会出现“--INSERT--”或者”--REPLACE--“字样,此时才可以进行输入

     

    Esc:退出输入模式,回到命令模式

    2.3、底线命令模式

    在命令模式下按下 :,即可进入底线命令模式。在该模式下可以通过输入命令来实现功能,比如保存文档和退出Vi/Vim等。在底线命令模式下有以下常用命令(省略:):

    w:保存不退出

    q:不保存退出

    wq:保存并退出

    x!:保存并退出,同wq

    注意:以上命令均可在末尾加上!表示强制执行。

     

    ZZ:文档改动则保存退出,无改动则退出

    w filename:文件另存为

    r filename:将另一个文档的内容加入到光标所在行的后面

    n1,n2 w filename:将n1到n2的内容保存到新的文档中

    ! command:暂时离开Vi/Vim并执行command

     

    set nu:显示行号

    set nonu:取消行号的显示

    2.4、搜索替换

    在Vi/Vim下执行搜索时,也相当于底线命令模式,但是此时不使用:来转到底线命令模式。输入以下命令进行搜索:

    /string:从光标处向下查找指定字符串

    ?string:从光标处向上查找指定字符串

    n:按键n,重复上一个查找动作

    N:大写按键N,以相反的方向重复上一个查找动作

     

    当Vi/Vim搜索到内容之后会使用高亮进行显示,如果不取消高亮的话,就算退出文档后再次打开时还会有高亮显示,所以可以使用以下命令取消高亮

    :noh

    Vi/Vim下的替换就是在底线命令模式下进行的,使用:来转换。使用以下几种方法进行内容替换:

    s/string1/string2/g:将当前光标所在行中的所有string1替换成string2

    n1,n2s/string1/string2/g:将n1到n2行中的所以string1替换成string2

    1,$s/string1/string2/g:将整个文档中的string1替换成string2

    1,$s/string1/string2/gc:将整个文档中的string1替换成string2,并在替换之前提示用户是否替换

  • 相关阅读:
    设计模式之命令模式
    设计模式之访问者模式
    ES6入门之Generator函数
    ES6入门之Iterator和for...of
    c# TcpClient简易聊天工具
    Mvc Action可以通过jsonp方式调取
    Webbrowser 在web项目中的使用
    关于java post get请求Demo (请求c#iis接口)
    Jquery 引擎模板 -template详解
    Redis在windows下安装过程
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/9909365.html
Copyright © 2011-2022 走看看