Vim简明教程

Vim是一个古老的文本编辑器,它非常强大,本文简单整理一下个人学习和使用它的经验。

写在前面:

1,Vim最适合于程序员使用,最主要是用来编写源代码和脚本。如果你想找一个写文章,制表,做图之类的软件,就不用看下去了。

2,Vim的学习曲线比较陡,但也没到变态的程度。程序员的教育背景一般都是理工科,可以这样说,和任何一门理工科基础或专业课程比,它简直太容易了,所以完全能hold住。

3,有人觉得Vim的命令太多,记性不好,人机太过时,那么多命令全靠死记还是算了。本人记性力很差,但我觉得很多命令和语义有关系,只要英文还一般,我觉得都不是问题,另外最重要的是,Vim的命令是组合出来的,完全不需要死记。


下面开始Vim之旅


安装和配置

Vim几乎在所有平台都可见到,如果碰巧你机器上没有,从这里找一个合适你的版本:http://www.vim.org/download.php。安装完运行,你会发现很朴素的界面,不要以为它和Win32的记事本一样,如果你需要语法高亮,行号等,可以试着配置一下Vim,这很简单google "Vim 配置",很快你就能配好一个好看的外表。


Normal/Insert模式

Vim出现得很早,早期的文字编辑有一个插入模式,它不像现在大多数编辑器,一进来就是可插入状态,如果你习惯了这样,这会是你学习Vim遇到的第一个困难。Vim的大部分命令都是在Normal模式,也是常态。只有你真的需要插入的时候,才会进入插入模式。你会觉得奇怪,我新建一个脚本文件的时候,里面是空的,我接下来应该一直在插入模式,因为我编写脚本!使用Vim不是这样的,Normal模式下有很多命令,Insert下几乎只插入文本,正常的节奏一般会是这样一个过程:在Normal模式输入一些命令 [-> 用某种方式切入Insert模式 -> 敲入文本 -> Esc]([]的意思是可选)。就像你说话一样,这是一个句法的最基本的结构,使用Vim的过程就是在说很多句这样的话。

这种编辑方式的好处是,你不再也不需要鼠标了,甚至不需要键盘的光标控制区和小键盘区,是的,你可以双手不离开主键盘区完全文本的编写!


常用命令

常用命令我把它分三大类,分别是光标控制指令,动作命令指令和其它一些超级酷的指令,依次介绍你会觉得像本手册,还是以一些例子慢慢了解。


第一天

h,j,k,l 光标控制,左下上右

i 从光标所在字符前进入Insert,i==insert

:q 退出Vim,q==quit

:w 保存当前文件 w==write

:q! 不保存强制退出

:wq 保存并且退出

以上没有删除命令,但细心的你发现进入插入模式后可以用Backspace/Delete删除:)


第二天

w/W 光标跳到当前光标的下一个单词的开始

e/E 光标跳到当前光标的下一个单词的结尾 E仅从空格或Tab分隔单词,e分隔字母和数字

b/B 光标跳到当前光标的上一个单词的开始 W仅从空格或Tab分隔单词,w分隔字母和数字(编程里面关键字,标识符)

以上三个命令的小字表示分隔的字母或数字(编程里面关键字,标识符),大写表示分隔的纯空格或Tab分母的字符串

I 在当前行最前面进入Insert

a 从光标所在字符后进入Insert

A 从当前行最后面进入Insert

x 在Normal下删除当前光标所在字符


第三天

. 重复上一个命令,如果上一个命令包含进入Insert,那也会重复插入的内容

例,A -> 输入'// Hello' -> Esc,然后j移动到下一行 .

这是一个非常酷的命令!

u 撤销上一个命令 u==undo

Ctrl-r 重新执行上一个撤销的命令 r==redo

NG 跳转到第N行,N是一个数字,比如10N,跳到第10行

:N 跳转到第N行,同上

G 跳到文件末行

gg 跳到文件首行


第四天

0 光标跳到当前行首

^ 光标跳到当前行首第一个不是空格或Tab的字符

$ 光标跳到当前行尾

g_ 光标跳到当前行尾最后一个不是空格或Tab的字符

Ctrl-f 向下翻页,光标跟随移动

Ctrl-b 向上翻页,光标跟随移动


第五天

yy 复制当前行

dd 复制然后删除当前行(剪切)

cc 剪切然后进入Insert

Nyy 从当前行开始往下复制N行

Ndd 从当前行开始往下删除N行

Ncc 从当前行开始往下剪切N行并进入Insert

p/P 粘贴,p从当前行尾开始粘贴,P从当前行首开始粘贴


第六天

Vim的命令有一个通用执行过程,首先把光标定位在命令开始的位置,然后敲入命令,紧接着把光标定位在命令结束的位置,那调入的命令就会作用于光标变化的这一段字符。

<Start Pos><Command><End Pos>

最常用的命令就这3个:y,d,c,意思和第五天学的一样。

例如:

World Hello
我要把World剪切到行尾,首先0跳到行首,d开始要剪切,e光标会跳到World结尾的d,所以World会被剪切。然后$光标跳到行尾,p粘贴World。

另一个通用的方法是,N命令,表示重复N次某个命令。
例如:
N. 重复N次上一个操作
Np 粘贴N次
v 可视化,把后续光标选中的内容高亮显示出来,再后接一个命令执行,比如前面的de,可视化的作法就是ved。

第七天
% 神一样存在的光标定位,它从当前光标往后找第一个配对的括号((,[,{)的结尾处,比如:

int foo(int a, int (*p)());
0%,将定位到末尾;前的)

/串,搜索串
*,搜索光标所在单词
n,跳到下一个搜索的结果
N,跳到上一个搜索的结果
f/Fa,跳到当前光标往后下一个字符a处,比如f;,跳到当前行下一个;处 (大写反过来往前找)
t/Ta,跳到当前光标往后下一个字符a的前一个位置 (大写反过来往前找)

ix,比较特殊的光标定位,从光标当前位置开始,定位到外层的一对括号或引号什么的,它会改变命令的起始位置。
例如:
int foo(int a, int (*p)());
当前光标在a,di(,将剪切

int a, int (*p)()

ax,类似ix,只是定位的内容包括那一对括号或引号。
ix和ax是可以加N的,比如2a(,定位到上2层配对的()。

结束
到这里Vim的80%功能已经介绍完了。其它功能,宏录制,分屏,分页,make,执行shell,书签等,如果你感兴趣应该很快能熟悉,不再介绍。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值