vim简单的介绍

  Vim 编辑器是一个模式编辑器 。 这意味着在不同状态下编辑器有不同的行为模式 。 两个基本的模式是 Normal 模式和 Insert 模式 ,还有可视模式。 在 Normal 模式下你键入的每一个字符都被视为一个命令 。 而在 Insert 模式下键入的字符都作为实际要输入的文本内容 。可视模式为我们提供了极为友好的选取文本范围,以高亮显示。

  刚启动时 Vim 工作于 Normal 模式 。 要进入 Insert 模式你需要使用"i"命令(i 意为 Insert). 接下来就可以直接输入了 。

  最后按下键退出 Insert模式回到 Normal 模式 。 要进入可视模式你按“v”就可以了,接下来就会进入可视模式。

模式间的转换

命令 说明
i 在光标之前插入
a 在光标之后插入
I 在光标所在行的行首插入
A 在光标所在行的行末插入
o 在光标所在的行的上面插入一行
O 在光标所在的行的下面插入一行
s 删除光标后的一个字符,然后进入插入模式
S 删除光标所在的行,然后进入插入模式
v 进入可视化模式

退出vim编辑器

欲退出vim编辑器,请先回到正常模式,在输入: 回到命令模式,此时请输入以下命令∶

  • :q   正常不保存退出
  • :q!  强制不保存退出
  • :wq  正常保存退出

:如果你在放弃所有修改后还想以该文件的初始内容作为开始继续编

辑,还可以用":e!"命令放弃所有修改并重新载入该文件的原始内容 。

工作模式显示设置

要知道你现在所处的工作模式是什么,打开显示模式的开关:

:set showmode

你会看到按下冒号键之后当前光标跑到窗口的最后一行去了 。 那是使用冒号命令的地方(顾名思义,冒号命令就是总是以冒号打头的命令). 最后按下回车键结束整个命令(所有的冒号命令都以这种方式表明命令的结束).

现在就会在窗口底部显示模式的名称

--INSERT--这表明你目前处于 Insert 模式 。

--VISUAL-- 这表明你目前处于可视模式。

注:Normal 模式并不会显示--NORMAL--, 作为默认的工作模式它不显示任何字串

移动光标

移动光标有两种方式

第一种:常用的用箭头移动

第二种:用vim提供的方式:

 在 Normal 模式后,你就可以用下面的命令来移动光标:
h 左
j 下
k 上
l 右

即:

删除字符

格式 d+位移命令

命令 说明
x 删除一个字符
nx 删除n个字符
dw 命令可以删除一个 word
dnw 命令可以删除n个 word
dd 删除所在行
ndd 删除从本行起第n行(n可以为负数)
d$ 命令就是删除自当前光标到行尾的内容
:j 删除本行的换行符
:nj 删除第n行的换行符,当为n负数时删除从本行起的前n行的换行符

注: 很多命令都可以接受一个数字作为重复执行同一命令的次数 。

比如在本行添加10个你好!,就可以这样写 10a你好!

接下来就是讲一些比较常用的操作命令

常用命令

移动

  • 以 Word 为单位的光标移动

  • w  命令还是会将光标移动到下一个 word 的首字符上

  • b  命令则将光标向后移动到前一个word 的首字符上

  • e   命 令 会 将 光 标 移 动 到 下 一 个 word 的 最 后 一 个 字符

  • ge   将光标移动到前一个 word 的最后一个字符上

  • 将光标移到行首或行尾

  • ^  命令将光标移动到当前行的第一个非空白字符上

       注:命令"^"前加上一个计数并没有任何效果

  • $  命令将光标移动到当前行行尾

  • n$  则会移动到下n行的行尾

  • 0  命令将光标移动到当前行行首

  • 将光标移动到指定的字符上

  • fx  在当前行上查找下一个字符 x. 提示:"f"意为"find".汉字的空格不被视为空白字符

  • nfx  会把光标定位查找第n个字符 x

       如:命令"3fa"会把光标定位于"ababaa"的第三个"a"上

  • Fx  命令向左方向搜索

  • tx  命令形同"fx"命令,只不过它不是把光标停留在被搜索字符上,而是在它之前的一个字符上

  • Tx  命令向左方向搜索

  注:这 4 个命令都可以用";"来重复 。 以","也是重复同样的命令,但是方向与原命令的方向相反 2 。 无论如何,这 4 个命令都不会使光标跑到其它行上去 。 即使当前的句子还没有结束

  • 将光标移动到匹配的括号上

  • **% **  它跳转到与当前光标下的括号相匹配的那一个括号上去

