vi learning (to be continue)

首先 规范化的东西
        O’REILLY 的书里面对在终端输入的命令都采用 Courier 字体,在形式上有所区别的就是:
变量使用斜体,中括号为可选项,实际的Shell命令都是粗体
 还有键盘按键的规定,例如 Ctrl -> ^ 、Alt -> M 等等
一般命令格式
[数字] [命令] [数字] 文本目标
[ ] 的意思是可选择使用的,如果不输入则采用默认缺省值
 比较的老的UNIX系统中,文件名 <14 个字符
/ 用于表示 文件 与 目录 的分隔符
\ 可作为转义字符使用,例如在路径中含有空格的时候
$TREM 是当前终端名称的环境变量
还是要重申一下,不论是在shell还是在各个软件包中,Linux的管理都是分区大小写的,以下将介绍 的命令,如果是大写,就表明跟小写的字母是不一样的,可以选择使用开启大小写锁定键的方式来输入大写字母,不过斑驳在这里建议大家输入命令的时候如果碰到了大写字母,可以使用shift+相应的字母按键,这样子无需再次取消大小写锁定键的操作。
 
基础类别:
 没有正确的标识终端类型
 只读属性 ZZ == :wq
 不需要保存操作而重新编辑 :e! //!表示不回写缓冲区
 需要覆盖文件时 :w! file
 没有写权限时 :w writable_pathname/filename
 没有足够空间写入文件时 :!rm junkfile 或 :!df 查看分区信息
 需要调用shell时 ^+Z,fg 或 :sh,^+D||exit
简单编辑:
进入文件之后便是命令模式,除了 :及之后的字符,或几个特殊字符是ex中断回显以外,其他的输入都是不会被显示出来的,如果你需要在光标处插入文本,键入 i即可进入编辑模式。切换到命令模式只需要按一下Esc
移动
当然是除了用导航键的命令喽~//并不是每一个终端都支持光标键的
h 左 j 下 k 上 l(或space)右
+(或Enter) 下一行行首  - 上一行行首
*H 页首行 M 页中间行 *L 页尾行 (*为向中间偏移行数,是个整数就行,老版本的UNIX就可以支持100以内的数据了,现在好像没有什么限制吧,之后有 * 出现,不加提示,便指代整数,表示重复的次数,其实几乎所有的命令都是支持数字重复的,限于文字数量,便不再提示,见谅)
b 上一个单词首 w下一个单词首(*w) e 下一个的单词尾 0 行首(注意,这里是数字零) $ 行尾
 上一页 ^+B(半页 U)   下一页 ^+F(半页 D) 只要页面没有翻页,光标不移动位置
*+Enter 移动到*行  *G 定位到固定第*行  *z+Enter 定位到固定第*行,并置顶
修改文本
cw 删除一个单词后编辑 c*b 删除光标前面*个单词后进入插入模式 c0 c$删除从光标到行尾的字符并进入编辑模式 C||cc对本行替换修改(||表示的意思是或者,也就说这里的C 与 cc 是等价的意思,后文出现也将不再提示)
s 删除当前位置的字符后进入插入模式 S 删除当前行后进入编辑模式,等价于cc或者C
r仅替换当前字符为之后输入的一个字符,之后仍处于命令模式  R替换并进入插入
~ 大小些互换(老版本的不支持数字参数)
o从本行下面增加一行并编辑 O 从本行上面一行增加一行并编辑
J 与下一行合并,自动空一格后连接
d*w 删除*个字   *dd 删除*行
a 追加文本 i在光标处进入插入模式 I 在行首进入插入模式
x 仅剪切当前字符,常用于删除字符,如果接着使用p可以用来改变连续两个字母的顺序  P粘贴在光标处,如果复制的是行,则粘贴在本行的上一行
yw   y$   *yy||Y 复制单词 复制到行尾 复制当前行
.重复 u撤销

 

