在linux中,常用的编辑器,大概有2个半,vi或者vim,emacs,还有个简单的nano。有人说程序猿分为三种,一种是使用vim的,还有一 种使用emacs的,剩下的都是第三种。用现在一个时髦的比方,普通程序猿用emacs或者类似的vs,文艺程序猿用vim,二逼程序猿用其他。由此可见 VIM的强大程度,这是一款非常适合程序员使用的,熟练了以后会上瘾的编辑器。vim设计了多种模式,常见的模式包括命令模式,编辑模式,命令行模式等, 这个也是和其他编辑器一个很不相同的地方,用习惯了ms的各种文本编辑器,可能会比较不习惯,但是如果将模式熟悉了就可以发现在不同的模式之间切换是很平 常的事情,而且带来的好处是更少的按键和更快的输入。
    VIM是VI的优秀后裔,虽然VI的后裔中不仅仅包括VIM,但是VIM是实现对VI的兼容性最好的编辑器,其他的后裔还包括STEVIE, ELvis, NVi, Vile等。除了实现对VI的兼容性外,VIM还扩展了很多的功能,包括语法高亮,代码折叠,脚本扩展等等。
    vim我也是初学乍练,开始也是因为在linux中,写shell用这个比较方便,同时也没有更多的选择,只是被迫的使用,可一来二去,当度过了记忆那 些头疼的键盘指令后,才开始渐入佳境。与windows种那些常用的文本编辑器如:vs,word,notepad比较,vim入门显然是比较难的,可如 果用习惯了以后,也许就会迷恋上这种不使用鼠标甚至小键盘的设计。废话少说,言归正传,把使用心得记录下来,供今后参考。

一、三种模式
vim的工作模式:
1.命令模式(Command mode) ESC进入命令模式。
2.编辑模式(Insert mode)  ESC可退出此模式。
3.命令行模式(Command line mode) 输入":"进入此模式。

深入理解这三种模式,是vim的根本。

二、启动、保存与退出

打开vim编辑文档,常用的无非是:vim filename的方式。
至于还有写蛋疼的譬如定位到第几行之类的参数,一般用不着,
进入vim可以用xxxG,或者:xxx来定位,不记也罢。

还有两种用的到的打开方式,一种是同时打开多个文件,
如:
vim file1 file2 file3
vin file*

vim会依次打开3个文件,使用命令行::bp :bn在文件之间切换。
这种方式,我认为一个是不同文件之间复制内容时比较有用,
还有一个就是可以在shell命令行种,使用vim xxxx*一类的通配符,
同时打开一类文件进行编辑。

命令         执行的操作                记忆方法
------------------------------------------------------
:bn          下一个文件
:bp          上一个文件

还有一个分隔窗口的打开方式,当打开file1时,使用命令行:
:sp file2,便可以使用分隔窗口,打开file2,这个在比较文件,
或者几个文件之间复制内容时,是非常有用的。


命令           执行的操作                记忆方法
------------------------------------------------------
:sp file      新建分隔窗口,打开file
Ctrl+w+方向键 切换到前/下/上/后一个窗格
Ctrl+w+h/j/k/l 同上
Ctrl+ww       依次向后切换到下一个窗格中

常用的退出和保存命令无非就是w,q,!进行组合
比较有意思的是:e,有时我会查看正在更新的日志文件,
当日志文件有更新时,可以简单的使用这个命令,
将最新的文件读入到vim中。

命令         执行的操作                 记忆方法
------------------------------------------------------
:q               退出                         quit
:w               存盘                         write
:e             打开新文件
:r             读取文件到VI                   read
:!               强行
------------------------------------------------------

常用的组合如下:
:wq 保存并退出
:w 只保存
:q! 退出不保存
:q

下面是一些类似茴香豆的写法的命令,仅供记忆与参考。
-----------------------------------------------------------
启动编辑器
 命令     功能
 vi +100 foo
     打开文件foo并把光标定位在100行
 vi +/pat foo
     打开文件foo并把光标定位在pat第一次出现的行
 vi +foo      打开文件foo,把光标定位在文件尾
 vi foo1 foo2 ...
     打开文件foo1,用n切换到foo2等
 vi -r foo
     把交换文件里的内容恢复到缓冲区里
 vi -R foo
     一只读模式打开foo文件