将光标移动到指定的行上

  • nG  就会把光标置于第 n 行上
  • G   会把光标定位到最后一行
  • gg  命令是跳转到第一行的快捷的方法
  • "H"意为 Home, "M"为 Middle, "L"为 Last.分别跳到首行,中间,末行

滚屏

  • CTRL-U  命令会使文本向下滚动半屏
  • CTRL-D  命令将窗口向下移动半屏,所以相当于文本向上滚动了半屏
  • CTRL-E  向上滚动一行
  • CTRL-Y  向下滚动一行
  • CTRL-F  向前滚动一整屏(实际上是整屏去两行)
  • CTRL-B  向后滚动一整屏
  • zz    把当前行置为屏幕正中央
  • zt    命令会把当前行置于屏幕顶端
  • zb    则把当前行置于屏幕底端

搜索

  • /string   命令可用于搜索一个字符串,这里也可以使用正则表达式
  • ?string  命令与"/"的工作相同,只是搜索方向相反

      注: 字符.*[]^%/?~$ 有特殊意义,如果你要找的东西包括这些内容,要在这些字符前面放置一个反斜杠 。

  要查找上次查找的字符串的下一个位置 。 使用"n"命令如果你知道你要找的确切位置是目标字符串的第几次出现,还可以在"n"之前放置一个命令计数 。 "3n"会去查找目标字符串的第 3 次出现 。"N"命令会重复前一次查找,但是与最初用"/"或"?"指定的搜索方向相

反 。

  • 忽略大小写

      通常情况下你要准确地键入你要查找的东西 。 如果你并不关心目标字

    符中字母的大小写,可以通过设置'ignorecase'选项
:set ignorecase

:set noignorecase
  • 查找整个 WORD

    如果你用"/the"来查找 Vim 也会匹配到"there". 要查找作为独立单

    词的"the"使用如下命令:
/the\>
  • 高亮显示搜索结果
:set hlsearch

