vi & vim

引自: http://cse.seu.edu.cn/people/shine/vim_about.html

vim是vi的进阶版,有颜色标记更清楚

sudo apt-get install vim安装

解决乱码问题:

用 sudo gedit /etc/vim/vimrc 添加进如下内容:(不用sudo ,gedit就没权限保存)

"乱码问题大解决
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")
set fileencoding=chinese
else
set fileencoding=utf-8
endif
"解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"解决consle输出乱码
language messages zh_CN.utf-8


一.简介

  vi是unix世界中最通用的全屏编辑器,Linux中是用的是vi的加强版vim,vim同vi完全兼容,vi就是"visual interface"的缩写。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其它编辑程序所没有的。

  vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。

  vi没有菜单,只有命令,且命令繁多。只要在命令行上键入vi就可进入vi的编辑环境。vi有三种状态:命令模式,文本输入模式末行模式。键入vi回车后首先进入vi的命令模式。

  在命令模式下用户输入的任何字符都被Vi当作命令加以解释执行,如果用户要将输入的字符当作是文本内容时,则首先应将Vi的工作模式从命令模式切换到文本输入模式。在命令模式下,按一下"a"("A")键或者”i” ("I")或者"o"("O")键,即进入插入态文本输入模式。按"a"键,插入到当前光标的后面;按"i"键,在当前光标处插入;按"A"键,在当前光标所在行的最后插入;按"I"键,在当前光标所在行的开头插入。在文本输入模式下,按Esc键,即回到命令模式。

  末行模式也称ex转义模式。Vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“ ”键即可进入末行模式,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。

  例如:

  :1,$s /A/a/g

  则从文件第一行至文件尾将大写A全部替换成小写a。

  用退格键将输入的命令全部删除之后,再按一下退格键,即可使Vi回到命令模式下。


  当用Vi建立一个新文件时,在进入Vi的命令中也可以不给出文件名,当编辑完文件需要保存数据时,再由用户指定文件名。

  进入Vi时,用户不仅可以指定一个待编辑的文件名,而且还有许多附加操作。如果希望在进入Vi之后,光标处于文件中特定的某行上,可在Vi后加上任选项+n,其中n为指定的行数。例如 键入命令:vi +3 example.txt后,光标将位于文件example.txt中的第3行上。


Vi 键盘布局图片(可能有些不一致)

  



二.vi常用的命令

  1.插入(Insert)命令

  Vi提供了两个插入命令:i 和 I命令

  (1)i命令(前插)

  插入文本从光标所在位置前开始,并且插入过程中可以使用键删除错误的输入。此时Vi处于插入状态,屏幕最下行显示“--INSERT--”(插入)字样。

  (2)I命令(大i)

  该命令是将光标移到当前行的行首,然后在其前插入文本.


  2.光标移动操作在屏幕上移动  
  (1)在文本输入模式下,可直接使用键盘上的四个方向键移动光标。 
  (2)在命令模式下,有很多移动光标的方法。不但可以使用四个方向键来移动光标,还可以用h、j、k、l
  (3)在屏幕上移动 ,Vi提供了三个关于光标在全屏幕上移动并且文件本身不发生滚动的命令。它们分别是H、M和L命令。 

 
  3.编辑命令 
  (1)x--删除一个字符 
  删除文字的最简单的方式是用x。这个命令的结果是光标所处的字符的消失,后面的文字左移动。如果你删除的字符是一行最后的一个字符,那么光标将向左移动一个,这样光标就不会停留在不存在的字符的下面了。假如没有任何文字了,喇叭就叫。 
  (2)d--删除对象 
  d,再按箭头左或右删除前或后。
  (3)dd--删除一行 
  最常用的 d 系列命令之一。和前面一样, 5dd 将删除 5 行 
  (4)D--整个删除 
  大写形式的 D 用来删除从光标到行尾。和 d$ 一样效果。 
  (5)u--恢复 
  要后悔吗?他不仅仅撤消删除,还撤消你所有的编辑工作。 
  (6)--重复 
  重复编辑工作。 


  4.退出Vi 
  当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一。 
  (1)在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell。 

  (2)在末行模式下,输入命令 :w Vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。 
  例如:w newfile 

  此时Vi将把当前文件的内容保存到指定的newfile中,而原有文件保持不变。若newfile是一个已存在的文件,则Vi在显示窗口的状态行给出提示信息: 
  File exists (use ! to override) 
  此时,若用户真的希望用文件的当前内容替换newfile中原有内容,可使用命令 
  :w! newfile 

  否则可选择另外的文件名来保存当前文件。 

  (3)在末行模式下,输入命令 :q 系统退出Vi返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则Vi在显示窗口的最末行显示如下信息: 

  No write since last change (use ! to overrides) 

  提示用户该文件被修改后没有保存,然后Vi并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出Vi时,可使用命令:q! Vi放弃所作修改而直接退到shell下。 

  (4)在末行模式下,输入命令 :wq Vi将先保存文件,然后退出Vi返回到shell。 

  (5)在末行模式下,输入命令 :x 该命令的功能同命令模式下的ZZ命令功能相同。



