vi文字处理器
每个系统管理员都应该至少要学会一种文字接口的文书处理器,以方便系统日常的管理行为。在 Linux 上头的文字处理软件非常的多,不过,鸟哥还是建议使用 vi 这个正规的文书处理器。 这是因为 vi 几乎在任何一个 Unix Like 的机器都存在,学会他,轻松很多啊! 此外,后来 GNU 计划有推出 vim 这个 vi 的进阶版本,可以用的额外功能更多了! vi 是未来我们进行 shell script 程序的编写与服务器设定的重要工具。
vi与vim
前面讲了这么多命令与操作,都是直接在命令行输入,如果我们想要记录一些东西在文件中应该怎样呢?那就是使用文本编辑器。
最常用的文本编辑器就是vi与vim。vim是vi的进阶版,
vi的使用
vi分为三种模式:一般模式,编辑模式,命令模式
-
一般模式 用vi 文件名 打开一个文件的时候就是一般模式,你可以使用『上下左右』按键来移动光标,您可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理您的文件数据。 -
编辑模式 在一般模式中可以处理删除、复制、贴上等等的动作,但是却无法编辑的! 要等到您按下『i, I, o, O, a, A, r, R』等字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下上述的字母时,在画面的左下方会出现『 INSERT 或 REPLACE 』的字样,才可以输入任何字来输入到您的档案中!而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。 -
命令模式 在一般模式当中,输入『 : 或 / 或 ? 』就可以将光标移动到最底下那一行,在这个模式当中, 可以提供您『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号 等等的动作则是在此模式中达成的! :q quit :q! 强制退出(可以不用保存) :w 保存 :wq 保存并退出 :e! 回到上一次保存的样子
对于初学者来说会编辑保存退出就行了。
alias是别名的意思,但是我们发现不可以man alias,但是在root权限下输入alias可以看到一些使用方法。
那我们怎么设置别名呢?首先要进入root用户,然后不妨输入alias ls=‘ls -l’ 然后可以试试ls,没错,现在的ls就是ls -l 了,是不是很方便呢。我们可以设置alias vi=‘vim’ 因为vim既然是vi的进阶版,说明他功能更强大,我们肯定主要使用vim。
那我们怎么查看我们设置的别名呢?
vim扩展功能
-
区块选择 之前vi操作都是单个字符,如果我们想要删除一段字符,就得一直按delete,很麻烦,但是在vim中有了区块选择的功能。区块选择主要分为三种选择方式。 v 字符选择,会将光标经过的地方反白选择!选择连续的信息,可以是第一行的后半部分和第二行的前半部分 V 行选择 一行或几行的选择 Ctrl + v 区块选择 是一个矩形区域 选中后使用y可以将选中的部分复制。选中后使用d可以删除选中的部分。复制后在标准模式下使用p可以粘贴。 -
多文档编辑
- :n编辑下一个文档
- :N编辑上一个文档
- :files 列出这个vim开启的所有档案
使用vim doc1 doc2来同时编辑两个文档
-
多窗口功能 在标准模式下输入『:sp {filename}』就可以开启多窗口了,快试试把(注意在sp 和 filename之间有一个空格哦),在命令行下的多窗口是不是很酷。您还可以利用『[ctrl]+w+j』及『[ctrl]+w+k』 在两个窗口之间移动呢! 多窗口情况下的按键功能 :
- :sp [filename] :开启一个新窗口,如果有加 filename, 表示在新窗口开启一个新档案,否则表示两个窗口为同一个档案内容(同步显示)。
- [ctrl]+wj : 按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j ,则光标可移动到下方的窗口。
- [ctrl]+wk:同上,不过光标移动到上面的窗口。
- [ctrl]+wq:其实就是 :q 结束离开啦! 举例来说,如果我想要结束下方的窗口,那么利用 [ctrl]+wj 移动到下方窗口后,按下 :q 即可离开, 也可以按下 [ctrl]+wq 啊!
DOS与linux的换行字符
DOS 使用的断行字符为 ^M$ ,我们称为 CR 与 LF 两个符号。 而在 Linux 底下,则是仅有 LF ($) 这个断行符号。这个断行符号对于 Linux 的影响很大喔! 为什么呢?
我们说过,在 Linux 底下的指令在开始执行时,他的判断依据是 『Enter』,而 Linux 的 Enter 为 LF 符号, 不过,由于 DOS 的断行符号是 CRLF ,也就是多了一个 ^M 的符号出来, 在这样的情况下,如果是一个 shell script 的程序档案,呵呵~将可能造成『程序无法执』的状态~ 因为他会误判程序所下达的指令内容啊!这很伤脑筋吧!
那怎么办啊?很简单啊,将格式转换成为 Linux 即可啊。我们可以透过简单的指令来进行格式的转换。
- dos2unix [-kn] file [newfile] 2是to的缩写
- unix2dos [-kn] file [newfile]
参数:
-k :保留该档案原本的 mtime 时间格式 (不更新档案上次内容经过修订的时间)
-n :保留原本的旧档,将转换后的内容输出到新档案,如: dos2unix -n old new
我在 vi 这个程序当中,不想离开 vi ,但是想执行 ls /home 这个指令,vi 有什么额外的功能可以达到这个目的:事实上,
可以使用[ :! ls /home ]不过,如果你学过后面的章节之后,你会发现,执行[ ctrl + z ]亦可暂时退出 vi 让你在指令列模式当中执行指令喔!
|