[Tips]2011-10-30

vim的paste mode 我们会遇到这样的情况: 需要从Vim之外的其它程序里拷贝一大段文字,然后在Vim里粘贴。 一般的,启动vim之后,按i进入插入模式 (Insert Mode),然后粘贴就行了。 但是当Vim的配置越来越多,插入模式下粘贴大段文字时可能会遇到各种诡异的情况。 因为这个时候的粘贴就相当于手动输入这些内容,于是各种映射 (Mapping) 就被触发了…. :set paste 可以启动一种paste模式,这个时候各种Mapping会被无视,各种自动缩进也无效。和在记事本里粘贴效果一致。 paste命令也符合Vim的通常规范 :set nopaste 可以关掉它。

[Vim]vim的几种模式和按键映射

Map是Vim强大的一个重要原因,可以自定义各种快捷键,用起来自然得心应手。 vim里最基本的map用法也就是 :map c a 这里把c映射成了a,在map生效的情况下,按下c就等同于按下了a 当然,常用的Ctrl,Shift,Alt自然也是支持的。 令Ctrl+a对应到a :map a 令Alt+a对应到a :map a 令Ctrl+Alt+a对应到a :map a 到此,我们已经可以做很多事情了。 但是map命令远不只这一种,在不同的模式下,同一组按键可以被映射到不同的组合上。 Vim的模式众多,但是一般被提及的也就是这么几种: Normal Mode 也就是最一般的普通模式,默认进入vim之后,处于这种模式。 Visual Mode 一般译作可视模式,在这种模式下选定一些字符、行、多列。 在普通模式下,可以按v进入。 Insert Mode 插入模式,其实就是指处在编辑输入的状态。普通模式下,可以按i进入。 Select Mode 在gvim下常用的模式,可以叫作选择模式吧。用鼠标拖选区域的时候,就进入了选择模式。 和可视模式不同的是,在这个模式下,选择完了高亮区域后,敲任何按键就直接输入并替换选择的文本了。 和windows下的编辑器选定编辑的效果一致。普通模式下,可以按gh进入。 Command-Line/Ex Mode 就叫命令行模式和Ex模式吧。两者略有不同,普通模式下按冒号(:)进入Command-Line模式,可以输入各种命令, 使用vim的各种强大功能。普通模式下按Q进入Ex模式,其实就是多行的Command-Line模式。 对于Map,有几个基本的概念 命令的组合 同Vim下的其他命令一样,命令的名字往往由好几段组成。前缀作为命令本身的修饰符,微调命令的效果。 对于map而言,可能有这么几种前缀 nore 表示非递归,见下面的介绍 n 表示在普通模式下生效 v 表示在可视模式下生效 i 表示在插入模式下生效 c 表示在命令行模式下生效 Recursive Mapping 递归的映射。其实很好理解,也就是如果键a被映射成了b,c又被映射成了a,如果映射是递归的,那么c就被映射成了b。 […]