VI编辑器的使用

1. 熟悉vi的三种模式及模式切换命令

命令行模式
用户在用vi编辑文件时,最初进入的为该模式。可以进行复制、粘贴等操作。

插入模式
进行文件编辑,按ESC键可以回到命令行模式。

底行模式
光标位于屏幕的底行。可以进行文件的保存、退出、查找、替换、列出行号等 
    a:  (Append)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符

    i:  (Insert)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符

    o:  (Open)进入编辑状态,并插入一新行,光标移到该新行的行首,以后键盘输入的字符将插入到光标位置

    A:  (Append)进入编辑状态,从当前光标行末尾的位置开始插入键盘输入的字符

    I:  (Insert)进入编辑状态,从当前光标行起始的位置开始插入键盘输入的字符

    O:  (Open)进入编辑状态,并向上插入一新行,光标移到该新行的行首,以后键盘输入的字符将插入到光标位置

2. 熟练使用vi的拷贝和粘贴命令

    [N]表示可以加入数字。

    [N]x:  (Expurgate)删除从光标位置开始的连续N个字符(并复制到编辑缓冲区)

    [N]dd:  (Delete)删除从光标位置开始的连续N行(并复制到编辑缓冲区)

    [N]yy:  (Yank)复制从光标位置开始的连续N行到编辑缓冲区

    p或P:  (Put)从编辑缓冲区复制文本到当前光标位置(即粘贴) 
    注:使用x复制连续字符的时候p与P相同,若是使用yy或者dd复制连续行,P是在本行黏贴p则是在下一行黏贴

    u:  (Undo)取消上一次操作(即恢复功能)

3. 熟练使用vi的保存和退出命令

    :q  (Quit)退出没有修改的文件(若文件被修改了而没有保存,则此命令无效)

    :q!  强制退出,且不保存修改过的部分

    :w  (Write)保存文件,但不退出

    :x  (Exit)保存文件并退出  也可以写作:wq  或者ZZ 注意此处无":"

    :w File  另存为File给出的文件名,不退出

    :r File  (Read)读入File指定的文件内容插入到光标位置

4. 熟练使用vi的光标命令

5. 熟练使用vi的查找命令

    /string 查找字符串 

    n 继续查找 		

    N 反向继续查找 

    支持正则表达式比如:/^the        /end$

    取消高亮:nohl

6. 熟练使用vi的替换命令

    利用:s 命令可以实现字符串的替换。

    :s/str1/str2/   光标所在行第一个str1字符串替换成str2字符串

    :s/str1/str2/g  光标所在行 所有str1 替换成 str2   注:g代表global 全部 

    :.,$ s/str1/str2/g   g全部替换(默认换第1个)  从光标所在处开始 一直到文档结尾 所有str1 替换成 str2 注:“.”代表光标所在处 $代表文档末尾 

    :1,$ s/str1/str2/g   从文档开头 一直到文档结尾 所有str1 替换成 str2  注:1 代表文档开头

    :%s/str1/str2/g     %s为1,$ 的缩写形式 意义同上

7. 熟练使用vi的复制和剪切命令

    y0-将光标至行首的字符拷入剪贴板
                                        处理行间复制
    y$-将光标至行尾的字符拷入剪贴板

    d0-将光标至行首的字符剪切入剪贴板
                                        处理行间剪切
    d$-将光标至行尾的字符剪切入剪贴板

    range y-块复制 :1,10 y
                                        处理区域复制剪切
    range d-块剪切 :1,5 d

8. 关于gcc编译器

    gcc(GNU Compiler)是GNU推出的多平台编译器,可将C、C++源程序编译连接成可执行文件,支持以下后缀:

    .c 	    c语言源代码

    .h		程序所包含的头文件 	

    .i		已经预处理过的C源代码文件

    .s		汇编语言源代码文件

    .o		编译后的目标文件

    tip: Ctrl+Shift+n 新开个Terminal窗口 
         Ctrl+Shift+t  新开个Terminal页 

9. 熟悉Linux 的文件系统结构

为了规范文件目录命名和存放标准,Linux基金会颁发了FHS(Filesystem Hierarchy Standard)。
    / bin    :bin是二进制(binary)英文缩写。
    / boot  :存放的都是系统启动时要用到的程序。
    / dev    :包含了所有Linux系统中使用的外部设备。
    / etc     :存放了系统管理时要用到的各种配置文件和子目录。
    / lib      :存放系统动态连接共享库的。
    / home:普通用户的主目录
    / root   :根用户(超级用户)的主目录

10. 熟练使用pwd命令

pwd命令用于显示用户在文件系统中的当前位置,该命令没有任何选项和参数,命令执行结果显示为绝对路径名。

11. 熟练使用ls命令

    ls [options] [files_or_dirs]
    Example:
        ls -a   a=all 查看全部文件 可以看到.开头的隐藏文件
        ls -l   查看文件详细信息 创建时间 用户权限等
        ls -R   如果文件夹下还有文件夹,则递归显示
    注:可以使用man + ls的形式查看ls的具体注释

    ls -l查看到的 文件权限 是对应三种用户的权限 分别是创建者 同组用户 和其他用户
    例 -rw -rw -r--

12. 熟练使用cd命令

13.熟练使用查看文件内容的命令

    Cat  -s 多个空行合并成一个空行显示
            -b 加行号显示
    nl 加行号
    head 
    -n 文件名(前n行,默认10)
    tail 
    -n 文件名(后n行,默认10)

14.熟练使用文件复制命令

    Usage: 
    cp [options] file destination

    常用选项

    i覆盖时交互提示

    r对文件夹递归

    复制多个文件到文件夹 

    cp [options] file1 file2 dest 

    cp test.c test1.c
    cp test.c ../
    cp test.c /home/linux
    cp test.c ../test1.c        
    cp -r test/ test1           拷贝文件夹
    cp test.c ../ -i            获取提示信息 如确认覆盖等
    cp test.c test1.c /home/linux   同时复制多个文件

15.熟练使用文件移动命令

    Usage: 
    mv [options] file destination
    移动多个文件:
    mv [options] file1 file2 destination
    更改文件名

    mv test.c /home/linux
    mv test.c test1.c
    mv test.c test1.c /home/linux
    mv test.c ./test1.c
    mv -r test /home/linux/test1

16.熟练使用创建和删除文件命令

    touch – 创建或更新时间戳
    rm – 删除文件
    Usage:
    rm [options] <file>...
    Example:
    rm -i file
    rm -r directory

    创建和删除目录
    mkdir  -p 
    rm -r

17.课后练习及答案

第一课作业

作业

1.在VI编辑器中如果我们想将一个文件中的第5到第30行中的字符“abc”替换成“ABC”我们使用什么命令?
2.1将0x55转化成二进制得到的结果为?
2.2在ASCII码表中字符‘3’对应的是数值?
3.假如我们使用VI编辑器在Hello.c文件中编写了一段C程序且已经保存,如果我们想编译该C程序生成可执行文件hello应该输入什么命令?
4.写出至少5个自己用过的命令及功能(比如: mkdir 创建目录 )。


答案
1.需要使用5,30 s/abc/ABC/g
2.1   0x55转换为2进制是: ‭01010101‬
2.2  字符“3” ASCII码值 10进制 :51,ASCII码值 16进制 0x33
3.gcc -o  hello Hello.c /Wall 或gcc -o hello Hello.c 
4.  rm 删除命令    vi 创建/打开命令     cp 复制     mv 移动   pwd 获取当前目录