第十章、vim 程序编辑器
最近更新日期:2009/08/20

大标题的图示重点回顾
  • Linux 底下的配置文件多为文本文件,故使用 vim 即可进行设定编辑;
  • vim 可视为程序编辑器,可用以编辑 shell script, 配置文件等,避免打错字;
  • vi 为所有 unix like 的操作系统都会存在的编辑器,且执行速度快速;
  • vi 有三种模式,一般模式可变换到编辑与指令列模式,但编辑模式与指令列模式不能互换;
  • 常用的按键有i, [Esc], :wq 等;
  • vi 的画面大略可分为两部份,(1)上半部的本文与(2)最后一行的状态+指令列模式;
  • 数字是有意义的,用来说明重复进行几次动作的意思,如 5yy 为复制 5 行之意;
  • 光标的移动中,大写的 G 经常使用,尤其是 1G, G 移动到文章的头/尾功能!
  • vi 的取代功能也很棒! :n1,n2s/old/new/g 要特别注意学习起来;
  • 小数点『 . 』为重复进行前一次动作,也是经常使用的按键功能!
  • 进入编辑模式几乎只要记住: i, o, R 三个按钮即可!尤其是新增一行的 o 与取代的 R
  • vim 会主动的建立 swap 暂存档,所以不要随意断线!
  • 如果在文章内有对齐的区块,可以使用 [ctrl]-v 进行复制/贴上/删除的行为
  • 使用 :sp 功能可以分割窗口
  • vim 的环境设定可以写入在 ~/.vimrc 档案中;
  • 可以使用 iconv 进行档案语系编码的转换
  • 使用 dos2unix 及 unix2dos 可以变更档案每一行的行尾断行字符。

大标题的图示本章练习
(要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看)
实作题部分:
  • 在第八章的情境模拟题二的第五点,编写 /etc/fstab 时,当时使用 nano 这个指令, 请尝试使用 vim 去编辑 /etc/fstab ,并且将第八章新增的那一行的 defatuls 改成 default ,会出现什么状态? 离开前请务必要修订成原本正确的信息。此外,如果将该行批注 (最前面加 #),你会发现字体颜色也有变化喔!

  • 尝试在你的系统中,你惯常使用的那个账号的家目录下,将本章介绍的 vimrc 内容进行一些常用设定,包括:
    • 设定搜寻高亮度反白
    • 设定语法检验启动
    • 设定默认启动行号显示
    • 设定有两行状态栏 (一行状态+一行指令列) :set laststatus=2

简答题部分:
  • 我用 vi 开启某个档案后,要在第 34 行向右移动 15 个字符,应该在一般模式中下达什么指令?
    (1)先按下 34G 到第 34 行;(2)再按下 [ 15 + 向右键 ],或 [ 15l ] 亦可!
  • 在 vi 开启的档案中,如何去到该档案的页首或页尾?
    去页首按下 1G 或 gg ;去页尾按下 G 即可
  • 在 vi 开启的档案中,如何在光标所在行中,移动到行头及行尾?
    移动到行头,按 0 ,移动到行尾按 $ 即可!
  • vi 的一般模式情况下,按下『 r 』有什么功能?
    取代光标所在的那个字符
  • 在 vi 的环境中,如何将目前正在编辑的档案另存新档名为 newfilename?
    :w newfilename
  • 在 linux 底下最常使用的文书编辑器为 vi ,请问如何进入编辑模式?
    在一般模式底下输入: i, I, a, A 为在本行当中输入新字符;(出现 –Insert- )
    在一般模式当中输入: o, O 为在一个新的一行输入新字符;
    在一般模式当中输入: r, R 为取代字符!(左下角出现 –Replace-)
  • 在 vi 软件中,如何由编辑模式跳回一般模式?
    可以按下[Esc]
  • 在 vi 环境中,若上下左右键无法使用时,请问如何在一般模式移动光标?
    [h, j, k, l]分别代表[左、下、上、右]
  • 在 vi 的一般模式中,如何删除一行、n行;如何删除一个字符?
    分别为 dd, ndd, x 或 X (dG 及 d1G 分别表示删除到页首及页尾)
  • 在 vi 的一般模式中,如何复制一行、n行并加以贴上?
    分别为 yy, nyy, p 或 P
  • 在 vi 的一般模式中如何搜寻 string 这个字符串?
    ?string (往前搜寻)
    /string (往后搜寻)
  • 在 vi 的一般模式中,如何取代 word1 成为 word2,而若需要使用者确认机制,又该如何?
    :1,$s/word1/word2/g 或
    :1,$s/word1/word2/gc (需要使用者确认)
  • 在 vi 目前的编辑档案中,在一般模式下,如何读取一个档案 filename 进来目前这个档案?
    :r filename
  • 在 vi 的一般模式中,如何存盘、离开、存档后离开、强制存档后离开?
    :w; :q: :wq; :wq!
  • 在 vi 底下作了很多的编辑动作之后,却想还原成原来的档案内容,应该怎么进行?
    直接按下 :e! 即可恢复成档案的原始状态!
  • 我在 vi 这个程序当中,不想离开 vi ,但是想执行 ls /home 这个指令,vi 有什么额外的功能可以达到这个目的:
    事实上,可以使用[ :! ls /home ]不过,如果你学过后面的章节之后,你会发现,执行[ ctrl + z ]亦可暂时退出 vi 让你在指令列模式当中执行指令喔!

大标题的图示参考数据与延伸阅读

 
     
http://linux.vbird.org is designed by VBird during 2001-2011. ksu.edu 

本网页主要以Firefox配合解析度 1024x768 作为设计依据     鸟哥自由软件整合应用研究室