Vim学习 Step by Step

# Step 1

《 V I M  教  程 》摘要(版本 1.5)     

(注释:本文仅为个人学习摘要,推荐启动本教程学习,只需vi里要输入命令$ vimtutor )

     vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中
     就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而掌握好这
     些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用了。

     完成本教程的内容大约需要25-30分钟,取决于您训练的时间。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第一讲小结


  1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。
  h (左移) j (下行)       k (上行)     l (右移)

  2. 欲进入vim编辑器(从命令行提示符),请输入∶vim 文件名 <回车>

  3. 欲退出vim编辑器,请输入以下命令放弃所有修改∶

 <ESC>   :q!  <回车>

     或者输入以下命令保存所有修改∶

 <ESC>   :wq  <回车>

  4. 在正常模式下删除光标所在位置的字符,请按∶ x

  5. 在正常模式下要在光标所在位置开始插入文本,请按∶

  i     输入必要文本 <ESC>

特别提示∶按下 <ESC> 键会带您回到正常模式或者取消一个不期望或者部分完成
的命令。

好了,第一讲到此结束。下面接下来继续第二讲的内容。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第二讲小结


  1. 欲从当前光标删除至单字/单词末尾,请输入∶dw

  2. 欲从当前光标删除至当前行末尾,请输入∶d$

  3. 欲删除整行,请输入∶dd

  4. 在正常模式下一个命令的格式是∶

       [number]   command   object     或者     command [number]   object
     其意是∶
       number - 代表的是命令执行的次数
       command - 代表要做的事情,比如 d 代表删除
       object - 代表要操作的对象,比如 w 代表单字/单词,$ 代表到行末等等。
  $ (to the end of line), etc.

  5. 欲撤消以前的操作,请输入∶u (小写的u)
     欲撤消在一行中所做的改动,请输入∶U (大写的U)
     欲撤消以前的撤消命令,恢复以前的操作结果,请输入∶CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第三讲小结


  1. 要重新置入已经删除的文本内容,请输入小写字母 p。该操作可以将已删除
     的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置
     于当前光标所在行的下一行。

  2. 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字
     符即可。

  3. 更改类命令允许您改变指定的对象,从当前光标所在位置直到对象的末尾。
     比如输入 cw 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当
     前光标到行末的内容。

  4. 更改类命令的格式是∶

  [number]   c object       或者 c   [number]   object

下面我们继续学习下一讲。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第四讲小结


  1. Ctrl-g 用于显示当前光标所在位置和文件状态信息。Shift-G 用于将光标跳
     转至文件最后一行。先敲入一个行号然后按 Shift-G 则是将光标移动至该行
     号代表的行。

  2. 输入 / 然后紧随一个字符串是则是在当前所编辑的文档中向后查找该字符串。
     输入问号 ? 然后紧随一个字符串是则是在当前所编辑的文档中向前查找该字
     符串。完成一次查找之后按 n 键则是重复上一次的命令,可在同一方向上查
     找下一个字符串所在;或者按 Shift-N 向相反方向查找下该字符串所在。

  3. 如果光标当前位置是括号(、)、[、]、{、},按 % 可以将光标移动到配对的
     括号上。

  4. 在一行内替换头一个字符串 old 为新的字符串 new,请输入  :s/old/new
     在一行内替换所有的字符串 old 为新的字符串 new,请输入  :s/old/new/g
     在两行内替换所有的字符串 old 为新的字符串 new,请输入  :#,#s/old/new/g
     在文件内替换所有的字符串 old 为新的字符串 new,请输入  :%s/old/new/g
     进行全文替换时询问用户确认每个替换需添加 c 选项,请输入 :%s/old/new/gc

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第五讲小结


  1. :!command 用于执行一个外部命令 command。

     请看一些实际例子∶
   :!dir  -  用于显示当前目录的内容。
   :!rm FILENAME  - 用于删除名为 FILENAME 的文件。

  2. :w FILENAME  可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文
     件中。

  3. :#,#w FILENAME 可将当前编辑文件第 # 行至第 # 行的内容保存到文件
     FILENAME 中。

  4. :r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置
     后面。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          第六讲小结


  1. 输入小写的 o 可以在光标下方打开新的一行并将光标置于新开的行首,进入
     插入模式。
     输入大写的 O 可以在光标上方打开新的一行并将光标置于新开的行首,进入
     插入模式。

  2. 输入小写的 a 可以在光标所在位置之后插入文本。
     输入大写的 A 可以在光标所在行的行末之后插入文本。

  3. 输入大写的 R 将进入替换模式,直至按 <ESC> 键退出替换模式而进入正常
     模式。

  4. 输入 :set xxx 可以设置 xxx 选项。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         第七讲∶在线帮助命令

        ** 使用在线帮助系统 **

  Vim 拥有一个细致全面的在线帮助系统。要启动该帮助系统,请选择如下三种方
  法之一∶
 - 按下 <HELP> 键 (如果键盘上有的话)
 - 按下 <F1> 键 (如果键盘上有的话)
 - 输入 :help <回车>

  输入 :q <回车> 可以关闭帮助窗口。

  提供一个正确的参数给":help"命令,您可以找到关于该主题的帮助。请试验以
  下参数(可别忘了按回车键哦。:)∶

   :help w <回车>
   :help c_<T <回车>
   :help insert-index <回车>
   :help user-manual <回车>

 


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         第八讲∶创建一个启动脚本

     ** 启用vim的功能 **

  Vim的功能特性要比vi多得多,但大部分功能都没有缺省激活。为了启动更多的
  功能,您得创建一个vimrc文件。

  1. 开始编辑vimrc文件,这取决于您所使用的操作系统∶

     :edit ~/.vimrc  这是Unix系统所使用的命令
     :edit $VIM/_vimrc  这是Windows系统所使用的命令

  2. 接着导入vimrc范例文件∶

     :read $VIMRUNTIME/vimrc_example.vim

  3. 保存文件,命令为∶

     :write

  在下次您启动vim的时候,编辑器就会有了语法高亮的功能。您可以继续把您喜
  欢的其它功能设置添加到这个vimrc文件中。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  vim 教程到此结束。本教程只是为了简明地介绍一下vim编辑器,但已足以让您
  很容易学会使用本编辑器了。毋庸质疑,vim还有很多很多的命令,本教程所介
  绍的还差得远著呢。所以您要精通的话,还望继续努力哦。下一步您可以阅读
  vim手册,使用的命令是∶
 :help user-manual

 # Step 2

