Vim 和 Emac 都是利器啊,前段时间决定熟悉一套跨平台的编辑器,以便在 Win,Mac,Ubuntu 下都有相同的编辑体验。

于是尝试了一下 Vim,使用了一段时间,确实比 UE 之类的要高效。Win 平台下有 gVim, Mac 下也有 MacVim

Vim 的学习曲线确实有点陡峭,刚开始不是那么容易习惯的。查看帮助文档是必不可少的,其在线中文文档链接如下:

Vim 在线中文文档:http://vimcdoc.sourceforge.net/doc/help.html

这个文档超级大而全,方便查阅,如果想入门试试 Vim 的话,不太适合,下面我整理了一些方便入门的常用快捷键。

===========================================================

模式操作

===========================================================

Vim具有五种基本模式,默认是普通模式,在普通模式下是无法进行编辑的,需要进入插入模式。

(Window 下用记事本打开一个 txt, 默认就是插入模式,所以就可以直接编辑,Vim 不是这样的!!)

===========================================================

普通模式(normal mode)

插入模式(insert mode)

命令模式(command mode)

可视模式(visual mode)

替换模式(replace mode)

其他模式下要回到普通模式:

===========================================================

Esc

Ctrl + c

Ctrl + [

进入插入模式

===========================================================

i insert 在光标前插入

I insert 在当前行的第一个非空白字符之前插入

a append 在光标后插入

A append 将输入点移动到在当前行的行尾来输入文本

o 在当前行下方新启一行,并进入插入模式。

O 在当前行上方新启一行,并进入插入模式。

s substitute 用来删除当前光标下的字符,然后进入到插入模式

cw change word 用的较少,和 s 相似,只不过删除的单位是单词。

首先删除由光标(包括光标)开始的一个单词,然后进入插入模式,

进入命令模式:

===========================================================

:, /

: 之后,使用方向键可以调出历史命令。甚至输入:s之后,

会对历史命令进行过滤,只调出以s开头的历史命令。

:help command 查看帮助文档

:: 查看命令行模式的帮助

进入可视模式:该模式下方便对文本进行选择

===========================================================

v, V, Ctrl+v

v visual,可视,以字符为单位移动

V 可视,以行为单位移动

Ctrl + v 可视,以块为单位移动

可视块模式应用:添加多行的 // 注释

首先将光标移动到要该代码块第一行的行首字母上,进入可视块模式,

然后移动光标到该代码块的最后一行的行首字母上,这时会高亮显示一列。

之后键入 I,注意不是i,此时信息区显示的是插入模式了,

然后键入注释符"//",将第一行注释掉,而其他行没有变化。

不用着急,最后键入Esc退回到普通模式。

这时其他被选中的行的前面都添加了注释符,从而都被注释掉了

进入替换模式

===========================================================

r, R

r replace,该键只是用于替换光标所在的单个字符而已。

R 持续替换直至退出 R 模式,在该模式下可以按照 backspace 恢复

===========================================================

关于模式的更多说明请查看Vim帮助文档,使用命令:

:help mode-switching

===========================================================

文件操作

===========================================================

分割窗口

===========================================================

:sp vim.txt split,水平分割窗口

:vs vim.txt vertical split,垂直地分割窗口可视块模式来完成了。

窗口切换

===========================================================

Ctrl + w + [h, j, k, l]

Ctrl 在Vim中"^"一般表示Ctrl按键

w window

h,j,k,l 就是上下左右四个方向

关闭窗口

===========================================================

Ctrl + w + [c] 关闭当前窗口

Ctrl + w + [o] 关闭其他窗口

保存文件

===========================================================

:w write,保存当前文件

:wa writeall,保存所有文件

退出文件

===========================================================

:q quit,关闭当前窗口或者当前标签页

:wq write + quit,先保存再关闭

===========================================================

导航以及跳转

===========================================================

Vim中的移动可以分为两类:导航以及跳转。

导航是小范围的移动;而跳转是大范围且并不确定执行后光标位置的移动。

Vim帮助文档里面将这类操作叫做motion操作。可查看帮助:

:help motion

导航

===========================================================

h, j, k, l, w, e, b, f, F, t, ,, ;

h, j, k, l 上下左右四个方向移动

w word,以单词为单位正向移动,光标停在第一个字母上

e end,以单词为单位正向移动,光标停在最后一个字母上

b back,以单词为单位反向移动,光标停在第一个字母上

f + key forward,移动到该行的下一个出现字符(key)的位置,

然后可以按下 ; 正向循环移动或者 , 反向循环移动

F + key 用法与 f 相同,只不过是反向移动

t till,效果与 f 类似,只不过 f 会将光标放置在目标字符上,

而 t 是将光标放置在目标字符的前一个字符上。

跳转

===========================================================

^, 0, $, %, [[, ]], gg, G, L, H, M, m, ', :[number]

^ 移动到本行第一个非空白字符处

0 移动到行首(参考命令 I)

$ 移动到行尾(参考命令 A)

% 在本行中正向查找或调整的配对字符(([{}])),

]] 组合键,在文本中t跳转到下一个位于行首的'{'字符

