版本号 说明 作者 日期 
1.0  vim基础知识 Sky Wang 2013/06/19
     

概要

vim和emacs,一个是编辑器之神,一个是神一样的编辑器。他们被称是UNIX系统下的倚天和屠龙,“二者得一,可得天下!”

几年前,自从笔者学会了VIM,就再也不想回到以前windows系统下的notepad、word、ue等编辑器了;甚至编程的时候,都不习惯使用其它的IDE了,如visual studio、visual c++ 6.0、source insight、eclipse等等。原因很简单,VIM高效很多!它非常适合程序员使用,学会VIM之后,能让你在编程时,双手一直游离在键盘之上,而不需要移开去操作鼠标。

接下来,我们就开始一起学习VIM。特别注意:纸上得来终觉浅,绝知此事要躬行。

PART-01 vim准备工作

安装vim,通过命令如下:

$ sudo apt-get install vim

安装完毕之后,即可通过下面的模板去编辑文件:
vim [options] [file ..]

示例
vim file.txt
表示用vim打开/编辑file.txt文件

说明
options -- 这项是编辑参数,可有可无。常用的有以下参数
-b : 以二进制的形式打开/编辑文件。
-R : 以只读的方式打开/编辑文件。
-S : 打开vim书签。
file -- 这项是要编辑的文件名。vim支持同时编辑多个文件名:多个文件名时,请以空格分开。

有了上面的基础之后,我们在当前目录下新建一个file.txt,并用vim打开编辑。并继续后续的学习内容。
新建file.txt命令:

$ touch file.txt

vim打开/编辑file.txt命令:

$ vim file.txt

打开file.txt之后,显示如下:

若要退出,输入

:q

若要保存退出,输入

:wq

若要强制退出,不保存,输入

:q!

PART-02 vim常用模式

下面的内容介绍vim的几种常用的模式。在详细介绍之前,我们先建立一个大致的概念:vim包括许多模式,不同模式有不同的功能,如“插入模式”让用户输入;“命令模式”>让用户执行保存/退出等等命令。这里,我们主要介绍vim的3种模式,其它模式后续再做说明!

vim包括主要包括3种模式:
插入模式
  -- 输入文本,目的是让用户输入文本。进入插入模式之后,vim就进入输入状态;用户就能输入文本。
编辑模式
  -- 也称为正常模式,目的是让用户执行编辑操作。比如在编辑模式,用户按“j”(敲击一次字母j),当前的输入光标会移动到下一行;用户按“yy”(敲击两次y按键)拷贝一行文本。
命令模式
  -- 目的是让用户输入命令。例如,在命令模式下,用户输入“w”表示保存文本。

在下面的内容中若有标记"(常用)"的,务必要使用熟练;其它的可以后续慢慢掌握。

PART-02.01 插入模式

插入模式的作用就是让用户插入文本。但是用vim打开文件之后,文件模式是“编辑模式”,而不是“插入模式”;所以,用户要进入“插入模式”。可以通过以下方式进入:
i 在光标前插入 (常用)
I 在行首插入 (常用)
a 在光标后插入 (常用)
A 在行末插入 (常用)
o 在下一行插入,这里是小写字母o。 (常用)
O 在上一行插入,这里是大写字母o。 (常用)
s 删除当前字符后插入
S 删除当前行后插入
cc 删除当前行后插入
c和方向键组合 删除后插入。例如,依次输入"c"、"l"表示删除下一个字符后插入;依次输入"c"、"j"表示删除下一行之后插入。

例如,打开file之后,按“o”进入插入模式。进入插入模式后,窗口的左下角会显示“-- INSERT --”,表示已经进入插入模式。
接着,我们可以输入文本。如下图:

如果要退出“插入模式”,按“ESC”即可。退出插入模式后,窗口的左下角会显示“-- INSERT --”会消失。

PART-02.02 编辑模式

编辑模式是让用户执行编辑操作。比如上/下/左/右移动输入光标,复制/粘贴文本,删除文本等等。
在所有模式中,编辑模式是使用最多的。因此:一,每次用vim打开文本,默认进入编辑模式!二,每次按“ESC”键从其它模式退出时,都会返回到编辑模式。它的进入方式也很简单:一,重新vim打开文件。二,在其它模式下按“ESC”返回。

--移动光标命令--
h 左移动光标 (常用)
l 右移动光标 (常用)
j 上移动光标 (常用)
k 下移动光标 (常用)