(注释:本文仅为个人学习摘要,推荐网上下载本文学习)


Vi IMproved 简介

edyfox@smth.org ( 滇狐)

http://edyfox.codecarver.org

清华大学软件学院
北京大学Linux 俱乐部

 
Unix 下的全屏幕可视化编辑器


由于其源代码不可获得,衍生了许多克隆版本


nvi 、elvis 、vile 、VIM...


VIM 即Vi IMproved , vi 克隆版本之一

VIM 简介

目前最流行的vi 克隆版本
支持目前绝大部分平台
Windows 、Unix 、Linux 、MacOS 、DOS...
功能强大,扩展性强
Bram Moolenaar 编写
1991 年11 月完成第一个版本
目前最新稳定版本为6.3
慈善软件
不强制注册
即使不通过注册,也能使用VIM 全部功能

注册用户可以投票选择想要的功能
个人家庭使用注册费10 欧元
用于专业领域编辑工作注册费30 欧元
缴纳的注册费将用于救助乌干达的可怜儿童

主要用于救助艾滋病肆虐的地区失去父母的孤儿

什么人适合使用VIM ?

追求编辑效率的程序员
VIM 的作者是程序员
他为程序员开发了许多有用的功能
其它经常处理纯文本的人员
中小型企业Web 开发人员
编写LaTeX 文档的研究人员
Unix / Linux 系统管理员

 
什么人不适合使用VIM ?

生活、工作和学习无需和纯文本打交道的人
处理其它类型的文件有专门的工具
打字速度慢于智能感知运行速度的人
VIM 目前暂不支持智能感知
被强大的IDE 惯坏了的人强大顺手的IDE 比方便快捷的编辑器更重要

 


主要内容

VIM 简介


VIM 入门


VIM 基本操作


VIM 快速编辑示例


编写自己的.vimrc

 


VIM 进阶


屏蔽系统自带的vimrc

Linux 用户


创建~/.vimrc 文件


Windows 用户


在个人主目录下创建空文本文件_vimrc


注意显示扩展名问题

 


Linux 下中文处理

编辑时不能输入中文


:set encoding=cp936

 

菜单显示是乱码


:so $VIMRUNTIME/delmenu.vim

 

:so $VIMRUNTIME/menu.vim

 

 

选择喜欢的字体

通过菜单与对话框选择字体

编辑--> 选择字体


只有等宽字体可以被选中


适合程序员使用的字体基本原则


Bitstream Vera Sans Mono

 

0Oo 1Il

 

 

:set guifont?

 


记住选中的字体名称

将显示结果抄下来备用
写入.vimrc

VIM 不能自动记住你所做的配置修改


需要手工写入.vimrc


双引号开头的行表示注释


你现在的.vimrc 也许是这个样子的:


" Windows 下建议也加上这句set encoding=cp936
" 这两句只在Linux 下需要so $VIMRUNTIME/delmenu.vim so $VIMRUNTIME/menu.vim
" 设置字体。" 字体名称可以通过前一节介绍的语句获得," 如果字体名称中含有空格," 需要在空格前面加上一个反斜杠,如下:set guifont=Courier/ 9
VIM 基本操作