Windows下的gvim 可以用来编译c程序


下载地址:http://www.vim.org/download.php

简洁的编辑器。

:!cl调用 VC的编译器。

:w  保存。

: sy on 加亮

:sy clear


PCOnline下载 官方下载
  

 改头换面
执行如下命令
:set go=
这时的VIM应该是

菜单和工具栏不见了。
补充说明:set表示一般性设置;go是gui option的缩写,就是界面;等于空就是什么都没有
再输入半条命令(先不要回车)
:colo ev
然后,按一下tab键。是不是自动补全为evening了?

天色全黑了?没错,现在是evening嘛。
  补充说明:colo就是设置调色方案。VIM自带了近十种调色方案,当然你还可以在网上下载更多,或改编自己的调色方案。你可以直接在:colo (加一个空格)就连续tab,选择不同的配色方案来体验一下。当然,evening是比较经典的一种。我一直就用它。


3.5 统一格式,vimrc
上面所操作的各种命令,都是对VIM的设置。把它们写到一个_vimrc文件中就成了默认选项。每个VIM用户的_vimrc文件都不一样,因为每个人的需求不同。

① 关闭所有的VIM
② 找到你的d:\program files\vim\vim7\_vimrc。
② 
右键点击此处 ,“另存为”覆盖你的d:\program files\vim\vim7\_vimrc。
  注:这并不是标准做法,但对windows用户是比较方便的做法。

3.6 打开test.txt
再次就模式进行提醒:Esc到Normal;Normal下i到编辑;Normal下:到命令行。
运行VIM,并在命令行执行
:e d:\test.txt
接下来,我们把此文章排一下版。如果你认为可以手工排版,请把此文件复制到10000行再发表意见。  

3.7 分段并保存
原文没有分段,观察一下,发现可以在“以下是……”前面加回车,于是
:%s/以下是/\r&/gc
输入后,界面如下

并提示,请回答y或a。如果回答y,则替换当前一个;到了下一个,VIM还会再问你。所以,你回答几个y后不妨一a了之,全部替换。


补充说明:
s表示替换s/a/b 表示把a换为b;上一命令是把“以下是”换为“\r&”,\r表示回车,&表示被替换的部分,即“以下是”;%则表示全文;/gc表示一直替换(不是仅替换第一个),并且要用户确认。


看一下文件,你或许想,空2行可能更好。很简单,再重复一下刚才的命令就好了。不过,对强大的VIM来说,无须笨笨地重复输入上次的命令。在命令行按下:后,
再按一下↑(向上的方向键),看到刚才的命令了吧?直接回车,提问时输入a,任务完成。
既有变化,请及时
保存。命令是
:w

当然,你也可以按ctrl+s。但ctrl+s之所以有效,是因为我在_vimrc中做了定义:当按下ctrl+s时,系统执行:w动作。因此,你完全可以定义其他热键,并把它映射到:w。

3.8 继续编辑
  首先删除“坚持”两字,很简单,只要按gg2x就行了。为了看效果,你可以分开按:
gg,这时光标移到文章头。
2x,这时删掉了2个字符。
u:取消。

再试一下3dd。一下子删除了3行!没关系,u回来。
再来一个dG,全文都没了!

3.9 更多编辑
任务a:把每一句分为一行,即达到如下效果

以**为荣、
以**为耻,
解决:如果你记得上面的替换命令,就会想到,可以用2次替换(“为荣、”换为“为荣、”加回车,“为耻,”换为“为耻,”加回车)。但这两次替换在VIM中完全可以一次完成,即用正则表达式,在“为”及后面2字符(“荣、”或“耻,”)后加入回车。怎么表示呢?
:%s/为../&\r/gc
看一下高亮,没问题,直接a

哇,是不是很壮观啊?没觉得?如果是一千行一万行呢?

  任务b:把行末的标点去掉,即“荣”后的顿号和“耻”后的逗号。
解决:办法太多了,仍可以用替换。但此处还是展示一个新功能:列操作。
安全起见,按两下Esc,再gg$,这时光标应到了文章第一行最后一个字符,即顿号上。
再按ctrl+v,注意一下状态栏是否提示有“可视 块” 字样。(请确认你是采用了xbeta的_vimrc文件,如果没有,请试一下ctrl+q)
再15jx,是否标点全部删除了?因为15j表示向下选中15行,x表示删除。

  任务c:错落有致
