LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: 一颗小白菜

咱们玩一玩console?

[复制链接]
发表于 2002-9-15 23:06:08 | 显示全部楼层

在字符界面下工作-Vi及其三种运行模式

--Vi的简介
Vi是“Visual interface”的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
Vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。
Vi是全屏幕文本编辑器,它没有菜单,只有命令。
--Vi的三种运行模式
Vi有三种基本工作模式:编辑模式、插入模式和命令模式(末行模式)。
在系统提示符后键入Vi和想要编辑(或建立)的文件名,便可进入Vi。如果只键入Vi,而不带文件名,也可以进入Vi。然后先输入所创建文件的内容,在退出Vi时,只需在退出命令后输入文件名即可。
进入Vi之后,首先进入的就是编辑模式,进入编辑模式后Vi等待编辑命令输入而不是文本输入,也就是说这时输入的字母都将作为编辑命令来解释。
进入编辑模式后光标停在屏幕第一行首位上(用_表示),其余各行的行首均有一个“~”符号,表示该行为空行。最后一行是状态行,显示出当前正在编辑的文件名以及其状态。如果是[New File],则表示该文件是一个新建的文件。如果输入Vi带文件名后,文件已在系统中存在,则在屏幕上显示出该文件的内容,并且光标停在第一行的首位,在状态行显示出该文件的文件名、行数和字符数。
在编辑模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入插入模式。在插入模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按Esc键即可。
在编辑模式下,用户按“:”键即可进入命令模式,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为命令模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的。末行命令执行完后,Vi自动回到编辑模式。
若在命令模式下输入命令过程中改变了主意,可用退格键将输入的命令全部删除之后,再按一下退格键,即可使Vi回到编辑模式。
发表于 2002-9-15 23:08:35 | 显示全部楼层

在字符界面下工作-Vi之进入插入模式命令

--在编辑模式下直接进入插入模式
        i        从光标所在位置前开始插入文本。
        I        该命令是将光标移到当前行的行首,然后在其前插入文本。
        a        用于在光标当前所在位置之后追加新文本。
        A         将把光标挪到所在行的行尾,从那里开始插入新文本。
        o         将在光标所在行的下面新开一行,并将光标置于该行的行首,等待输入文本。
        O        在光标所在行的上面插入一行,并将光标置于该行的行首,等待输入文本。
--正文替换(在编辑模式下替换后进入插入模式)
        s        替换光标所在位置的字符。
        ns        替换从光标所在位置起的n个字符。
        cw        替换从光标所在位置起的一个词。
        ncw        替换从光标所在位置起的n个词。
        cb        替换从光标所在位置的前一个词。
        ncb        替换从光标所在位置的前n个词。
        c$        替换从光标所在位置到结尾的所有字符。
        c0        替换从光标所在位置到行首的所有字符。
发表于 2002-9-15 23:10:50 | 显示全部楼层

在字符界面下工作-Vi之编辑模式下的操作命令

--光标定位
     h、j、k、l        分别用于光标左移、下移、上移、右移一个字符。
        Ctrl+b        将屏幕向文件首方向翻滚一整屏(即PgUp)。
        Ctrl+f        将屏幕向文件尾方向翻滚一整屏(即PgDn)。
        H        将光标移至当前屏幕首行的行首(即左上角)。
        nH        将光标移至当前屏幕第n行的行首。
        M        将光标移至屏幕显示文件的中间行的行首。
        L        将光标移至当前屏幕的最底行的行首。
        nL        将光标移至当前屏幕的倒数第n行的行首。
        w        将光标右移至下一个字的字首。
        e        如果光标起始位置处于字内(即非字尾处),则该命令将把光标移到本字字尾;如果光标起始位置处于字尾,则该命令将把光标移动到下一个字的字尾。
        b        如果光标处于所在字内(即非字首),则该命令将把光标移至本字字首;如果光标处于所在字字首,则该命令将把光标移到上一个字的字首。
        0        移动到光标所在行的行首。
        $        移动到光标所在行的行尾。
        ^        移动到光标所在行的第一个字符(非空格)。