VIM 是一个有模式的编辑器


Normal 模式下按键序列对应命令


按i 键进入Insert 模式


按: 进入command 模式

 


Insert 模式下可以输入文本


按ESC 回到Normal 模式


Command 模式下输入命令

 


有模式导致VIM 快捷键长度较短


使用hjkl

VIM 支持使用方向键移动光标


在insert 状态下移动光标会比较方便


使用hjkl 移动光标编辑效率更高

 

距离近,按键方便,眼睛无需离开屏幕
俄罗斯方块


http://vim.sf.net/scripts/script.php?script_id=172


vimtutor

vimtutor 是VIM 入门非常好的学习材料

 

Linux 用户


在终端中输入vimtutor


启动字符界面的vimtutor

 


Windows 用户


在开始菜单中找vimtutor 快捷方式


启动后出现乱码,重新选择一个中文字体即可

 


快速编辑示例

不再详细VIM 基本操作


时间所限,对VIM 的介绍不可能面面俱到


水平所限,所讲内容不可能强过vimtutor

 


介绍几个VIM 快速编辑示例


对于老用户,进一步增强记忆


对于新用户,坚定学习VIM 的决心

 


查找替换

准备工作


打开VIM ,按i ,输入:

this is a test

 

查找替换

 

按ESC 回到normal 状态,输入:

:%s/ /^M/g


其中^M 使用Ctrl-v.Ctrl-m 的方式输入


将所有空格替换为回车,文本变为4 行


行的拼接

查找/n 替换为空格可以实现拼接


这里使用j 命令拼接行


按ggVG ,全选


按: ,此时命令行显示为:


:'<,'>

 

在其后输入j ,回车


拼接完毕

 


复制粘贴与重复动作


在normal 状态下按yy ,复制当前行


按12p ,屏幕上即出现13 行上述字样

 

12 表示将其后的命令执行12 次

p 表示粘贴到当前行之后


VIM 里大部分命令都可以加上数字表明执行次数


列操作

选中全文第一列


按gg 跳到开头


按Ctrl-v 进入列选择状态


按G 跳到末尾

 


将每行第一列变为大写


按U 表示把选中内容变大写


按u 表示把选中内容变小写


按~ 表示翻转原有大小写

 


列操作

在每行前面加一个星号和一个空格

 

选中第一列


按I 进入插入状态


输入* ,按ESC

 


选中前两列后按x ,可以进行列删除

 

编程时可以用于批量注释和批量解注释
宏的录制


将所有偶数行的a 改成another


录制宏


按gg 进入第一行


按qm 进入宏录制状态,录制到寄存器m


按j 进入第二行,按$ 跳到行末


按2b ,光标停在字母a 上


按caw ,输入another ,按ESC ,按j 进入下一行


按q 结束宏的录制

 


宏的播放

单次播放


按下@m ,执行m 寄存器中的宏


可以发现第4 行的a 也变成了another

 

 

多次播放


输入1000@m


可以发现所有偶数行的a 都变成了another


到达文件底部时宏执行出错,会自动停止


最终并没有真的执行1000 次

 


点命令

在每行末尾添加一个感叹号


执行次数不多的简单操作无需使用宏

 

按gg 进入第一行,按A 进入行尾添加状态


输入! ,按ESC ,按j 进入第二行


按. 表示重复前一个操作,即行尾添加!


反复按j.j.j.j.


推荐大家左手鼠标

 


:%s/$/!/g

 

VIM 入门

21 天学习计划

多读文档,少走弯路

第一周:每天一遍vimtutor


熟悉基本操作,做到随心所欲


第二周、第三周:通读用户手册


读用户手册的同时修订出适合自己的.vimrc


目前手册有中文版译本可供下载

 

 

.vimrc for Beginners
基本设置

set nocp -设置不兼容模式

set ru -打开状态栏标尺


set hls -搜索时高亮显示被找到的文本


set is -递进搜索


syntax on -打开关键字上色


set backspace=indent,eol,start

 

set whichwrap=b,s,<,>,[,]

 


h,l,~


编码设置
一段可以自动猜测编码的脚本,很强的

" Encoding settings

if has("multi_byte")
" Set fileencoding priority
if getfsize(expand("%")) > 0

set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1
else
set fileencodings=cp936,big5,euc-jp,euc-kr,latin1
endif

" CJK environment detection and corresponding setting

if v:lang =~ "^zh_CN"
" Use cp936 to support GBK, euc-cn == gb2312
set encoding=cp936
set termencoding=cp936
set fileencoding=cp936

elseif v:lang =~ "^zh_TW"
" cp950, big5 or euc-tw
" Are they equal to each other?
set encoding=big5
set termencoding=big5
set fileencoding=big5


