"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

vim用户手册笔记常用操作整理的更多相关文章

  1. vim程序编辑器---常用操作整理

    vim程序编辑器---常用操作整理 移动光标方法 o 在光标行的下一行,进入编辑模式 $ 移动到光标这行,最末尾的地方 G(大写) 移动到文件最末行 :set  nu 文件显示行数 :set  non ...

  2. javascript中字符串常用操作整理

    javascript中字符串常用操作整理 字符串的操作在js中非常频繁,也非常重要.以往看完书之后都能记得非常清楚,但稍微隔一段时间不用,便会忘得差不多,记性不好是硬伤啊...今天就对字符串的一些常用 ...

  3. vim编辑器——常用操作整理

    注意:以下的操作都是在命令状态下进行的,不要进入插入状态了.参考这里 1.删除 dd       删除一行 ndd    删除以当前行开始的n行dw    删除以当前字符开始的一个字符ndw   删除 ...

  4. vim常用操作整理

    一.删除操作 :%s/r//g 删除DOS方式的回车^M :%s= *$== 删除行尾空白 :%s/^(.*)n1/1$/ 删除重复行 :%s/^.pdf/new.pdf/ 只是删除第一个pdf :% ...

  5. Vim 模式及常用命令整理

    VIM 命令     以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令.   vim的模式 基本上可以分为3种模式,分别是命令模式(command mode).插入模 ...

  6. vim技巧5 常用操作

    vim:set number:set nonumbern 移动命令键8l 向右移动八个字符3j 向下移动三行3G:移动到第三行行首10$:下移到10行,并定位到行尾:n1,n2s/word1/word ...

  7. .Net Standard HttpClient封装Htt请求常用操作整理

    一.常用Http操作 1.Get请求,有参数,无参数 2.Post 请求,有参数,无参数 3.文件简单下载 修改NetHelper中Post请求方法Bug:请求编码默认UTF8,字符串内存流读取后这是 ...

  8. Mysql数据库常用操作整理

    0.说明 MySQL数据库是一个十分轻便的数据库管理系统,相比大型的数据库管理系统如Oracle,MySQL更拥有轻便.灵活.开发速度快的特色,更适用于中小型数据的存储与架构,被数以万计的网站采用.从 ...

  9. Javascript 字符串(二)常用操作整理

    一.js获取字符串的字节数 这个好使--- function getBytesLength(str) { // 在GBK编码里,除了ASCII字符,其它都占两个字符宽 return str.repla ...

随机推荐

  1. 百万年薪python之路 -- MySQL数据库之 MySQL行(记录)的操作(一)

    MySQL的行(记录)的操作(一) 1. 增(insert) insert into 表名 value((字段1,字段2...); # 只能增加一行记录 insert into 表名 values(字 ...

  2. LeetCode 1: single-number

    Given an array of integers, every element appears twice except for one. Find that single one. soluti ...

  3. <编译原理 - 函数绘图语言解释器(1)词法分析器 - python>

    <编译原理 - 函数绘图语言解释器(1)词法分析器 - python> 背景 编译原理上机实现一个对函数绘图语言的解释器 - 用除C外的不同种语言实现 解释器分为三个实现块: 词法分析器: ...

  4. zepto源码分析·整体架构

    代码数量 1.2.0版本代码量为1650行,去掉注释大概1500左右 代码模块 默认版本只包括核心模块,事件模块,ajax模块,form模块和ie模块,其它模块需要自行拓展加入,其中form模块只包含 ...

  5. numpy+pandas+ matplotlib模块(day18)

    目录 numpy模块 二维数组 numpy数组的属性 T 数组的装置 dtype 数组元素的数据类型 size 数组元素的个数 ndim 数组的维数 shape数组的维度大小 astype 类型转换 ...

  6. Redux的核心概念,实现代码与应用示例

    Redux是一种JavaScript的状态管理容器,是一个独立的状态管理库,可配合其它框架使用,比如React.引入Redux主要为了使JavaScript中数据管理的方便,易追踪,避免在大型的Jav ...

  7. js奥义:原型与原型链(2)

    回顾:上一篇讲了原型对象与prototype和__proto__(传送门 )三者之间的关系 三:constructor constructor [kənˈstrʌktə(r)] :构造器,  这是子类 ...

  8. 时针.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. MySql逻辑结构简介

    结构示意图: 如上图,可把数据库的结构分成四层,见下图及文字说明  一.连接层提供客户端和连接服务,包含本地Sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信,主要完成一些类似于 ...

  10. 2018.8.9 python中的动态传参与命名空间

    主要内容: 1.函数参数 ----动态传参 2.名称空间与作用域 3.函数的嵌套 4.global,nonlocal关键字 一.函数参数 ------动态传参 形参的第三种:动态传参 动态传参分为两种 ...