w 以单词(word)为单位向后移,移动到后一个单词的起始处。 (常用)
e 以单词(word)为单位向后移,移动到当前单词的结尾处。 (常用)
b 以单词(word)为单位向前移,移动到前一个单词的起始处。 (常用)
f<charater> charater为字母或者数字,表示向后查找charater,并将光标移动到charater处。(常用)
F<charater> charater为字母或者数字,表示向前查找charater,并将光标移动到charater处。(常用)

上面的命令大都可以带一个数字前缀或者一个数字范围,比如:
5j 将光标上移动5行
5w 将光标后移5个单词

[Ctrl]+f 屏幕向下移动一页,相当于 [Page Down]按键。 (常用)
[Ctrl]+b 屏幕向上移动一页,相当于 [Page Up]按键。 (常用)
[Ctrl]+d 屏幕向下移动半页
[Ctrl]+u 屏幕向上移动半页
+ 光标移动到非空白字符的下一列
- 光标移动到非空白字符的上一列
n<space> n表示数字,<space>表示空格键。n<space>表示光标向后移这一行的n个字符。 (常用)
0或[Home] 移动到这一行的开头。(常用)
$或[End] 移动到这一行的结尾。(常用)
H 光标移动到本屏首行的第一个字符
M 光标移动到本屏中央行的第一个字符
L 光标移动到本屏末尾行的第一个字符
G 光标移动到本文档的最后一行。(常用)
nG n为数字,nG表示该文档的第n行。例如,12G 表示移动到本文档的第12行。(可配合 :set nu)。(常用)
gg 移动到该文档的首行,相当于 1G。 (常用)
ngg 等价于nG
n<Enter> n为数字,光标向下移动 n 行。(常用)

--编辑文档命令--
dd 删除一行 (常用)
yy 拷贝一行 (常用)
p 粘贴文本(小写p,表示在当前光标之后粘贴) (常用)
P 粘贴文本(大写P,表示在当前光标之前粘贴) (常用)
x 删除当前字符 (常用)
X 删除前一个字符 (常用)

上面命令大多都可以带一个数字前缀或者一个数字范围,比如:
5dd 从当前行开始删除5行 (常用)
5yy 从当前行开始拷贝5行 (常用)
1,3d 删除1至3行
1,3y 拷贝1至3行 (.代表当前行,$代表最后一行)

u 撤销上一个动作引起的改变。(常用)
[Ctrl]+r 恢复上一个动作引起的改变。(常用)
. 这是小数点,作用是重复上一个动作。例如,如果你想要重复进行复制或者删除等操作,暗下小数点"."就可以了。 (常用)
' 这是单引号,作用是跳转到上一次的操作行。(常用)

--搜索文档命令--
在编辑模式下,可以进行搜索和替代。替代涉及到命令模式,后续章节再详细说明。
/word 向后搜索“word”。例如,要在档案内搜索“skywang”,就输入 /skywang 即可。 (常用)
?word 向前搜索“word”。
n 这是字符键n,表示“重复前一个搜索动作”。例如,我们刚刚在档案内输入 /skywang 进行搜索skywang;接着,按n就会不停的向后查找。(常用)
N 这是字符键N,作用和n相反,表示“反向的重复前一个搜索动作”。例如,我们刚刚在档案内输入 /skywang 进行搜索skywang;接着,按N就会不停的向前查找。

这些就是编辑模式下的基本命令。

PART-02.03 命令模式

命令模式是让用户输入命令。例如,通过“:w”保存文本。
进入方式。在编辑模式下,输入冒号":"进入命令模式。然后即可输入命令。

常用的命令:
:w 保存文档。
:w! 强制保存文档。针对打开只读文档使用,至于能否保存成功,跟你对该文档的权限有关。
:q 退出vim编辑器。
:q! 强制退出。若你修改文档,当不想保存退出,则可以使用强制退出。
:wq 保存文档并退出。
:w [filename] 将文档另外为filename,filename是文档名。
:r [filename] 插入“文档filename的内容”插入到当前光标处。
:r! [cmd] 将“linux命令”(cmd是命令名)插入到当前光标出。例如“:! pwd”,表示将当前路径插入到当前光标处。
:e [filename] 用vim打开文件filename,并进行编辑。

:set nu 显示行号
:set nonu 不显示行号

除了上面3种常用的模式之外,vim还有“选择模式”、“替换模式”和“鼠标模式”。
下面介绍以下“选择模式”和“替换模式”,而“鼠标模式”不做介绍,笔者觉得它与vim的精神相悖,因为使用vim就是为了远离鼠标。