搜索
/strings 从开头查找 ?strings 从结尾查找 /+Enter ||?+Enter 继续
n同向继续查询 N反向继续查找
fchar 在本行内查找字符 ;继续
替换
:s/Old_strings/New_strings/g将当前行中的Old_strings全部替换成New_strings,g指的是当前行的全局替换模式,可以在 : 之后指定大致的位置范围,如下:
:50,100s/Old/New/g    或者 :1,$s/Old/New   等价于 :%s/Old/New
如果需要在确认之后再替换,可在最后添加一个 c的选项来标识,当需要替换时输入y+Enter,跳过当前查找的字符串可以直接输入 Enter
 而至于模式匹配的具体东西俺就不一一讲解了,之后的文章中会有一些简单的举例,方便大家快速掌握这个好用的编辑器。
经验
ea 在某个单词后边开始编辑
yy之后的p可以在上一行的任意位置
*i+strings(Esc)  在光标处添加多个相同字符串,以Esc结束,例如 80i# 一次在一行添加80个#
 对于组合键在添加数字参数的时候,数字在中间也是能够达到同样的效果
 当终端接收到其他信息时需要刷新屏幕可简单的使用 ^+L 不过一般没有sendmail的通知就多少用处了
 显示状态 ^+G 会出现在最下面一行
 从光标开始删除到查找到的第一个位置 d?strings
 一次打开多个文档,向下切换 :n或者 :e filename (前提需要保存当前文档)
 不同文件之间的复制,“f*yy w n||e filename ”fp
高级编辑
定制vi,在使用编辑器的时候通过 :set 命令来修改,或者编辑主目录下的 .exrc 文件,当然在当前目录下创建此文件则会制作出不同环境下的vi编辑器了
:set 命令
触发格式:set option关闭触发格式:set nooption
例如指定搜索忽略大小写  :set ic 而关闭这个模式为  :set noic
可通过使用  :set all 来查看会话中的全部选项,使用  :set option?查看单个选项值
看几个有有意思的选项吧
wrapmargin=NUM 右页边距值,控制自动换行
 默认情况下,搜索区分大小写、绕回首部搜索、匹配通配符的,他们分别对应着的是: ignorecase、nowrapscan和nomagic
 如果还有心情,可以玩玩这么几个: autoindent、showmatch、tabstop、shiftwidth、number和list
 不过需要提醒的是,autowrite这个选项会在执行 :n (到下一个文件编辑) 和 :!+Shell (执行shell命令)时自动将缓存写入文件
替换环境
如果你在主目录上设置了一些选项,又在工作目录设置了某些取消的选项,这样子的vi会像你想象的那个样子工作的
当然,如果你不喜欢 .exrc 这个名字,随便写个文件名,比如  .neo 然后在编辑器内部输入 :so .neo 嘻嘻效果相同哦,只不过重新运行vi的时候便复原了而已。
缩写自定义
通过命令制作缩写字母,例如现在我需要让neo这个缩写表示成 NEO’s Edition is Okay~ 这个样子,只需这个干:
:ab neo NEO’s Edition is Okay~
 然后再编辑的时候只需要输入neo便可以实现自动的替换功能,感觉用着跟C语言中的宏替换类似,但是不得不说vi很人性化
 需要删除缩写也很简单,输入   :unab neo即可。需要列出全部缩写列表么,  :ab 即可。当然,别想来考验计算机的检查功能,如果有想法来创建一个递归的死循环,是不会得到你想要的坏现象的,从Vim5.0开始就沿用扩展一次的标准了。
映射命令

其实除了命令模式之外,在插入模式下定义宏的行为跟ab很相似,例如:
:map x oloving Delly…
 功能很简单,当你敲完回车之后,只要是在命令模式下面,输入一个小写的 x 然后便会立即在当前行之后插入一行”loving Delly…”的字符串,试试看,很神奇哦~
当然,x后面的东西就留给你自己慢慢开发喽~不过要找系统没有定义过的按键来用才成,不然后果你也猜得到~
取消的话很简单   :unmap x 需要列出全部映射么    :map 就可以了
 在举一个例子好了:
