Vim学习指南


百度网盘下载相关视频:http://pan.baidu.com/s/1eQFZRhC

也可以在线观看相关视频:http://bbs.lampbrother.net/read-htm-tid-117455.html

vim软件可以在百度网盘下载:http://pan.baidu.com/s/1kT0WCZX

第一层次 – 适应


在标准的编辑器里,写一些东西到屏幕上只需要在键盘上输入就足够了,在Vim中不是这样。Vim在普通模式里,让我们转到插入模式,键入字符i。

你应该感觉好一点了,能像在标准编辑器里输入了,回到普通模式只需按ESC键即可。

你现在知道了如何在插入和普通模式之间转换,下面是你在普通模式下需要记住的指令:

  • i→ 插入模式. 按ESC键返回普通模式
  • x→ 删除光标所在的字符
  • :wq→ 保存退出(:w 保存,:q 退出)
  • dd→ 删除(拷贝)当前行
  • p→ 粘贴

推荐:

  • hjkl(高度推荐) → 基本的光标移动 (←↓↑→), hj按行移动。
  • :help → 显示关于的帮助,可以使用help不带获得常规帮助。


"关闭兼容模式
set nocompatible

"模仿windows快捷键 Ctrl+A全选、Ctrl+C复制、Ctrl+V粘贴
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin

"gvim字体设置
set guifont=新宋体:h13:cGB2312

"gvim内部编码
set encoding=utf-8

"当前编辑的文件编码
set fileencoding=utf-8

"gvim打开支持编码的文件
set fileencodings=ucs-bom,utf-8,gbk,cp936,gb2312,big5,euc-jp,euc-kr,latin1
"set langmenu=zh_CN
"let $LANG = 'zh_CN.UTF-8'

"解决consle输出乱码
language messages zh_CN.utf-8

"解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

"设置终端编码为gvim内部编码encoding
let &termencoding=&encoding

"防止特殊符号无法正常显示
set ambiwidth=double

"缩进尺寸为4个空格
set sw=4

"tab宽度为4个字符
set ts=4

"编辑时将所有tab替换为空格
set et

"按一次backspace就删除4个空格
set smarttab

"不生成备份文件
set nobackup

"开启行号标记
set number

"配色方案
colo desert

"关闭上侧工具栏
set guioptions-=T

"关闭右侧滚动条
"set guioptions-=r

"开启自动缩进
set autoindent


第二层 - 爽一把



你懂的,命令是由需求所定。是时候学习更多命令了。下面这些是我的建议:

  1. 插入模式变种命令:

    • a→ 在光标后插入
    • o→ 在当前行之后插入新行
    • O→ 在当前行之前插入新行
    • cw→ 替换从光标到单词结束
  2. 基本移动命令

    • 0→ 跳到第一列
    • ^→ 跳到本行第一个非空字符
    • $→ 跳到本行末尾
    • g_→ 跳到本行最后一个非空字符
    • /pattern→ 搜索pattern
  3. 复制/粘贴

    • P→ 在当前位置之前粘贴,记住 p 是在当前位置之前粘贴.
    • yy→ 复制当前行,与dd和P命令相比更简单。
  4. 取消/恢复

    • u→ 取消
    • → 恢复
  5. 加载/保存/退出/修改 文件(缓存)

    • :e <文件路径>→ 打开
    • :w→ 保存
    • :saveas <文件路径>→ 保存到这个文件
    • :x,ZZ或者:wq→ 保存和退出 (:x 如果可能的话,只保存)
    • :q!→ 退出但不保存,使用:qa!,即使在缓存中还有已经修改的也会退出。
    • :bn(对比:bp) → 显示下一个(上一个)文件缓存

花些时间学习所有这些命令。一旦完成后,你应该就能完成在像在其它编辑器中所有事情。也许,你可能还会觉得有点笨手笨脚。但是跟着我进入下一个层次,你就会发现为什么vim值得你额外付出的努力。


第三层次 - 更好,更强,更快

恭喜进入第三层次!现在我们开始一些有趣的事。在第三层次中,我们只会谈论那些和vi编辑器兼容的命令


让我们看看vim是如何帮助我们做重复工作的:

  1. .→ (点)会重做最后一个命令,
  2. N<命令> → 会重做这个命令N次.

一些例子,打开文件然后输入:

  • 2dd→ 会删除2行
  • 3p→ 会粘贴文本3次
  • 100idesu [ESC]→ 会写入“desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu”
  • .→ 在最后一个命令之后会在此写入100个"desu".
  • 3.→ 会写入3个“desu”(并不是300个, 聪明极了).

 
 


掌握高效率使用vim是十分重要的。请不要跳过这节。

  1. NG→ 跳到第N行
  2. gg→ 是1G的快捷方式 - 跳到文件的开始
  3. G→ 跳到最后一行
  4. 单词间移动:

    1. w→ 跳到下一个单词的开头,
    2. e→ 跳到这个单词的末尾.

    默认,单词是有字母和下划线组成。这里我们所谓的单词就是由空格分隔的。如果你只想考虑单词,就使用大写的字符吧:

    1. W→跳到下一个单词的开头,
    2. E→ 跳到这个单词的末尾.
    Word moves example