操作:这次演示一下宏的用法,请严格按本教程操作。
先做一下确认:输入法没有打开,并Esc到normal状态,gg到文首。
按qa(q表示开始录制宏,宏的名字为a)
再shift+>>(表示按住shift,连按两下>,再放开shift。此时第一行应当向后tab了一下)
再j^(此时下移一行,并置光标于行首)
再shift+>>再shift+>>(即第二行向后tab两下)
再j^(下移一行,并将光标置于行首,为后续操作做准备)
再q(表示宏录制结束,VIM会提示记录完成)
这样宏录完了,可以用了。
再@a,看到了效果了吧?宏执行了一次,即3、4行成功了。还剩下6段,但是你不用按6次@a,而是只要按下
6@a就行了!!!

太神奇了!回放一下?先u,再来一次
6@a。既然可以6,当然可以千千万万!

  补充说明:高手使用VIM是千变万化的。上面的前2个操作(分行+删标点),完全可以合成一个:%s/\(为.\)./\1\r/gc;或再把第3个操作(错落有致)融合到前一个操作中。

3.10 自由体验
  体验光标移动:请随意按几下j和k,看看反应;再多按几下l和h,看看反应;然后,当你的光标在英文时,请按几下w和b。
对了,gVIM的每一种功能,都有无限可能,因此,你也可以在上面几个字母前加上数字,比如 9w 2h,看它的反应。

  体验自动补全:i进来吧,到目前为止还没写过字呢!为简单起见,你直接把用鼠标放到中文的下一行,我们把 Eight Do's and Eight Don'ts 输入一遍。但是,输入一个E,先别动!按ctrl+p是不是自动补全了

  体验大小写(每次操作后,都用u恢复原状),试一下g~~和guu和gUU和g??(g??后可以不按u,再按一次g??也能恢复原状)
神奇吗?这还是VIM功能的单个表演,真正的高手是把它们组合在一起,完成你自己独特的编辑需求。

3.11 体验语法高亮和折叠
此部分讲起来太复杂。如果你有其他编辑器如UltraEdit基础,会有助于你理解。但VIM在此方面的强大灵活,UltraEdit是难忘其项背的。
仍然是我们编辑的原文件,为简化计,请下载
test2.txt;下载tx1.vim并保存在d:\program files\vim\vimfiles\syntax\tx1.vim
用VIM打开(比如要打开d:\test2.txt,请在VIM中:tabnew d:\test2.txt)它。平平无奇是吗?这是因为VIM并不 知道这个文件要加亮。键入一个命令:setf tx1,这就相当于告诉VIM此文件的类型是tx1,所以就按照刚下载的tx1.vim进行高亮和折叠。
  此时你会发现test2.txt完全折起来了。如何打开?你可用鼠标点最左边的+,当然,也可以用命令zr或zR打开(zR打开全部;zr打开当前;zM折叠全部;zm折叠当前)。打开后,看到高亮效果了吧。可以对文字设定前景色、背景色、粗、斜、下划线风格。

3.12 加密文件

  文本文件打开最快,编辑起来最容易,并且在VIM中查找非常方便。因此,我用它来记日记,并作为通讯录。但是安全问题怎么办呢?很简单,VIM本身即 可加密(录然解密也要用VIM)。在上述打开的文件中键入:X(是大写X),VIM就提示你设定密码,安全起见要确认第2次。然后,保存(键入:w)。把 VIM或此文件关闭,再打开时,就要输入密码了。只有你输入正确的密码,才能得到正确的文件。

4 我的应用
  VIM和Total Commander一样,我把它们都设定为开机自动运行,其应用不可胜数。
比如说通讯录管理,我未用任何软件,就用VIM管理一个address.txt。它可以实现:快速启动(我在VIM中定义了书签,键入`A就会打 开),加密(用VIM的:X),超强搜索(无须多说),分组折叠(fold),email和电话号的高亮显示(自定义语法文件)吧。
再比如,笔者会用VIM来辅助word, excel, bbs发文,安全删除文件,制作精简的五笔词库等。具体可参见 《
我常用的VIM功能 》,《 活学善用gVIM,提高工作效率:实例篇(合集) 》,《 用gVIM打造个性化记事本 》等文章。
如下两图分别是我的个性化txt示例,和用VIM写此篇文章时的情况:



引自:http://hi.baidu.com/adown/blog/item/9c28a94b43bc67f183025c7f.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值