跟着Vimtutor学习Vim

Lesson 1

1.1 移动光标

  • 在Vim中移动光标,分别使用h、j、k、l键代表左、下、上、右方向。

1.2 退出VIM

:q! <ENTER>			退出Vim(丢弃内容)

上述命令可以退出VIM。

注:必须在Normal mode下使用。(可以按下键来确保进入了Normal mode)

1.3 文本编辑 - 删除

在Normal mode中,可以键入

x					删除光标指定字符

来删除单个字符。

1.4 文本编辑 - 插入

在Normal mode中,键入

i					插入文本到光标指定行

可以在指定位置插入文本,完成后键入即可回到nm中。

1.5 文本编辑 - APPENDING

在nm中,键入

A					追加文本到光标指定行

可以实现在选定的一行中的末尾进行追加(插入)文本操作。

注意是大写的A。

1.6 编辑一个文件

使用VIM创建/打开一个文件, filename为定义的文件名

vim filename <ENTER>		打开/创建文件

使用VIM保存一个文件,在编辑完成后进入nm,然后键入:

:wq <ENTER>					保存文件

Lesson 2

2.1 删除命令

进入nm,输入下面命令即可删除一个单词(word)(包括空格)

dw					删除光标后对应的单词

2.2 更多的删除命令

进入nm,下面命令可以删除光标后的指定行的文本

d$					删除光标后指定行的文本

2.3 对于运算符及有关操作

在VIM中,许多命令都是一个operator加上一些motion完成的,如:

可以看出对于删除操作而言,d后面跟不同的motions会有不同的操作效果。其中:

w - 下一个词的词首,但不包括第一个首字母。

e - 当前词的词尾,包括最后一个字母。

$ - 最后一行,包括最后一个字母。

2.4 在Motion中用数字

对于motion可以插入数字,进而产生不同的效果。

2w					将光标向前移动两个词
3e 将光标向前移动三个词直到第三个词的末尾
0 将光标移动到指定行的头部

2.5 在删除中使用数字

通常的形式为:

d	number	motion

例如对于 d2w 其意义就是删除光标后的两个单词。

2.6 文本行上的操作

输入下面命令可以删除整行文本

dd					删除整行文本

当然也可以删除多行,只需要指明删除的行数即可。如2dd就代表删除光标所指的行及下一个,共两行。

2.7 撤回操作

在VIM中,u可以实现撤回上次的操作,U可以实现撤回整行修改的操作。

u					撤回上次操作
U 撤回整行的修改操作
CTRL-U 撤回“撤回的消息”

Lesson 3

3.1 Put操作

​ 在VIM中,使用dd命令可以实现删除光标指定行的功能,但其所做的事情并不只是简单的将指定行删除,它在删除了行内容之后还将其放入了一个Vim寄存器中,因此我们可以使用如下命令将内容再Put(粘贴)到指定位置。

p					Put命令,相当于粘贴功能

3.2 Replace操作

rx操作实现更改指定的单个字符为x。

rx		r代表replace,x代表替换字符(同来替换光标指定字符)

3.3 更改操作

ce操作可以实现更改一个单词指定位置之后的所有字符。

ce			光标指定单词的位置,ce可以更改光标后所有字符

3.4 关于更改的更多操作

相比于删除操作,更改操作和其使用方法差不多,如下:

c	[number]	motion

c代表更改操作,number代表要更改的数量,motion即相关motion。

如:对于d2w,就是更改光标指定后面的两个单词。

d$,就是更改光标指定后的文本(一行)。

Lesson 4

4.1 光标位置和文件状态

CTRL-G				显示出文件位置和当前光标所在行
G 移动光标到文件底部位置
gg 移动光标到文件头部位置
[number] G 移动光标到指定行(number就是行数)

4.2 搜索命令

/	[target]		/代表搜索,target代表需要搜索的内容

​ 对于搜索来说,/是以当前位置向后进行检索,如果找不到就再从头开始找;而?与其相反,是向前检索。

为了方便检索,Vim还提供了下面两个快捷方式:

n					按既定方向搜索指定内容
N 按既定方向的反方向搜索指定内容