PART-03 vim其它模式

PART-03.01 选择模式

选择模式的主要作用是进行区域性的选择,然后进行删除或复制操作。这个模式也比较常用,它支持任意区域操作。
模式进入方式:在编辑模式下,按 "[v]" 或 "[V]" 或 "[Ctrl]+[v]"。
[v] -- 以字符为单位,进行选择
[V] -- 以行为单位,进行选择
[Ctrl]+[v] -- 以块为单位,进行选择

下面,以下面的文本visual.txt为例,来介绍选择模式的使用。

                               Lesson  SUMMARY

  . To delete from the cursor up to the next word type:    dw
. To delete from the cursor to the end of a line type: d$
. To delete a whole line type: dd . To repeat a motion prepend it with a number: 2w
. The format for a change command is:
operator [number] motion
where:
operator - is what to do, such as d for delete
[number] - is an optional count to repeat the motion
motion - moves over the text to operate on, such as w (word),
$ (to the end of line), etc. . To move to the start of the line use a zero: . To undo previous actions, type: u (lowercase u)
To undo all the changes on a line, type: U (capital U)
To undo the undo's, type: CTRL-R

目的:删除 "The format ..." 到 "zero"之间的内容。
可以使用以下操作:
01, 用vim打开文本visual.txt。使用以下命令:

$ vim visual.txt

02, 将光标移动到"The format ..."所在行。有许多方法,下面介绍常用的几种:
方法一:不断的按j,移动到下一行,直到移动到"The format ..."所在行为止。
方法二:按8j,向下移动8行。
方法三:按9gg或者9G,直接跳转到第9行。(可以先通过":set nu"命令显示行号)

03, 按数字"0",移动到"The format ..."所在行的起始为止。

04, 按字母"l",移动到"The format ..."的字母"T"处。

05, 按字母"v"进入选择模式。此时,编辑器的左下方显示“-- VISUAL --”,表示进入选择模式成功。

06, 按字母"j"移动到"zero"所在行。

07, 按"$"将光标移动到"zero"所在行的模式。

08, 按字母"h"移动到"zero"的字母"o"处。

至此,选择完成!如下图。

09, 按字母"d",执行删除操作。即可删除 "The format ..." 到 "zero"之间的内容。

若要退出"选择模式",按"ESC"即可。

PART-03.02 替换模式

替换模式的作用就是进行替换。
进入方式:在编辑模式下,按 "r" 或 "R" 。
[r] -- 单个字符替换,只替换当前字符,替换之后返回编辑模式。例如,要将当前光标所在字符替换成"H",则依次输入"r"、"H",就可以了。
[R] -- 完全的替换模式,替换了当前字符后,会自动将光标移到下一字符...直到用户按"ESC"键退出"替换模式"。

若要退出"替换模式",按"ESC"即可。

后面会整理VIM的高级内容和笔者使用心得,以便更加有效的进行工作!

点击了解:更多Linux相关知识


参考文献:

01,  Vim用户操作指南

02, 《鸟哥的 Linux 私房菜》

03, 《Vim用户手册中文版》

