简介
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和
Emacs并列成为类Unix系统用户最喜欢的编辑器。
使用vim先知道其设计理念是很重要的,有助于记忆,举一反三;
a.vim的设计理念是组合;
命令组合: Vim强大的编辑能力中很大部分是来自于其普通模式命令。vim的设计理念是命令的组合。例如普通模式命令”dd”删除当前行,”dj”代表删除到下一行,原理是第一个”d”含义是删除,”j”键代表移动到下一行,组合后”dj”删除当前行和下一行。另外还可以指定命令重复次数,”2dd”(重复”dd”两次),和”dj”的效果是一样的。”d^”,”^”代表行首,故组合后含义是删除到光标开始到行首间的内容(不包含光标);”d$” $”代表行尾,删除到行尾的内容(包含光标);用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。
模式间的组合: 在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按”a”(append/追加)键或者”i”(insert/插入)键。
b.很多快捷键设置和正则表达式类似,可以辅助记忆; ^ $ w 等
c. vim针对程序语言代码编写者;
写代码的时候手需要时刻保持在键盘上,随机定位代码、随机删除代码、移动代码、插入代码的操作大大多于阅读、翻页操作,中间卡顿一下效率就大大降低了;但对普通用户而言,顺序写、设置字体格式、翻页读多于随机写删除操作, 且每个动作之间本身就有很多的停顿,用其他UI编辑器(word,notePad++等)效率反而比VIM高效,使用vim进行操作只会徒增你的疑惑: vim为什么这么流行。(如果你不是一个代码开发者,估计你看完这段话也无法感同身受,建议先去学一门编程语言,新手推荐学C,java入门,做到一道50行代码的课后习题,来感受下写代码的过程)
Vim/Vi 没有菜单,只有命令。
Linux Vim 工作模式
Linux Vim 插入命令
命令 |
作用 |
a |
在光标后附加文本 |
A |
在本行行末附加文件 |
i |
在光标前插入文件 |
I |
在本行开始插入文本 |
o |
在光标下插入新行 |
O |
在光标上插入新行 |
Linux Vim 定位命令
命令 |
作用 |
命令 |
作用 |
h、← |
左移一个字符 |
H |
移至屏幕上端 |
j、↓ |
下移一行 |
M |
移至屏幕中央 |
k、↑ |
上移一行 |
L |
移至屏幕下端 |
l、→ |
右移一个字符 |
|
|
$ |
移至行尾 |
|
|
0 |
移至行首 |
|
Linux Vim 删除命令
命令 |
作用 |
x |
删除光标所在处字符 |
nx |
删除光标所在处后n个字符 |
dd |
删除光标所在行,ndd删除n行 |
dG |
删除光标所在行到末尾的内容 |
D |
删除从光标所在处到行尾 |
:n1,n2d |
删除指定范围的行 |
Linux Vim 复制和剪切命令
Linux Vim 替换和取消命令
命令 |
作用 |
r |
取代光标所在处字符 |
R |
从光标所在处开始替换字 符,按Esc结束 |
u |
取消上一步操作 |
Linux Vim 搜索和替换
Linux Vim 保存和退出
应用实例
导入命令执行结果 :r !命令
:r /etc/issue
:r !date
:r !which ls 使用which命令在不退出Vim的情况下执行命令
定义快捷键: map 快捷键 触发命令
范列
:map ^P I# 在行首加字符'#' ^P(Ctrl+V,Ctrl+P)
:map ^B 0x 删除行首的字符 ^B(Ctrl+V,Ctrl+B)
连续行注释
:n1,n2s/^/#/g
:n1,n2s/^#//g
:n1,n2s/^/\/\//g
替换
:ab mywebsite http://blog.csdn.net/sir_fish/