"x"命令可以删除一个字符

"d"命令可以后跟任何一个位移命令,它将删除从当前光标起到位移的终点处的文本内容dw

"c",改变命令例如cw c2w  "cc"命令可以改变整行

"r"命令不是一个操作符命令。它等待你键入下一个字符用以替换当前光标下的那个字符

"."命令会执行上一次所执行的更改命令

"$"命令是移动光标到行尾

"w"看作是向右移一个word的命令

以匹配一个括号为目的的移动 %

"G"命令 2 。指定一个命令计数,这个命令就会把光标定位到由命令计数指定的行上

当你用"G"命令从一个地方跳转到另一个地方时,Vim会记得你起跳的

位置。这个位置在Vim中是一个标记。使用下面的命令可以使你跳回到你

刚才的出发点:``

自定义标记‘ma’定义了一个a标记,‘`a’跳转到a标记

:marks看关于标记的列表

' 进行此次跳转之前的起跳点

" 上次编辑该文件时光标最后停留的位置

[ 最后一次修改的起始位置

] 最后一次修改的结束位置

"H"意为Home, "M"为Middle, "L"为Last

CTRL-U、CTRL-D 向上上下滚半屏

简单搜索

/include搜索include单词   n查找下一个搜索目标N相反

你以"d"或"x"这样的命令删除文本时,被删除的内容还是被保存了起来。你还可以用p命令把它取回来

"P"命令与"p"一样取回被删除的内容,不过它把被取回的内容置于光标之前。

你可以多次取回被删除的内容。其内容取之不竭

也可以对命令"p"和"P"命令使用命令记数 3p

交换两个字符

"xp"。它的工作如下:"x"删除字符e并把它放入一个寄存器中"p"命令把被删除的e再放回

到当前光标之后

"y"是一个操作符命令复制命令可以使用命令计数器 "yy"命令复制一整行"yw"

剪切板

"*yy 复制一行到剪切板   "*p粘贴剪切板

"R"命令会让Vim进入replace模式。在此模式下,每个键入的字符都会替换掉当前光标下的字符。直到你键入<Esc>结束该模式

定制自己的vim

如果你已经有了一个vimrc文件(比如说系统管理员已经为你配好

了),可以这样来打开:$MYVIMRC

 

~/.vimrc

 

set nocompatible 关闭vi兼容

 

set backspace=indent,eol,start

这条命令告诉Vim在Insert模式下退格键何时可以删除光标之前的字符。选项中以逗号分隔的三项内容分别指定了Vim可以删除位于行首的空格,断行,以及开始进入Insert模式之前的位置。

 

if has("vms")

set nobackup

else

set backup

endif

这段脚本告诉Vim在覆盖一个文件之前备份该文件。

 

set ruler 总是在Vim窗口的右下角显示当前光标的行列信息。

 

set incsearch 在你键入要搜索的字串的同时就开始搜索当前已经键入的部分

 

filetype plugin indent on

这个命令开启了Vim的三种智能:

1. 自动识别文件类型

你开始编辑一个文件时,Vim就会自动识别它是何种类型的文

件。比如说你打开了"main.c", Vim就会根据它的".c"扩展名知

道它是一个类型为"c"的C语言源程序文件。当你编辑一个文件

其第一行是"#!/bin/sh"时,Vim又可以据此判断它是一个类型

为"sh"的shell脚本文件。

2. 用文件类型plugin脚本

不同的文件类型需要搭配适合于它的编辑选项。比如说你在编辑一

个"c"文件,那么打开'cindent'就非常有用。这些对某种文件类型

来说最常用的选项可以放在一个Vim中叫文件类型plugin的脚本里。

你还可以加上你自己写的

3. 使用缩进定义文件

编 辑 程 序 的 时 候 , 语 句 的 缩 进 可 以 让 它 自 动 完 成 。Vim为

众 多 不 同 的 文 件 类 型 提 供 了 相 应 的 缩 进 方 案

 

 

 

添加一个plugin

Vim的功能可以通过向它添加plugin得以扩展。所谓plugin不过是一个Vim会自动载入执行的脚本。把一个脚本放入你的plugin目录就可以了,非常容易。

plugin基本上分为两类:

全局的:用于所有文件

专用于某类型文件的:只用于特定类型的一类文件

下面先说全局的plugin,接下来是专用于某种文件类型的plugin

 

你启动Vim时,它会自动载入一些全局的plugin,你不必额外地

做任何事情。这些plugin 定义了使用率很高的一些功能,但它们是

以一个Vim脚本的形式而不是通过内建于Vim可执行文件内来提供。

 

得到一个全局的plugin文件

1. 有一些随Vim一起发行。位于目录$VIMRUNTIME/macros以及它的子目

  1. 从网上下载,

plugin的位置

系统 相应的plugin目录

Unix ~/.vim/plugin/

PC and OS/2   $HOME/vimfiles/plugin or $VIM/vimfiles/plugin

Mac OS X ~/.vim/plugin/

除 了 直 接 把plugins放 入plugin/目 录 之 外 , 可 能 更 好 的 选 择

是 把 它 们 分 门 别 类 归 置 到plugin/的 下 一 级 子 目 录 中 。 比 如

象" /.vim/plugin/perl/*.vim"这样来安置所有跟Perl 相关的plugins

 

Vim的发布版中已经包括了针对不同文件类型的相应plugin,你可以

使用下面命令开启对它的应用:

:filetype plugin on

编辑多个文件

目前为止我们使用Vim的方式还是为每一个要编辑的文件运行一

次Vim。这是最简单的用法。命令

:edit foo.txt

 

如果你想编辑另一个文件,但又不想保存当前文件中的改动 1 ,你可

以使它变为一个隐藏的缓冲区:

:hide edit foo.txt

查看buffer?
:ls,
以为buffer的基本单位是单个文件,所以ctrl+o/i 所看到的位置其实是在buffer中存储的
列表中%代表当前缓冲区
另外也可以使用:bn,:bp来切换下一个,上一个

 

启动VIM时编辑多个文件:

vim one.c two.c three.c

 

该命令启动Vim并告诉它你要编辑3个文件。Vim将在启动后只显示第

一个文件。完成该文件的编辑后,可以以命令:

:next

但多数情况下人们还是要保存工作成果并继续下一个文件的编辑。有

一个命令合并了这个过程:

:wnext

 

查看整个列表中就有哪些文件,使用命令:

:args

要回到前一个文件:

:previous

要移到最后一个文件::last

到第一个:first

 

:args five.c six.c seven.h  编辑另外一个文件列表

要在两个文件间快速切换,使用CTRL-^

 

:set backup 备份文件

生成的备份文件名将是原文件名后面附加一个~。如果原文件

是data.txt, 则生成的备份文件是data.txt~。

:set backupext=.bak自定义备份文件后缀

 

:set patchmode=.orig让VIM保存文件原始版本

 

 

 

 

在文件间复制粘贴

 

将光标移到某处文件并按

下"v"。该命令将开始Visual模式。现在把光标移到要复制文件的末尾按

下"y"

现在开始编辑你希望把复制的内容放入其中的文件。把光标置于你希

望复制内容的地方,用"p"把此前复制的内容粘贴到这里。

 

 

 

使用寄存器

一 个 寄 存 器 只 是Vim用 来 存 放 文 本 的 地 方 。 这 里 我 们 只 用

从a到z这26个字母作为寄存器的名字(稍后你会发现还有其它可用的寄

存器)。来把一个句子复制到名为f的寄存器中

 

把3个整行的内

容放到寄存器l中  -----"l3Y

l3p 将寄存器i的内容放在光标后,可以再任意文件标签中粘贴复制

删除了一个word并把它保存在名为w的寄存器 "wdaw

 

 

向文件中追加内容

:write >> logfile

 

 

查看文件

view file

 

 

 

 

CTRL-W w命令可以切换当前活动窗口

:only  关闭除当前窗口外的所有其它窗口

:split two.c 为另一个文件分隔出一个窗口 :vsplit

:new 打开一个新窗口 :vnew

:3split alpha.c 打开了一个高度为3行的新窗口

CTRL-W + 增加高度 4 CTRL-W +

CTRL-W - 减小高度  

CTRL-W h 到左边的窗口

CTRL-W j 到下面的窗口

CTRL-W k 到上面的窗口

CTRL-W l 到右边的窗口

CTRL-W t 到顶部窗口

CTRL-W b 到底部窗口

 

以上的hjkltb 换成大写就是移动当前窗口位置

 

:qall  针对所有窗口操作的命令 关闭所有

:wall 保存所有 wqall

vim -o one.txt two.txt three.txt 为每一个文件打开一个窗口

 

vimdiff main.c~ main.c查看两个文件不同 不是在vim中

 

:tab split打开新页签

:gt 切换页签

 

 

给文本设置对其方式

1,5center 40  1-5行居中对齐 行宽40 ,也可以用left right

 

设置缩进

1,5 4>>  1-5行 4个空格位缩进行

 

:read patch 将文件patch的内容读到当前文件

:.write >> collection 想目标文件追加

:.,$write! tempo 从当前行. 到尾行$的内容覆盖到tempo

 

:read !ls读取命令输入

 

CTRL-L重绘屏幕

 

灾难恢复

vim -r help.txt

 

如果你在编辑一个没有指定文件名的缓冲区时死机了,可以通过一个

空字符串作为要恢复的"文件名":

vim -r ""

确保你所在的目录是正确的,否则Vim会找不到正确的交换文件

 

挂起与恢复

象其它的Unix程序一样Vim也可以用CTRL-Z来挂起。该命令停止Vim的

执行使你回到启动Vim的shell中去。你可以做些别的事。完了再用"fg"命

令回到Vim.

 

'0

每次退出Vim时它都会创建一个特殊的标记。最后的一个是'0。上次

的'0现在会变成'1,原来的'1成了'2,如此类推,原来的'9就丢掉了。

 

:edit . 打开文件浏览器

在"../"上按下<Enter>则会上溯到当

前目录的父目录。"-"命令也是殊途同归

 

<Enter> 在当前窗口中打开文件

o 打开一个水平分隔的窗口显示文件

v 打开一个垂直分隔的窗口显示文件

t 在一个新标签页中打开文件

c 将当前目录切换到浏览器正打开的目录。

R 更改当前光标下的文件,Vim会提示你输入一个新的文件名

D 删除当前光标下的文件名。 Vim也会提示你进行确认

 

:Explore [目录名] 浏览指定的目录或当前目录

:Explore ftp://somehost/path/to/dir/

:e scp://somehost/path/to/dir/

 

:cd VeryLongFileName cd切换工作目录

 

lcd"命令。所有的窗口都共享同一个工作

目录。一旦在其中一个窗口中用":cd"命令改变了工作目录,其它窗口中

的工作目录也将随之改变。

对一个窗口使用":lcd"后它的工作目录会被记录下来

 

假设你想知道头文件"inits.h"中的内容。只需将光标置于该文件上

然后键入:gf

Vim就会找到并编辑该文件。

如果这个文件并不在工作目录下呢?此时Vim会使用在'path'选项中

定义的目录去查找它。该选项的内容是一个以逗号分隔的目录名列表。

:find inits.h  查找文件

 

 

:hide edit two.txt 隐藏当前缓冲区打开新文件

:ls  列出所有缓冲区

:buffer 2 编辑缓冲区2

自定义文件类型

创建你自己的运行时目录。在Unix系统上通常是"~/.vim"。在该

目录下创建名为"ftplugin" 1 的目录:

mkdir ~/.vim

mkdir ~/.vim/ftplugin

如果你不用Unix,看一看'runtimepath'选项的设置,找出Vim会在哪

里寻找"ftplugin"目录

 

2。创建文件"~/.vim/ftplugin/c.vim"

如果这个目录下已经有了一个同名文件。你就要停下来仔细检查一下

两个文件是否会引起冲突,如果没问题,你可以把要加入的新文件更名一

下:

mv thefile ~/.vim/ftplugin/stuff_too.vim

划线用于分隔用于标识文件类型的部分和其它部分,下划线其后的

部分可以自由命名。如果你用"otherstuff.vim"这样的名字,Vim可不能

识别它,它只会在文件类型是"otherstuff"时被载入。

 

文件类型plugin的文件名一般形式是:

List

ftplugin/<filetype>.vim

ftplugin/<filetype>_<name>.vim

ftplugin/<filetype>/<name>.vim

最新文章

  1. Cardboard开发教程:使用Unity制作Cardboard全景图片浏览器
  2. Html5上传后有所见图片效果前端代码实现
  3. ORM实现原理
  4. C++ compile issue
  5. ubuntu修改源列表sourcelist的方法
  6. 怎样强制QQ聊天
  7. SQL语句方法语法总结(二)
  8. extjs采用fileupload进行文件上传后台实现
  9. Ruby多字节字符的设计
  10. Web堡垒机
  11. JetBrains PhpStorm 使用
  12. 在iOS上增加手势锁屏、解锁功能
  13. uva297(quadtree)
  14. 使用php实现网站验证码功能【博主推荐】
  15. 两点补充——CSS3新属性以及弹性布局
  16. Java 内存模型- Java Memory Model
  17. NHibernate3剖析:Configuration篇之SessionFactory lambda配置
  18. Oracle中的优化问题
  19. go 笔记
  20. 试图加载格式不正确的程序 .net

热门文章

  1. amoeba-mysql
  2. 面试官,不要再问我“Java虚拟机类加载机制”了
  3. MongoDB-系统时钟跳变引发的风波
  4. Ubuntu 14.04 sudo免密码的方法| sudo不需要密码
  5. 设计模式(九)Bridge模式
  6. python *args,**kwargs参数
  7. SpringCloud之链路追踪整合Sleuth(十三)
  8. 百度地图Javascript API 调用示例
  9. Mui 微信支付、支付宝支付
  10. 使用Typescript重构axios(二十九)——添加baseURL