[[ 类似于 ]],只不过是反向

gg 跳转到整个文本的第一行

G 跳转到整个文本的最后一行

H high,跳转到当前屏幕显示文本范围内的第一行

L low,跳转到当前屏幕显示文本范围内的最后一行

M middle,将光标移动到屏幕显示文本范围的中间

m 组合键,与 Vim 的寄存器有关(请看文档 :help registers)

m - mark,输入 m 之后再输入寄存器序号(a - z, A - Z),

就将当前光标位置信息放到寄存器中保持,相当于设置了书签。

' 组合键,后跟寄存器序号,跳转到 m 设置的书签处

:[number] 是命令模式下的用法,跳转到指定行,number 为行数

翻页

===========================================================

Ctrl + f, Ctrl + b, Ctrl + d, Ctrl + u

Ctrl + f forward,相当于 PageDown

Ctrl + b back,相当于 PageUp

Ctrl + d down,正向翻半页

Ctrl + u up,反向翻半页

===========================================================

编辑操作

===========================================================

删除

===========================================================

x, d + [跳转/移动]

x 剪切,内容保存在寄存器 x 中

d + 跳转/移动 delete,组合键,删除并经内容保存到寄存器 x 中

dw delete word,正向删除单词

d0 反向删除到行首

d$ 正向删除到行尾

dd 删除整行

d^ 删除之本行第一个非空白字符处

移动

===========================================================

x, y, yy, Y, p, P, "+y, "+p

移动文本其实是一个组合的操作:

首先选择要移动的文本;

然后剪切或者复制该文本;

最后粘帖该文本。

x 剪切

y yank,复制,内容保存在寄存器 x 中

Y, yy 复制光标所在行

p paste,将寄存器 x 中保存的文本取出并粘贴在光标位置之后

P 同 p, 只是粘贴在光标位置之前

" + y 复制文本到系统复制粘帖板(注意不是 Vim 的寄存器 x 了)

" + p 是从系统复制粘帖板取出文本进行粘帖操作。

撤销重做

===========================================================

u, Ctrl + r

u undo,撤销

Ctrl + r redo,重做

查找

===========================================================

/ + key

/ 后跟要查找的字符串,然后输入 n 循环查找。查找字符串支持正则匹配式。

原文链接罗朝辉(http://blog.csdn.net/kesalin

最新文章

  1. web.xml中的contextConfigLocation在spring中的作用
  2. Mina的ProtocolEncoderOutput之坑
  3. 【SAP BO】【WEBI】【转】Webi实现动态选择度量
  4. 【NOIP训练】【数论】超级计算机
  5. LeetCode Number of Digit One
  6. 区别Javascript中的Null与Undefined
  7. 解决$_REQUEST['name']Undefined问题
  8. JAAS LOGIN IN WEBLOGIC SERVER--reference
  9. ZooKeeper 主要的操作演示样品
  10. SVN-Attempted to lock an already-locked dir错误
  11. 谈JS中的作用域链与原型链(1)
  12. 关于Java内存管理的几个小技巧
  13. 三菱Q系列PLC的智能功能模块程序
  14. python面向对象学习(六)类属性、类方法、静态方法
  15. setTimeout运行机制简要理解
  16. webpack——阮一峰webpackDemo分析
  17. MT【311】三角递推数列
  18. Manacher (最长回文序列)
  19. 谈谈选用技术的原则,技术学习方法技巧,阅读代码的技巧及其它 MSF的一点心得
  20. oracle PLSQL 多结果集嵌套循环处理优化

热门文章

  1. Spring学习总结六——SpringMVC一
  2. oracle 产生随机数
  3. PHPCMS V9 SQL查询篇
  4. application/x-www-form-urlencoded 的contentType,POST数据内容过大,导致tomcat的request取不到参数
  5. 浅谈Java的学习
  6. Linux命令之乐--wget
  7. butterknife用法总结
  8. C语言中一个字符数组里面的所有元素变成一个字符串
  9. thinkjs+swagger Editor
  10. __declspec(dllimport)与__declspec(dllexport)作用总结