另外,CTRL-O可以回到上次光标的行位置,CTRL-I与其相反。

4.3 括号匹配搜索

%					寻找匹配的圆括号/花括号/中括号等

4.4 Substitute替换命令

:s/old/new		<ENTER>		s命令将old替换为new
:s/old/new/g <ENTER> 全局替换

​ 上面的命令代表在指定行中,将old的值替换为new,但只能替换第一次出现的old。如想替换指定行所有的old,则需要在最后加一个/g代表代换globally。

:#,#s/old/new/g			表示在#到#行之间的文本进行替换
:%s/old/new/g 表示全文进行替换
:%s/old/new/gc 表示全文进行替换,但每次替换有请求

Lesson 5

5.1 在Vim中执行外部命令

:! [external-command]		在执行shell中的命令

例如:在Vim中键入 :!ls 可以实现得到当前目录的文件信息。

5.2 在Vim中写入文件

:w	FILENAME			将内容写入名为FILENAME的文件中
:!rm FILENAME 使用外部命令删除名为FILENAME的文件

5.3 选择文本写入

v motion :w FILENAME	使用v选择文本然后写入文件中

​ 在Vim中使用v选择相应文本,选择完成后键入:,之后会出现一个'<,'>'的字符出现在底部,之后键入w FILENAME即可完成操作。

5.4 检索并合并文件

:r FILENAME		将FILENAME文件内容读取并插入到光标所在位置后

​ 此外, :r 还可以实现读取控制台的输出内容。如:

​ :r !ls 可以实现将当前路径下的文本信息(ls后的内容)插入到光标所在位置之后。

Lesson 6

6.1 Open命令

o				o命令可以在光标指定行下创建新的一行
O O命令可以在光标指定行上创建新的一行

这两个命令其不同之处仅仅在于方向,相同之处在于都相当于另开一行,属于插入操作。

6.2 Append命令

a				a命令指定在光标所在位置插入文本

​ 与之前的 A 命令相似的是这两个都是相同的插入模式,只是插入的位置不同罢了。

6.3 Replace的不同方式

R				R命令可以替换光标后面的内容

​ 与之前的 r 命令相似的是两者都是对文本进行替换,不过 r 是对字符进行替换,此命令是替换任意字符。

注:Replace mode is like Insert mode, but every typed character deletes an existing character.

6.4 复制和粘贴

y				y命令可以复制选定的文本
p p命令可以粘贴选定的文本

​ 如果想要实现粘贴文本,则需要先使用 v 命令选定文本,之后使用y命令复制文本,再将光标移动到指定位置,使用 p 命令粘贴文本即可。

6.5 设置选项

:set ic			设置在搜索/替换时忽略大小写(Ignore case)
:set hls is 设置搜索时高亮显示
:set noic 设置不忽略大小写
-------------------------------------------------------
:nohlsearch 去除高亮显示
/[target] \c <ENTER> \c可以实现尽在本次搜索时忽略大小写

Lesson 7

7.1 Getting Help

Press the <F1> key			按下F1键
:help <ENTER> 输入help指令

以上两种方法可以实现弹出帮助。

CTRL-W						切换窗口
:q <ENTER> 退出指令

7.2 创建启动脚本

可以编辑Vim的一些特征。如下图

7.3 补全

CTRL-D				未输全命令时展示其所有形式
<TAB> 自动补全