现在,我们谈论高效率移动:

  • %: 跳到对应的(, (, [ 处.
  • *(对比#) : 跳到当前光标的下一个(上一个) 相同单词的地方

信我,最后3个命令价比黄金。

 
 


记住了vi移动的重要性?这里就是原因。大多数命令使用下面这种通用格式:

<开始位置><命令><结束位置>

例如: 0y$意味着

  • 0→ 跳到本行开头
  • y→ 从这里开始复制
  • $→ 直到本行结束

我们也可以使用ye,从当前位置复制到单词的末尾。但是y2/foo 会一直复制到第二个foo出现的地方。

但对于y(复制), d(删除), v(visual 选择), gU(大写), gu(小写)等等命令都是真实的。



使用上述的命令,是否觉得很爽了。但是现在,这里才是杀手锏。正因为其中有些特性,我才使用vim的。

在当前行移动:0^$g_fFtT,;

  • 0→ 跳到第一列
  • ^→ 跳到当前行的第一个字符
  • $→ 跳到最后一列
  • g_→ 跳到这行的最后一个字符
  • fa→ 跳到这行a字母的下一个出现的地方。(对比 ; )会查找下一个(上一个)地方
  • t,→ 跳到,字符的前一个字符.
  • 3fa→ 在这行中查找a出现的第三个位置.
  • F 和 T→ 与f和t相似, 但是方向相反.
  • Line moves

一个有用的提示:dt"→删除所有的直到”。 

 

区域选择 : <命令>a<对象> 或 <命令>i<对象>

这些命令仅仅能用在可视化模式的一个操作后。但是他们相当的有用。他们的主要模式有:

<命令>a<对象> 和 <命令>i<对象>

命令可以是任何命令,例如 , d(删除),y(拉取),v(进入可视化模式)。对象可以是: w一个单词,W一个单词 (扩展的),s一个句子,p一个段落。而且也可以是普通的字符, 例如",',),},]。

假设现在光标在 (map (+) ("foo")) 这个字符串的第一个o上。

  • vi"→ 将会选择 foo
  • va"→ 将会选择 "foo"
  • vi)→ 将会选择 "foo"
  • va)→ 将会选择 ("foo")
  • v2i)→ 将会选择 map (+) ("foo")
  • v2a)→ 将会选择 (map (+) ("foo"))

Vim学习指南_第1张图片

 

矩形选择块:

矩形选择块能够方便的对多行代码进行注释。 如:0I-- [ESC]

  • ^→ 将光标定位到这行第一个非空格字符
  • → 选择开始位置
  • → 向下移动 (也可使用 jjj 或者 % , 其他…)
  • I-- [ESC]→ 用 -- 来注释每一行  
Vim学习指南_第2张图片

提示:如果你的剪贴板在Windows中是非空的话,那么你就不得不使用来代替

 

实现:.

在插入模式中:只要打出单词的首字母,然后按,神奇的事情就发生了...

Vim学习指南_第3张图片

宏命令 : qa 做的一些事,@a,@@

qa 把你的动作记录在了寄存器 a 中。然后@a 就会将存在寄存器中的动作重现,就好像你从新打了一边。@@是将你最后一次执行的宏命令再次执行的快捷键。

事例

在只有数字1的一行上, 像这样键入命令:

  • qaYpq→
    • qa开始记录。
    • Yp记录这一行。
    • 增加数字大小。
    • q停止记录。
  • @a→ 在1下面写2
  • @@→ 在2下面写3
  • 现在键入 100@@ 就将会产生一个到 103 的自增列。

Vim学习指南_第4张图片

 

可视化模式选择: v, V,

我们已经看到过例子,这里还有v和V。一旦已经选择好了,你可以:

  • J→ 让所有行连接在一起
  • <(对比>) → 向左(右)对齐.
  • =→ 自动对齐
Vim学习指南_第5张图片

在可视化模式所选择的行的末尾添加一些东西:

  • 跳到目的行 (jjj 或者 或者 /patternor%等等…)
  • $跳到行末尾
  • A, 写入一些文本,[按] ESC 键.

Vim学习指南_第6张图片

 

分割:: split 和 vsplit

这些是很重要的命令,所以你应该在:help split看看。

  • :split→ 创建一个水平分割窗口t (:vsplit 创建一个竖直分割窗口)
  • :  dir是hjklor←↓↑→中任何一个。用来切换分割窗口。
  • _(对比|) : 用来最大化水平(竖直)分割窗口的大小
  • +(对比-) : 增加 (减小) 分割窗口

Vim学习指南_第7张图片

 

小结

这些是我经常使用的90%的命令。我建议你每天学习一到两个命令。在两到三周之后,你将会感觉到vim在你手上使用的是如此的强大。


你可能感兴趣的:(linux,vim编辑器,java_web)