保存与退出
 命令      功能
 :w      保存文件并继续编辑
 :w bar
     同微软Windows操作系统中的“另存为……”
 :w! bar
     同上,但是覆盖现存的文件bar
 :n1,n2w foo
     把n1到n2之间的行保存到文件foo
 :n1,n2w>>foo      把n1到n2之间的行添加到foo文件尾
 :.w foo
     把当前行保存到文件foo
 :$w foo
     把最后一行保存到文件foo
 :x      保存并退出编辑器
 :wq      同上
 :q      如果文件的内容没有变化则退出编辑器
 :q!      放弃修改并退出编辑器
:set nu        显示行号                       number
:set nonu      隐藏行号                       no number
 ----------------------------------------------------------
 
 
三、移动
关于移动,我觉得可能是vim最有意思的地方,因为vim设计的精髓,就是不使用
鼠标与小键盘也可以完成所有工作。
移动,多是在命令模式下完成,如果进入到编辑模式,则只有使用方向键了。
下面是我常用的一些命令与快捷键:

页面之间移动,常用的无非就是下面四个组合。
快捷键         功能                       记忆方式
--------------------------------------------------------------
Ctrl + f       翻到下一页(向前翻页)     front
Ctrl + b       翻到上一页(向后翻页)     back
Ctrl + u       向前翻半页
Ctrl + d       向后翻半页
--------------------------------------------------------------

vim行之间移动是比较有意思的,vim使用h,j,k,l代替方向键在行之间、字之间移动,
且使用注入w,b之类的按照词移动的方式,则明显比vs快捷的多。
 
快捷键         功能                       记忆方式
--------------------------------------------------------------
h              左
j              下一行
k              上一行
l              右
--------------------------------------------------------------

快捷键         功能                       记忆方式
--------------------------------------------------------------
^              移到行头          往上就到行头了(象形)
$              移到行尾          写完一行就要给一行的钱
w              下一个单词         word
b              前一个单词         behind(在。。。后面)
e              下一单词尾         end
p              向前移动到单词首
0或|           移动到行首
30|            移动到第30列
H              将光标定位到屏幕第 1 行行首
M              将光标定位到屏幕中间行行首
L              将光标定位到屏幕最后 1 行行首
G              光标定位到文件的最后 1 行行首
#G             跳到某一行        大哥(G)说到哪就到哪
1G 2G 3G       将光标定位到数字所示行行首
--------------------------------------------------------------
B、E和W命令的作用与b、e和w的作用一样,只是后者忽略了标点符号。

下面细说一下,比较有用的按照行号或者文件百分比移动的情况。

快捷键         功能                       记忆方式
--------------------------------------------------------------
gg             跳到文件首
1G            跳到文件首
40G            跳到第40行
G            跳到文件尾
40%            跳到文档40%的位置
--------------------------------------------------------------

有时,会需要显示行号。常用的下面两个。

快捷键         功能                       记忆方式
--------------------------------------------------------------
[Ctrl+g]       显示当前行号及文件的百分比
:set nu        显示行号
:set nonu      取消现实行号
--------------------------------------------------------------

还有一个,尤其是对于编写程序比较方便的块移动的方式,多是用各种大中花括号,
尤其是%对于写乱了套的程序猿来说,还是非常有用的,
这个写程序是多自己试试:

快捷键         功能                       记忆方式
--------------------------------------------------------------
)              定位到下一句开始
(              定位到当前句开始
{              上一段
}              下一段
%              对应括号
[
]
--------------------------------------------------------------
方括号的,我忘了。。。懒得试了。

四、搜索

常用的无非是下面的5个指令。

快捷键         功能                       记忆方式
--------------------------------------------------------------
/search_string 从当前行向下查找“search_string”
?search_string 从当前行向上查找“search_string”
n 继续查找下一个“search_string”
N 继续查找上一个“search_string”
/serrch_string\c 忽略大小写
--------------------------------------------------------------

还有一些使用正则表达式进行匹配的方式,以后再进行补充。
另外,按说替换应该与搜索同列一个专题,但是。。。懒得写了,那个以后写编辑篇的时候,
再说吧。

posted on 2011-11-08 15:15  jinshoucai  阅读(788)  评论(2)    收藏  举报