编码设置
续前页
elseif v:lang =~ "^ko"
" Copied from someone's dotfile, untested
set encoding=euc-kr
set termencoding=euc-kr
set fileencoding=euc-kr

elseif v:lang =~ "^ja_JP"
" Copied from someone's dotfile, unteste
set encoding=euc-jp
set termencoding=euc-jp
set fileencoding=euc-jp

endif
" Detect UTF-8 locale, and replace CJK setting if needed
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"

set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8

endif
else
echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"
endif


.vimrc for Beginners
文本编辑设置

set sw=4 -缩进尺寸4 个空格

set ts=4 -Tab 宽度为4 个字符

 

set et -将所有Tab 替换为空格


.vimrc for Beginners

C/C++ 编码设置


set cin -自动缩进


set ai -还是自动缩进


set cino=:0g0t0(sus

 

set sm -显示括号匹配

 


在console 下粘贴的版式问题


“ :set paste” 、“ set nopaste”


“ =” 命令重调格式

 


.vimrc for Beginners


断行设置


set lbr -不在单词中间断行


set fo+=mB -打开断行模块对亚洲语言支持

 


其它设置


set selectmode=

 

set mousemodel=popup

 

set keymodel=

 

set selection=inclusive

 

 


.vimrc for Beginners

图形界面与字符界面分别设置

if (has("gui_running")) -图形界面设置set nowrap -不折行set guioptions+=b -水平滚动条colo torte -配色方案

 


else -字符界面设置set wrap -折行colo ron -配色方案


endif

 

 

主要内容

VIM 简介


VIM 入门


VIM 进阶


VIM 常用插件简介


在VIM 中编写程序


在VIM 中编写LaTeX 文档

 


插件安装路径


$HOME/.vim 或%HOME%/vimfiles


$VIM/vimfiles


$VIMRUNTIME


$HOME/.vim/after 或%HOME%/vimfiles/after


$VIM/vimfiles/after


插件目录结构

colors

ftplugin

compiler

indent

doc

keymap


plugin

 

etc

ftdetect

syntax

常用插件推荐
日程安排工具Calendar

 

常用插件推荐
涂鸦插件Sketch

 

常用插件推荐

一系列插件实现的VIM.IDE

窗口管理器+ 文件浏览器(窗口管理器插件)

Tlist + ctags


VIM + ctags + cscope

 

ctags 、cscope 简介

常用插件推荐

ViKi + Deplate

类似WiKi 的语法


用于制作基于内容的简单个人主页


滇狐的个人主页就是使用ViKi 制作的

 

优点


使用方便,功能比较强大


缺点

 

配置复杂,依赖项太多
在VIM 下编写程序

正确地编写Makefile


设置合适的makeprg


例如在有的系统下你也许想用gmake


在Windows 下最好安装一份tee


能够看到编译过程


:set shellpipe=2>&1/|/ tee

 

 

根据编译器输出正确设置errorformat


在VIM 下编写程序

常见编译器可通过VIM 自带脚本设置参数


:compiler xxx


菜单项:工具--> Set compiler


使用:make 编译程序


使用:copen 查看错误列表

 

:make
:make clean


copen 小技巧

在多个文件中搜索指定字符串


将搜索结果列在一个buffer 中


可以条目跳转到相应文件的相应位置


copen 具备这样的能力

 


需求


在文件中检索指定字符串的工具

 

在检索结果给出文件名和行号信息


合适的errorformat 设置

 


copen 小技巧

设置grep 参数


:set grepprg=grep/ -nH/ $*


建议写到.vimrc 中


使用grep 命令查找文件


:grep "test string 2" *

 

:grep -R "test string 2"

 

:grep "function" *.cpp

 

 

在VIM 下编写LaTeX 文档

安装LaTeX Suite


配置正向、反向搜索


正向搜索


在生成的dvi 文件中查找源代码所对应元素

 

反向搜索

 

在生成的dvi 文件中查找元素所对应源代码的位置。


初学者关于<++> 的困惑

 

是LaTeX Suite 一项非常好用的功能
主要内容

VIM 简介


VIM 入门


VIM 进阶


VIM 使用小结

VIM 是非常强大而方便的文本编辑器


需要通过学习才能够用好


学习付出的努力是值得的


不要报怨VIM 作为IDE 不够强大


先想想自己为所谓“强大”的IDE 付了多少钱


开源社区的项目需要所有人为之付出劳动

 

谢谢大家!

感谢大家支持!

Q&A
Happy VIMming~~

#Step 3...

http://blog.csdn.net/iiprogram/archive/2006/03/14/624403.aspx

学习资源

VIM 网站


http://www.vim.org

http://vim.sourceforge.org


中文站点

 

水木社区VIM 版及版面附属FTP

学习资源
VIM 邮件列表

vim-announce@vim.org

vim@vim.org

vim-dev@vim.org

vim-mac@vim.org

vim-multibyte@vim.org 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值