--替换和删除
        rc        用字符c替换光标所指向的当前字符。
        nrc        用字符c替换光标所指向的前n个字符。
        x        删除光标处的字符。
        nx        删除从光标所在位置开始向右的n个字符。
        dw        删除一个单词。若光标处在某个词的中间,则从光标所在位置开始删至词尾并连同空格。
        ndw        删除n个指定的单词。
        db        删除光标所在位置之前的一个词。
        ndb        删除光标所在位置之前的n个词。
        dd        删除光标所在的整行。
        ndd        删除当前行及其后n-1行的内容。
--复制和粘贴
        YY        将当前行的内容复制到缓冲区。
        nYY        将当前开始的n行内容复制到缓冲区。
        p        将缓冲区的内容写出到光标所在的位置。
--搜索字符串
        /str        往右移动到有 str 的地方。
        ?str         往左移动到有 str 的地方。
        n        向相同的方向移动到有str的地方。
        N        向相反的方向移动到有str的地方。
--撤销和重复
        u        取消前一次的误操作或不合适的操作对文件造成的影响,使之回复到这种误操作或不合适操作被执行之前的状态。
        .        再执行一次前面刚完成的某个复杂的命令。
--退出
        ZZ        存盘退出
        ZQ        作废退出
发表于 2002-9-15 23:13:21 | 显示全部楼层

在字符界面下工作-Vi之命令(末行)模式下的操作命令

--跳行
        :n        直接输入要移动到的行号即可实现跳行。
--退出
        :q        退出Vi。
        :wq        保存退出Vi。
        :q!        不保存退出Vi。
--文件相关
        :w        将当前编辑的内容存盘。
        :w file        将当前编辑的内容写到file文件中。
        :n1,n2w file        将从n1开始到n2结束的行写到file文件中。
        :nw file        将第n行写到file文件中。
        :1,.w file        将从第1行起到光标当前位置的所有的内容写到file文件中。
        :.,$w file        将从光标当前位置起到文件结尾的所有的内容写到file文件中。
        :r file        打开另一个文件file。
        :e file        新建file文件。
        :f file        把当前文件改名为file文件。
--字符串搜索、替换、删除
        :/str/        从当前光标开始往右移动到有 str 的地方。
        :?str?        从当前光标开始往左移动到有 str 的地方。
        :/str/w file        将包含有str的行写到文件file中。
        :/str1/,/str2/w file        将从str1开始到str2结束的内容写入file文件中。
        :s/str1/str2/        将第1个str1替换为str2。
        :s/str1/str2/g        将所有的str1替换为str2。
        :.,$ s/str1/str2/g        将从当前位置到结尾的所有的str1替换为str2。
--文本的复制、移动和删除
        :n1,n2 co n3        将从n1开始到n2为止的所有内容复制到n3后面。
        :n1,n2 m n3        将从n1开始到n2为止的所有内容移动到n3后面。
        :d        删除当前行。
        :nd        删除从当前行开始的n行。
        :n1,n2 d        删除从n1开始到n2为止的所有内容。
        :.,$d        删除从当前行到结尾的所有内容。
        :/str1/,/str2/d        删除从str1开始到str2为止的所有内容。
--执行Shell命令
        :!Cmd        运行shell命令Cmd。
        :n1,n2 w ! Cmd        将n1到n2行的内容作为Cmd命令的输入,如果不指定n1和n2,则将整个文件的内容作为命令Cmd的输入。
        :r ! Cmd        将命令运行的结果写入当前行位置。
发表于 2002-9-16 08:16:01 | 显示全部楼层
太棒了。。。。。。
多谢osmond兄弟!
发表于 2002-9-16 11:45:41 | 显示全部楼层
既然玩console,为什么很少提到emacs呢?这个才叫真正的编辑器,功能强大,vi和它相比差远了,不过vi易上手。
发表于 2003-8-1 20:22:09 | 显示全部楼层
thanks a lot!
发表于 2003-8-1 21:04:41 | 显示全部楼层
vim建议通读manual,就是 :help toc 中所有的条目,我认为这是学习vim的最有效的方式;然后请去看看下面的网页
http://www.thomer.com/vi/vi.html
发表于 2003-8-2 09:27:39 | 显示全部楼层
这么老的帖子都有人翻啊 高手
发表于 2003-8-2 16:41:53 | 显示全部楼层

好东西~~~这样总比让我看几十k的文档舒服的多啊

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表