编辑器之神VIM 总结(一) 基础部分的更多相关文章

  1. 优测优社区干货精选|老司机乱谈编辑器之神——vim

    文 / 腾讯 吴双 前言 优测小优 有话说: 腾讯优测只有应用测试大神?不不不,我们还有各种研发大牛! *** vim 是一种信仰,我自从2004年有了这个信仰,已经12个年头了.本文介绍了学习vim ...

  2. Ubuntu学习小结(二)PostgreSQL的使用,进程的查看关闭,编辑器之神Vim入门

    距离上次发布文章已经过去了很久.在过去的半年中,虽然写的代码不多,但是在接触了计算机一些其他的知识,包括数据库.网络之后,感觉能够融会贯通,写代码水平又有了一定的提高.接下来,将会发表几篇文章,简单介 ...

  3. 随处可编辑的编辑器之神VIM

    据说这世界上只有三种编辑器:Vim,Emacs 和 其他编辑器,其中 Vim 被称作编辑器之神,Emacs 被称作神的编辑器,当然,其他编辑器永远只能是其他编辑器. 拿一位 网友的话 来说,VIM 的 ...

  4. 工欲善其事:编辑器之神Vim(一)

    本篇文章收集了Vim最常用和实用的一些命令,掌握这些命令就可以使用Vim了 本文仅列举个人认为常用的命令,本系列文章更像是自己的学习笔记,而不是VIM使用教程. 如果你想了解vim的更多,可以看看Co ...

  5. 编辑器之神-vim的使用

    vim即vi的升级版:在linux中,vi是vim的软链接,我们敲vi和vim出来的都是vim: 纯手打,如有错误,敬请指出. vi的三种模式及简单使用 vi三种模式 命令模式(默认):是文件的入口, ...

  6. 4-2 编辑器之神--vim

    vim vi:Visual editor文本编辑器 文本:ascii,Unicode vim:VIsual editor iMproved 官网:www.vim.org 帮助网站:Vimhelp.or ...

  7. 编辑器之神---vim

    1. 不是在命令模式下时:yy   -----复制光标所在的这一行              p  ----粘贴      dd  -----剪切光标所在的行 D ---从当前的光标开始剪切,一直到行 ...

  8. 编辑器之神vim的一些常用快捷键整理

    yy:复制 光标所在的这一行 4yy:复制 光标所在行开始向下的4行 p:粘贴 dd:剪切(删除) 光标所在的这一行 4dd:剪切(删除) 光标所在行向下的4行 D:从当前的光标开始向后剪切,一直到行 ...

  9. vim 让人爱不释手的编辑器之神

    VIM 基本介绍 vim诞生已有20多年,它常被人称之为编辑器之神,vim的操作理念可以说是独具一格而又出类拔萃,使用vim能极大的提升文本处理效率,因此熟练掌握vim应该是每个程序员都应该做到的事情 ...

随机推荐

  1. 使用AJAX填充<select>标签下拉项,没有显示指定的option项

    newCarInfo.js代码如下: $(function() {     // 获取燃油种类     url = "basicFuelType_queryAll.action"; ...

  2. aehyok.com的成长之路一——开篇

    前言   不得不说最近三个月都没更新博客了,除了6月初的一篇博客外,今天的这一篇算是这三个月里发表的第二篇博客了.不过本人几乎每天都在博客园里刷来刷去,看大家发表的博文,从中汲取营养.确实博客园也可以 ...

  3. linux用shell腳本解决被ddos攻击的问题

    最近网站常常被人DDOS所以写了一个小程序用来自动封锁IP,代码如下: !/bin/bash for (( ; ; )) do status=netstat -na|grep ESTABLISHED| ...

  4. 无锁编程以及CAS

    无锁编程 / lock-free / 非阻塞同步 无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(Non-blocking Sy ...

  5. 编译Ngnix遇到的问题,查看程序依赖的库文件

    要点:ldd 可以读取每个可以运行的程序依赖的 so 文件. 编译的时候提示需要Openssl库. 查看本机,已经安装了openssl 查看编译报错文件,查找Openssl所依赖的库 more obj ...

  6. 第六章 - 图像变换 - 图像拉伸、收缩、扭曲、旋转[1] - 仿射变换(cvWarpAffine)

    拉伸.收缩.扭曲.旋转是图像的几何变换,在三维视觉技术中大量应用到这些变换,又分为仿射变换和透视变换.仿射变换通常用单应性建模,利用cvWarpAffine解决密集映射,用cvTransform解决稀 ...

  7. Linux Red hat修改主机名

    步骤一:修改etc/hosts文件内容为 [root@kypt01 /]# cd etc[root@kypt01 etc]# cat hosts127.0.0.1 localhost kypt01 l ...

  8. Linux文件和windows文件在 换行符的区别

    Linux或Unix文件,和windows文件,在来回处理时,如果不注意 换行符的区别,可能导致程序错误!!!深刻的教训.... 在早期的打印机时代,开始新的一行要占用两个字符的时间.如果到了一行的结 ...

  9. 关于Asp.Net MVC 中 UpdateModel 的未能更新***模型的 解决方案!

    解决方案参考: http://blog.csdn.net/hudaijun/article/details/7293129 想法: 其实,不用UpdateModel,虽然笨些,但不会出什么古怪问题.当 ...

  10. NVelocity-0.4.2.8580 的修改记录[发个vs2008能用的版本] -- "It appears that no class was specified as the ResourceManager..." bug 修正等

    因为另有开发记录工具最新没怎么在 cnblog 写开发备忘.不过我觉得这个是个比较严重的问题,觉得有必要让更多的人知道处理方法,所以在 cnblog 也放上一篇希望广为传播. 因为现在网络上vs200 ...