zoukankan      html  css  js  c++  java
  • vi命令使用

    vi命令


     三种工作模式:

    1、命令模式:输入任何一个键都当成编辑命令;

    2、输入模式:键盘中的任意一个键都当成文本内容;

    3、末行模式:键盘中的任意一个键都当成文本管理命令;

    退出输入模式:Esc 

    命令模式进入输入模式:

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

    I:插入行首;

    a:插入光标后的一个字符;

    A:插入行末;

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

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

    命令模式进入末行模式按冒号:

    末行模式进入命令模式:两次ESC。

    保存退出:

    1、命令模式下:ZZ

    2、末行模式下:

    :wq  保存退出

    :x保存退出;

    :q!强制不保存退出

    :q 退出


    命令模式下光标的移动:

    K:上

    J:下

    H:左

    L:右

    G:光标到末尾位置;

    gg:光标移动到文件开头;

    nG:移动到指定行n,如4G,第4行;

    w/W:单词为单位移动

    0:光标移动到行首;

    L:光标移到屏幕最后一行行首;

    ^:光标移到行首有内容的位置;

    $:光标移到行尾;

    M:移到中间行;

    经验:命令模式和输入模式熟练切换,不推荐使用上下左右方向键。

    编辑的时候光标直接在第几行:

    [root@localhost home]# vim hello.txt +10

    显示行号:

    [zyj@localhost ~]$ 
      1             hello world
      2                                                                                                                               
    :set number 

    修改配置文件,设置行号,在用户的家目录下修改,~代表用户家目录。

    说明:修改配置文件优先修改用户配置文件,不推荐修改系统配置文件;

    [zyj@localhost ~]$ vim ~/.vimrc  //没有的时候创建这个文件 一定要加点。~代表用户家目录。
    set number

    删除命令

    x:删除光标后一个字符,相当与Del

    X:删除光标前一个字符,相当于Backspace

    dd:删除光标所在的行,

    ndd:删除指定的行数

    D:删除光标后本行所有内容,包含光标所在字符

    d0:删除光标前本行所有内容,不包含光标所在字符

    dw:删除光标开始位置的字,包含光标所在字符

    撤销命令:

    u:一步一步撤销

    ctr+r:反撤销

    重复执行上一条命令:点 .

    文本移动:

    按v进入视图模式后,按上下键选中目标行后,通过<< >>键对文本进行左右移动

    修改tab键设置:

    [zyj@localhost home]$ vi ~/.vimrc
    set ts=4

     复制粘贴

    yy:复制当前行;

    nyy:复制从光标行开始的n行;

    yw:复制一个单词

    进入末行模式复制:

    :30,40y 复制30到40行;

    :.,$-3y  复制光标所在行到倒数第三行,其中点代表光标所在行,$代表最后一行,$-3表示倒数第三行。

    :1,.-3y 第一行到光标所在的前三行;

    :1,.+3y 第一行到光标所在的后三行;

    将上述y替换为d,则为删除选用的行;

    p:粘贴

    查找:在编辑模式下

    /关键词,从光标行往下找。

    ?关键词 光标所在行往上找

    循环查找,因此使用/关键字即可。

    举例:/after  查找after

    n:下一个

    N:上一个

    :%s/abc/123/g 光标所在行的abc替换为123

    替换

    r:替换当前字符

    R:替换当前行光标后的字符

    查找替换:末行模式

    :%s/after/before/gi  %表示整个文件,s表示查找替换,/为隔开符 g表述全局 i表示忽略大小写。

     25 if [ -x /usr/bin/id ]; then
     26     if [ -z "$EUID" ]; then
     27         # ksh workaround
     28         EUID=`/usr/bin/id -u`
     29         UID=`/usr/bin/id -ru`
     30     fi
     31     USER="`/usr/bin/id -un`"
     32     LOGNAME=$USER
     33     MAIL="/var/spool/mail/$USER"
     34 fi
     35 
     36 # Path manipulation
     37 if [ "$EUID" = "0" ]; then
     38     pathmunge /sbin
     39     pathmunge /usr/sbin
     40     pathmunge /usr/local/sbin
     41 else
     42     pathmunge /usr/local/sbin before
     43     pathmunge /usr/sbin before
     44     pathmunge /sbin before
    :%s/before/after/gi   //整个文件中的before替换为after并忽略大小写

    :1,10s/abc/123/g 第一行到第十行替换。

     36 # Path manipulation
     37 if [ "$EUID" = "0" ]; then
     38     pathmunge /sbin
     39     pathmunge /usr/sbin
     40     pathmunge /usr/local/sbin
     41 else
     42     pathmunge /usr/local/sbin after
     43     pathmunge /usr/sbin after
     44     pathmunge /sbin after
    :36,44s/after/before/g    //36行到44行中的after替换为before

     末行模式使用!执行命令。

     36 # Path manipulation
     37 if [ "$EUID" = "0" ]; then
     38     pathmunge /sbin
     39     pathmunge /usr/sbin
     40     pathmunge /usr/local/sbin
     41 else
     42     pathmunge /usr/local/sbin before
     43     pathmunge /usr/sbin before
     44     pathmunge /sbin beforE
     45 PATH=/etc/p //不确定是否存在此文件时,可以在末行模式下使用!加命令查看是否存在此文件。
    :!ls /etc/p   //末行模式下使用!后加命令,实现不退出vi的情况下进行操作。
    [No write since last change]
    /bin/bash: ls/etc/p: No such file or directory
    shell returned 127
    Press ENTER or type command to continue

     小技巧:

    [zyj@localhost ~]$ type ls     
    ls is aliased to `ls --color=auto'
    [zyj@localhost ~]$ ls -r /home //在指令前面加上可以忽略alias的默认选项
    zyj  x  hello.txt
    [zyj@localhost ~]$ ls /home
    hello.txt  x  zyj
    
    [zyj@localhost ~]$ date -s "20180417 21:19:19" //通过一条命令修改系统时间
    date: cannot set date: Operation not permitted
    Tue Apr 17 21:19:19 PDT 2018
  • 相关阅读:
    让程序在后台长久运行的方法
    unrecognized selector sent to instance的定位
    CocoaLumberjack调试的简单使用
    #pragma
    __bridge __bridge_retained __bridge_transfer
    关于c#继承
    C#__ 模拟鼠标单击事件
    C# 调用win api获取chrome浏览器中地址
    认识安卓
    源码解析-Volley(转自codeKK)
  • 原文地址:https://www.cnblogs.com/zhaoyujiao/p/8848638.html
Copyright © 2011-2022 走看看