Vim简明教程
2014-04-27 23:37
239 查看
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,意思和第五天学的一样。
例如:
另一个通用的方法是,N命令,表示重复N次某个命令。
例如:
N. 重复N次上一个操作
Np 粘贴N次
v 可视化,把后续光标选中的内容高亮显示出来,再后接一个命令执行,比如前面的de,可视化的作法就是ved。
第七天
% 神一样存在的光标定位,它从当前光标往后找第一个配对的括号((,[,{)的结尾处,比如:
/串,搜索串
*,搜索光标所在单词
n,跳到下一个搜索的结果
N,跳到上一个搜索的结果
f/Fa,跳到当前光标往后下一个字符a处,比如f;,跳到当前行下一个;处 (大写反过来往前找)
t/Ta,跳到当前光标往后下一个字符a的前一个位置 (大写反过来往前找)
ix,比较特殊的光标定位,从光标当前位置开始,定位到外层的一对括号或引号什么的,它会改变命令的起始位置。
例如:
ax,类似ix,只是定位的内容包括那一对括号或引号。
ix和ax是可以加N的,比如2a(,定位到上2层配对的()。
结束
到这里Vim的80%功能已经介绍完了。其它功能,宏录制,分屏,分页,make,执行shell,书签等,如果你感兴趣应该很快能熟悉,不再介绍。
写在前面:
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,书签等,如果你感兴趣应该很快能熟悉,不再介绍。
相关文章推荐
- Vim简明教程
- Vim简明教程【CoolShell】
- Vim常用命令与技巧简明教程
- Vim简明教程:基本可视模式
- Vim2.1-Vim简明教程【CoolShell】【非原创】
- Vim简明教程【CoolShell】
- vim的简明教程
- Vim简明教程【CoolShell】
- 简明Vim教程
- 转: vim简明教程
- vi(vim)入门简明实例教程---总览全局 快速入门
- Vim简明教程:基本可视模式
- Vim简明教程
- 00 vim 简明教程
- Vim简明教程【CoolShell】
- Vim简明教程【CoolShell】
- Vim简明教程【CoolShell】(转)
- Vim简明教程(CoolShell)
- Vim简明教程
- 正则表达式简明教程——grep Vim的查找与替换实例