linux读书摘要--vim文本编辑器

来源:互联网 发布:27周胎儿发育标准数据 编辑:程序博客网 时间:2024/04/29 15:43

声明:本文章为《鸟哥的Linux私房菜》读书摘要!


vim文本编辑器

    Linux在文字接口下的文书编辑器emacs,pico,nano,joe,vim  等。vim是进阶版的vivim不但可以用不同颜色显示文字内容,还能够进行诸如shell script, C program等程序编辑功能, 你可以将vim视为一种程序编辑器 。

学习vim的原因

    所有的Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在;
    很多个别软件的编辑接口都会主动呼叫 vi (例如未来会谈到的crontab,visudo,edquota等指令)
    vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计;
    因为程序简单,编辑速度相当快速。

vi的使用。

    vi共分为三种模式,分别是『一般指令模式』、『编辑模式』与『指令列命令模式

一般指令模式 (command mode)

    以 vi 打开一个文件就直接进入一般指令模式了(这是默认的模式,也简称为一般模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整列』来处理文件内容, 也可以使用『复制、贴上』来处理你的文件数据。 

编辑模式(insert mode)
    在一般指令模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『 i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在Linux中,按下这些按键时,在画面的左下方会出现『INSERTREPLACE』 的字样,此时才可以进行编辑。而如果要回到一般指令模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。 

指令列命令模式(command-line mode)
    在一般模式当中,输入『: / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一列。在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开vi、显示行号等等的动作则是在此模式中达成的!

使用VI
1.使用『vi filename』进入一般指令模式
关于vi用的按键说明
第一部份:一般指令模式可用的按钮说明,光标移动、复制贴上、搜寻取代等
第二部份:一般指令模式切换到编辑模式的可用的按钮说明
第三部份:一般指令模式切换到指令列模式的可用按钮说明

使用vi的练习

1.请在 /tmp这个目录下建立一个名为vitest的目录;
2. 进入 vitest这个目录当中;
3. /etc/man_db.conf复制到本目录底下(或由上述的连结下载man_db.conf文件)
4. 使用 vi开启本目录下的man_db.conf这个文件;
5. vi中设定一下行号;
6. 移动到第 43列,向右移动59个字符,请问你看到的小括号内是哪个文字?
7. 移动到第一列,并且向下搜寻一下『gzip』这个字符串,请问他在第几列?
8. 接着下来,我要将 29 41列之间的『小写man字符串』改为『大写MAN 字符串』,并且一个一个挑选是否需要修改,如何下达指令?如果在挑选过程中一直按『y』,结果会在最后一列出现改变了几个man呢?
9. 修改完之后,突然反悔了,要全部复原,有哪些方法?
10. 我要复制 66716列的内容(含有MANDB_MAP),并且贴到最后一列之后;
11. 113 128 列之间的开头为 #符号的批注数据我不要了,要如何删除?
12. 将这个文件另存成一个 man.test.config 的檔名;
13. 去到第 25列,并且删除15个字符,结果出现的第一个单字是什么?
14. 在第一列新增一列,该列内容输入『I am a student...』;
15. 储存后离开吧!


整个步骤可以如下显示:
1. mkdir /tmp/vitest
2. cd /tmp/vitest
3. cp /etc/man_db.conf .
4. /bin/vi man_db.conf
5. :set nu』然后你会在画面中看到左侧出现数字即为行号。
6. 先按下『43G』再按下『59→』会看到『as』这个单字在小括号内;
7. 先执行『1G』或『gg』后,直接输入『/gzip』,则会去到第93列才对!
8. 直接下达『:29,41s/man/MAN/gc』即可!若一直按『y』最终会出现『在13列内置换13个字符串』的说明。
9. (1)简单的方法可以一直按『u』回复到原始状态,(2)使用不储存离开『:q!』之后,再重新读取一次该文件;
10. 66G』 然后再『6yy』之后最后一列会出现『复制6列』之类的说明字样。 按下『G』到最后一列,再给他『p』贴上6列!
11. 因为113~12816列,因此『113G』→『16dd』就能删除16列,此时你会发现游标所在113列的地方变成 『# Flags.』 开头啰
12. :w man.test.config』,你会发现最后一列出现"man.test.config" [New]..的字样。
13. 25G』 之后,再给他『15x』即可删除15个字符,出现『tree』的字样;
14. 先『1G』去到第一列,然后按下大写的『O』便新增一列且在插入模式;开始输入『I am a student...』后, 按下[Esc]回到一般指令模式等待后续工作;
15. :wq

vim的暂存档、救援回复与开启时的警告讯息

    在目前主要的文书编辑软件都会有『回复』的功能,亦即当你的系统因为某些原因而导致类似当机的情况时, 还可以透过某些特别的机制来让你将之前未储存的数据『救』回来 。vim中就是通过暂存档来救援的。

    当我们在使用vim 编辑时,vim会在与被编辑的文件的目录下,再建立一个名为.filename.swp的文件你对 file做的动作就会被记录到这个.filename.swp当中 。如果我们因为某些原因导致死机。编辑的文件没有报错,那么下次打开这个文时.filename.swp。就会问你是否修复。


vim的额外功能

    与vi相比,vim具有颜色显示的功能,并且还支持许多的程序语法(syntax), 因此,当你使用vim编辑程序时(不论是C语言,还是shell script ),我们的vim将可帮你直接进行『程序除错(debug)』的功能。如何让执行vi的时候,与执行vim相同。使用alias指令。【alias vi=‘vim’】这个指令就是用做命令等价。像我们之间用ll来代销ls -l来设定的。



区块选择(Visual Block)

多文件编辑

使用vim 后面同时接好几个文件来同时开启



多窗口功能

    要想实现多窗口功能,指令列模式输入『:sp {filename}』即可!那个filename可有可无,如果想要在新窗口启动另一个文件,就加入档名,否则仅输入:sp时, 出现的则是同一个文件在两个窗口间可以利用『[ctrl]+w+↑』及『[ctrl]+w+↓』 在两个窗口之间移动呢!这样的话,复制啊、查阅啊等等的,就变的很简单。

vim的挑字补全功能 


简单举例


vim环境设定与记录: ~/.vimrc, ~/.viminfo 

    vim会主动的将你曾经做过的行为登录下来,好让你下次可以轻松的作业.那个记录动作的文件就是:~/.viminfo!如果你曾经使用过vim, 那你的家目录应该会存在这个文件才对。这个文件是自动产生的, 你不必自行建立。而你在vim里头所做过的动作,就可以在这个文件内部查询到。如果你想要知道目前的设定值,可以在一般指令模式时输入『:set all』 来查阅。

    我们可以透过配置文件来直接规定我们习惯的vim操作环境呢! 整体vim的设定值一般是放置在/etc/vimrc这个文件,不过,不建议你修改他! 你可以修改~/.vimrc这个文件(预设不存在,请你自行手动建立!),将你所希望的设定值写入! 举例来说,可以是这样的一个文件: 

    在这个文件中,使用『set hlsearch』或『:set hlsearch』,亦即最前面有没有冒号『: 』效果都是一样的! 至于双引号则是批注符号!建立好这个文件后,当你下次重新以vim 编辑某个文件时,该文件的预设环境设定就是上头写的,这样很方便你的操作。

中文编码的问题

    很多朋友说他们的 vim里面怎么无法显示正常的中文。其实这很有可能是因为编码的问题! 因为中文编码有big5utf8两种,如果你的文件是使用big5编码制作的,但在vim 的终端接口中你使用的是万国码(utf8), 由于编码的不同,你的中文文件内容当然就是一堆乱码了!怎么办?这时你得要考虑许多东西
    1. 你的Linux系统默认支持的语系数据:这与/etc/locale.conf有关;
    2. 你的终端界面(bash) 的语系: 这与LANG, LC_ALL这几个变数有关;
    3. 你的文件原本的编码;
    4. 开启终端机的软件,例如在GNOME 底下的窗口接口。
    事实上最重要的是上头的第三与第四点,只要这两点的编码一致,你就能够正确的看到与编辑你的中文文件。

    修正语系编码的行为
    然后在终端接口工具栏的『终端机』-->『设定字符编码』-->『中文(正体) (BIG5)项目点选一下,如果一切都没有问题了,再用vim去开启那个 big5编码的文件,就没有问题。

DOSLinux的断行字符

    DOSLinux断行字符的不同。 而我们也可以利用cat -A来观察以 DOS (Windows系统)建立的文件的特殊格式, 也可以发现在DOS使用的断行字符为 ^M$ ,我们称为 CRLF 两个符号。 而在Linux底下,则是仅有 LF ($) 这个断行符号。这个断行符号对于 Linux 的影响很大。Linux底下的指令在开始执行时,他的判断依据是 『Enter』,而LinuxEnterLF符号, 不过,由于DOS 的断行符号是 CRLF ,也就是多了一个^M的符号出来, 在这样的情况下,如果是一个shell script的程序文件,呵呵~将可能造成『程序无法执行』的状态~ 因为他会误判程序所下达的指令内容 。所有我们需要将DOS下的文件换成Linux下的格式。


    因为断行字符以及DOS Linux操作系统底下一些字符的定义不同,因此, 不建议你在 Windows系统当中将文件编辑好之后,才上传到Linux 系统,会容易发生错误问题。 而且,如果你在不同的系统之间复制一些纯文本文件时,千万记得要使用unix2dos dos2unix 来转换一下断行格式.

语系编码转换

这指令支持的语系非常之多,除了正体中文的big5, utf8 编码之外,也支持简体中文的gb2312。如果要将刚刚那个 vi.utf8 转成简体的 utf8 时,可以这样做:





0 0