跟着Vimtutor学习Vim的更多相关文章

  1. 跟我一起学习VIM

    跟我一起学习VIM - The Life Changing Editor   前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教程.虽然准备有限,但分享过程中大家大多带着一种惊叹 ...

  2. VIMTUTOR《VIM教程》

    =============================================================================== =      欢     迎     阅 ...

  3. 跟我一起学习VIM - The Life Changing Editor

    前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教程.虽然准备有限,但分享过程中大家大多带着一种惊叹的表情,原来编辑器可以这样强大,这算是对我多年来使用VIM的最大鼓舞吧.所以分 ...

  4. 新手学习 Vim 的五个技巧

    多年来,我一直想学 Vim.如今 Vim 是我最喜欢的 Linux 文本编辑器,也是开发者和系统管理者最喜爱的开源工具.我说的学习,指的是真正意义上的学习.想要精通确实很难,所以我只想要达到熟练的水平 ...

  5. 【转载】跟我一起学习VIM - vim插件

    目录 写在前面:Life Changing Editor 什么是VIM 为什么选VIM 为什么选其它 为什么犹豫选择它们 VIM >= SUM(现代编辑器) 如何学习VIM 一秒钟变记事本 VI ...

  6. vimtutor学习笔记

    简介 vimtutor是vim这款知名的文本编辑器的学习工具/指南.语法如下. vimtutor [-g] [language] gvimtutor -g选项和gvimtutor是启动GUI版本的指南 ...

  7. (转载)跟我一起学习VIM - The Life Changing Editor

    原文: http://ju.outofmemory.cn/entry/79671 前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教程.虽然准备有限,但分享过程中大家大多带着一种 ...

  8. ubuntu中启动VIM,以及学习VIM

    启动VIM:首先打开终端,然后输入vi回车,然后输入i或者a,进入. 学习VIM:首先打开终端,然后输入vimtutor回车,然后进入教程学习.

  9. 跟我一起学习VIM - vim插件合集

    2016-06-14 15:04 13333人阅读 评论(0) 收藏 举报 分类: Linux(104)  目录(?)[+]  前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教 ...

随机推荐

  1. 加薪攻略之UI组件库实践—storybook

    目录 加薪攻略之UI组件库实践-storybook 一.业务背景 二.选用方案 三.引入分析 项目结构 项目效果 四.实现步骤 1.添加依赖 2.添加npm执行脚本 3.添加配置文件 4.添加必要的w ...

  2. 漫画|web的主要安全问题

    在此主要说现在市面上存在的4个比较多的安全问题 一.钓鱼 钓鱼: 比较有诱惑性的标题 仿冒真实网站 骗取用户账号 骗取用户资料 二.篡改页面 有一大部分被黑的网站中会有关键字 (在被黑的网站中,用的最 ...

  3. Linux常用命令 | grep

      作者简介 李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷.喜欢钻研底层技术,认为底层基础才是王道.一切新技术都离不开操作系统(CPU.内存.磁盘).网络 ...

  4. Spring Security OAuth2.0认证授权三:使用JWT令牌

    Spring Security OAuth2.0系列文章: Spring Security OAuth2.0认证授权一:框架搭建和认证测试 Spring Security OAuth2.0认证授权二: ...

  5. Spring Boot GraphQL 实战 03_分页、全局异常处理和异步加载

    hello,大家好,我是小黑,又和大家见面啦~ 今天我们来继续学习 Spring Boot GraphQL 实战,我们使用的框架是 https://github.com/graphql-java-ki ...

  6. Java NIO 缓冲区 Buffer

    缓冲区 Buffer 是 Java NIO 中一个核心概念,它是一个线性结构,容量有限,存放原始类型数据(boolean 除外)的容器. 1. Buffer 中可以存放的数据类型 java.nio.B ...

  7. WebApi 中请求的 JSON 数据字段作为 POST 参数传入

    使用 POST 方式请求 JSON 数据到服务器 WebAPI 接口时需要将 JSON 格式封装成数据模型接收参数.即使参数较少,每个接口仍然需要单独创建模型接收.下面方法实现了将 JSON 参数中的 ...

  8. ssh连接不上vmware虚拟机centos7.5

    在vmware中安装centos7.5后,手动设置IP地址192.168.1.5,发现主机ping不通虚拟机的IP,以下是我的解决办法 1.vmware设置选择仅主机模式 2.在主机查看vmnet1( ...

  9. JPEG解码--(1)JPEG文件格式概览

    由于懒和人的忘性,以前做的一些笔记再回过头看时又有些生疏了,我决定把一些内容整理出来,以供有需要的来参考. 了解的人知道其价值所在,不知道的人就弃之如废物吧. 本篇是JPEG解码系列的第一篇--JPE ...

  10. Kubernetes K8S之kube-prometheus概述与部署

    Kubernetes K8S之kube-prometheus概述与部署 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7. ...