:map v dwe p 这个功能是为了对付那些单词的,如果发现需要将两个单词位置对调,只需在第一个单词的首字母按下 v 即可帮你完成任务
 看来需要说明一下原因了,dw应该一看就知道的,删除这个单词,e直接到了下一个单词尾字母,然后空一格是为了插入单词用的,p就是粘贴了

 

 

 

                                                                                         斑驳敬上  to be continue . . .

29 条评论

  1. 支持下!应用千变万化 都离不开 基础!

    • 呵呵,多谢多谢
      有了伙伴的支持也是一件很美好的事情呀 哈

  2. 不懂得飘过了啊

    • 呵呵,vi编辑器不是为桌面用户提供的哦
      如果楼主是从字符界面用上来的,兴许会感到有别样的感觉吧

  3. 好文章!

    • 嘿嘿 谢谢夸奖~

  4. 再来点这类的linux应用文

    • 不过 这种文章写起来也是挺够费时间的~
      斑驳日后会努力为大家多写这类文章的 哈

  5. 哈哈哈哈哈……这个我不懂= =b

    • 不懂的可以学呀 反正也就这么两种状态,懂–不懂
      一开始我也不会vi的 用了两天就上手的,第三天就开始着手写这篇文章了,大概前前后后加上总结啥的,用了两个周的时间
      Windows平台可是用gvim的一个软件来模拟是用,不过它的功能又更加强大了

  6. 看标题,不认识英文,囧,看内容,明白了一点。

    • 哦 vi 其实是一个缩写 Vi(sual) editor 也就是可视化编辑器的意思
      在字符界面中,不要对一个可视化编辑器报有多少美丽漂亮的幻想,但是可以这么思考:word提供给用户的是一系列的菜单和下级子菜单,我们需要不停的点击鼠标才能完成的工作,在vi中是更加快速有效的完成编辑工作~不过,这也是针对于字符用户来说的,作为桌面用户或者是高配置的用户来说,很难体会到这一点的

  7. 虽然我不懂 但我很厚道 哈哈 顶奶牛。。

    • 呵呵 这么一说 我就会不好意思的了~~

    • 呵呵,欢迎常来哈~~~

  8. vi /vim 这两用起来很不习惯 …..

    • 习惯是如何养成的呢?
      当初的IE不就是捆绑在Windows上强迫让我们习惯的么?
      注意一下使用对象,毕竟不是每一个人都要选择Linux的,其中也不是都选择字符界面的快捷和高效的
      如果你钟爱鼠标的点击和文字阅读然后完成编辑任务的话,我推荐你使用MS的word
      如果你钟爱严谨和标准,又是可爱的界面,我推荐你使用Mac
      如果你只是想要一个XP的克隆或者是其他的什么替代品,Linux不是一个好的选择

      • 鼠标点击我也不会用MS word,那东西对我来说一点用也没有

        • 呵呵 那当你面对领导给的docx文档时,你还能选择么?
          不知道你的习惯是什么,不过Office组件对国人的影响还是很让老外们吃惊的,不是么~

          • 学校那破机子 还是装 ms office 2003 我不认为那该死的淋导
            会给我Docx , 再说 , 我在学校不做班干啥的

        • 呵呵 看来咱俩还较上真了
          vi代表的是一个高效又ugly的TUI
          而如今的大家都是彻底GUI起步,想要普及是不太现实了,而且并不是每每一个人Linux起步都是从服务器搭建开始的。所以,选择自己合适的才是最好的 不是么~

          • 嗯嗯,那是

  9. 用惯vi难用桌面版,用惯桌面的难用vi……

    • 呵呵,我还好吧,倒是没有精神分裂,Linux的话我一般都是用vim和gedit,Windows里面我一直很钟爱记事本,只有必要的时候才换成UE或者WPS

  10. 习惯用vim,用别的编辑器,习惯性的ESC

    • 呵呵 你的习惯还不错来
      我修改文章的时候还习惯性的dd来
      vi的影响力还是很大的

  11. braxiu小修修童鞋是奶牛的小偶像的说,年轻有为哦,嘿嘿~~~

  12. 哦 O(∩_∩)O~ 常来哦

:wx :k :good :fd :gz more »