:set nohlsearch
  • 使用标记

    当你用"G"命令从一个地方跳转到另一个地方时,Vim 会记得你起跳的位置 。 这个位置在 Vim 中是一个标记

  • ``”   命令可以在两点之间来回跳转

  • CTRL-O  命令是跳转到你更早些时间停置光标的位置(提示:O 意为 older)

  • CTRL-I   则是跳回到后来停置光标的更新的位置,与按下键一样

  • :jumps   命令会列出关于你曾经跳转过的位置的列表 。 你最后一个跳转的位置被特别以一个">"号标记

  • 'mark  (单引号,或者叫呼应单引号)会使你跳转到 mark 所在行的行首

      Vim 允许你在文本中定义你自己的标记 。 命令"ma"将当前光标下的位

    置名之为标记"a"。 从 a 到 z 一共可以使用 26 个自定义的标记 。 定义后的标记在屏幕上也看不出来 。 不过 Vim 在内部记录了它们所代表的位置 。

      要跳转到一个你定义过的标记,使用命令`{mark}, {mark}就是你定

    义的标记的名字 。

    标记当前选中行标记为a,命令为  ma

    跳转到a标记处 命令为: 'a

  •  :marks  查看关于标记的列表

文本的改变

删除

格式 d+位移命令

命令 说明
x 代表 dl(删除当前光标下的字符)
X 代表 dh(删除当前光标左边的字符)
D 代表 d$(删除到行尾的内容)
nx 删除n个字符
dw 命令可以删除一个 word
dnw 命令可以删除n个 word
dd 删除所在行
ndd 删除从本行起第n行(n可以为负数)
d$ 命令就是删除自当前光标到行尾的内容
db 删除自当前光标至前一个 word 的开始
diw 删除当前光标所在的 word(不包括空白字符)
daw 删除当前光标所在的 word(包括空白字符)
dG 删除当前行至文件尾的内容
dgg 删除当前行至文件头的内容
:j 删除本行的换行符
:nj 删除第n行的换行符,当为n负数时删除从本行起的前n行的换行符

修改

命令 说明
c 修改操作符
cw 改变到一直到 word 结尾的内容
ce 改变到一直到 word 结尾的内容和cw一样
cc 命令可以改变整行,不过仍保持原来的缩进
c$ 改变当前光标到行尾的内容
s 代表 cl(修改一个字符)
S 代表 cc(修改一整行)

注:**c命令的行为与"d"命令类似,不过在命令执行后会进入 Insert 模式 **

重复改动

  "."命令是 Vim 中一个简单而强大的命令 。 它会重复上一次做出的改动 。

  假设你在编辑一个 HTML 文件,想删除其中所有的<B>标签 。 你把

光标置于<B>的<字符上然后命令"df>". 然后到</B>的<上用"."命令做同样的事 。

  "."命令会重复你做出的所有修改,除了"u"命令CTRL-R和以冒号开头的命令 。

  "."需要在 Normal 模式下执行,它重复的是命令,而不是被改动的内容

Visual 模式

命令 说明
v 进入可视模式,以字符为单位选择。
V 进入可视模式,以行为单位选择。
CTRL-V 进入列块可视模式。
gv 启动可视模式,重新选择上一次的选择区和相同模式。
在可视模式下,该命令将交换当前和上一次选择区。
在可视模式下使用 "p" 或 "P" 后,本命令选择被粘贴的文本。
<LeftMouse> 设置当前光标位置。
如果处在可视模式,则退出可视模式。此功能只有在 'mouse' 选项包含 'n' 或 'a' 才可用。
如果点击位置与屏幕最后一行的距离在 'so' 选项设置的范围之内,屏幕文本将会上滚。
如果点击位置与屏幕第一行的距离在 'so' 选项设置的范围之内,屏幕文本将会下滚。
<RightMouse> 如果当前不是可视模式,则进入可视模式。
光标位置和鼠标点击位置之间的文本将被高亮显示。
如果当前已经处于可视模式,文本高亮选择区的起点或终点之一将被置为鼠标点击的位置。
起点或终点的选择取决于谁离点击位置更近。此功能只有在 'mouse' 选项包含 'n' 或 'a' 时才可用。
<LeftRelease> 如果 的位置与 不同,那么它的作用等同于 。
此功能只有在 'mouse' 选项包含 'n' 或 'a' 时才可用。
<Esc> 可视模式下: 停止可视模式。
CTRL-C 可视模式下: 停止可视模式。
如果插入模式等待中 (模式信息显示为 "-- (插入) 可视 --"),插入模式同时被停止。

在可视界面的命令

命令 说明
o 跳到高亮文本的另一端
即当前光标位置变成高亮文本的起点,光标移动到高亮文本的另一端。高亮区域保持不变。
O 跳到高亮文本的另一端。
同 "o" 命令相似,但是在列块模式下,光标移动到水平方向的另一个角。
如果这个角上的字符占据了多个屏幕位置 (例如一个 <Tab>),那么高亮的文本区域会被改变。
~ 切换大小写
d 删除
c 修改
y 复制
> 右移
< 左移
! 通过外部命令过滤
= 通过 'equalprg' 选项的命令过滤
gq 按照 'textwidth' 指定的宽度排版行

移动文本

  你以"d"或"x"这样的命令删除文本时,被删除的内容还是被保存了起

来 。 你还可以用 p 命令把它取回来

  "P"命令与"p"一样取回被删除的内容,不过它把被取回的内容置于光标之前 。 对于以"dd"删除的整行内容,"P"会把它置于当前行的上一行 。

  np就可以把被删除行的 n 份副本放到当前位置

复制文本

  要把文本内容从一处复制到另一处,你可以先删除它,然后马上用"u"命令恢复删除 。 再用"p"把它放到你想要的地方去 。

命令 说明
yw 复制的内容中包括了 word 之后的空白字符 。如果你不想要它们,那就用"ye"
ye 复制的内容中不包括了 word 之后的空白字符
yy 命令复制一整行
y$ 复制当前光标至行尾的命令是.

剪贴板

  • "*yy  把一行内容复制到剪贴板
  • "*p  把剪贴板的内容复制出来

文本对象

  • daw  删除这个单词(Delete A Word)
  • cis  修改一整个句子(Inner Sentence)
  • das  删除一个句子,把它后面的空白也给删除
对象 说明
aw 一个单词 (包括空格)
iw 内含单词
aW 一个字串 (包括空格)
iW 内含字串
as 一个句子 (包括空格)
is 内含句子
ap 一个段落 (包括空格
ip 内含段落
ab 一个 () 块 (包括小括号)
ib 内含 () 块
aB 一个 {} 块 (包括大括号)
iB 内含 {} 块
at 一个 块 (包含 tag)
it 内含 块
a< 一个 <> 块 (包括 <>)<
i< 内含 <> 块<
a[ 一个 [] 块 (包括 [])[
i[ 内含 [] 块[
a" 一个双引号字符串 (包括引号)
i" 内含双引号字符串
a' 一个单引号字符串 (包括引号)
i' 内含单引号字符串
a` 一个反引号字符串 (包括反引号)
i` 内含反引号字符串

替换模式

   "R"命令会让 Vim 进入 replace 模式 。 在此模式下,每个键入的字符都

会替换掉当前光标下的字符 。 直到你键入结束该模式

  注:replace 模式下的例外是按下回车键并不会把当前字符替换为回车,而是插入一个回车

vim编辑器介绍及其常用命令的更多相关文章

  1. 【Linux 操作系统】vim编辑器配置及常用命令

    最近工作不安分, 没有了刚入行时候的锐气, 不知道什么时候开始懈怠起来, 周末在电脑旁边看新闻, 搞笑图片, 追美剧, 一坐就是一天, 很是空虚. 我需要摆脱这种状态, 正好想学习一下安卓底层, An ...

  2. 安卓程序代写 网上程序代写[原]vim编辑器配置及常用命令

    最近工作不安分, 没有了刚入行时候的锐气, 不知道什么时候开始懈怠起来, 周末在电脑旁边看新闻, 搞笑图片, 追美剧, 一坐就是一天, 很是空虚. 我需要摆脱这种状态, 正好想学习一下安卓底层, An ...

  3. vim编辑器配置及常用命令

    最近工作不安分, 没有了刚入行时候的锐气, 不知道什么时候开始懈怠起来, 周末在电脑旁边看新闻, 搞笑图片, 追美剧, 一坐就是一天, 很是空虚. 我需要摆脱这种状态, 正好想学习一下安卓底层, An ...

  4. Linux的简单介绍和常用命令的介绍

    Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...

  5. redis 介绍和常用命令

    redis 介绍和常用命令 redis简介 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键 ...

  6. webpack 介绍 & 安装 & 常用命令

    webpack 介绍 & 安装 & 常用命令 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 webpa ...

  7. shell编辑器vi的常用命令

    一:翻页 ctrl+u向上翻半页 ctrl+f向上翻一页 ctrl+d 向下翻半页 ctrl+b 向下翻一页 二:移动光标指令 0: 光标移至当前行首 $: 光标移至当前行尾 三:常用插入.删除指令 ...

  8. Git笔记:Git介绍和常用命令汇总

    Git 是一个开源的分布式版本控制系统,与 CVS, Subversion 等不同,它采用了分布式版本库的方式,不需要服务器端软件支持. 工作流程 Git 的工作流程大致如下: 克隆 Git 资源作为 ...

  9. vim编辑器介绍

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...

随机推荐

  1. 1.ElasticSearch介绍及基本概念

    一.ElasticSearch介绍 一个采用RESTful API标准的高扩展性的和高可用性的实时性分析的全文搜索工具 基于Lucene[开源的搜索引擎框架]构建 ElasticSearch是一个面向 ...

  2. NSOperation与GCD的如何选择?

    iOS开发的多线程实现方式,大概包括C的原始方式.NSThread方式.GCD.NSOperation的方式. 其中用的最多的应该是GCD和NSOperation的方式,很多第三方库都是使用了这两种方 ...

  3. 【转载】jQuery全屏滚动插件fullPage.js

    文章转载自dowebok http://www.dowebok.com/ 原文链接:http://www.dowebok.com/77.html 简介 如今我们经常能见到全屏网站,尤其是国外网站.这些 ...

  4. Pycharm小技巧--使用正则进行查找和批量替换

    分享一个Pycharm中使用正则的分组匹配来进行批量替换的小技巧 例如,我现在需要把HTML文件中的静态文件得到路径全部替换为django模板引用路径的格式 修改为类似这样的格式: {% static ...

  5. SpringBoot01 InteliJ IDEA安装、Maven配置、创建SpringBoot项目、属性配置、多环境配置

    1 InteliJ IDEA 安装 下载地址:点击前往 注意:需要下载专业版本的,注册码在网上随便搜一个就行啦 2 MAVEN工具的安装 2.1 获取安装包 下载地址:点击前往 2.2 安装过程 到官 ...

  6. win10 uwp 判断文件存在

    本文主要翻译http://stackoverflow.com/questions/37119464/uwp-check-if-file-exists/37152526#37152526 我们有多种方法 ...

  7. 解决Ubuntu中phpmyadmin对数据上传上限2M

    本文部分参考自:http://www.myhack58.com/Article/sort099/sort0102/2011/29396.htm 原文有少量错误或者过时的(相对于ubuntu15来说)内 ...

  8. 简单的计算100000以内的质数(JAVA实现)

    public class TestPrimeNumber(int i){ public static void main(String[] args) { long start = System.cu ...

  9. Leetcode题解(25)

    77. Combinations 题目 分析:求给定数字n,k的组合数,方法是采用深度搜索算法,代码如下(copy网上代码) class Solution { public: void dfs77(v ...

  10. Linux中gcc和g++

    今天在Linux上编写一个小的C++程序运行,需要用到iostream中cout,一开始创建一个hello.c的文件编写如下代码: #include<stdio.h> #include&l ...