vi编辑器

作用:编辑文本文件中的内容的工具

命令历史

末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。

启动vim

在命令行窗口中输入以下命令即可

vim 直接启动vim

vim filename 打开vim并创建名为filename的文件

vim的模式

vi的工作模式

命令模式:仅仅可以查看内容,但是不能进行修改(默认)

输入模式:可以对文件中的内容进行修改

末行模式:此模式可以执行一些命令

vi打开文件

vi打开文件

vi 文件名

注意:

1. vi打开文件,如果发现文件是空的,那么说明你所打开的文件是不存在的

2. 也就是vi既可以打开现有的文件,也可以创建新文件,只是所创建的新文件内容是空白的

3. vi有增强版本,称之为vim(建议用vim)

4. vi是用来编辑文本文件的,不能用来打开目录

情况1:从命令模式到输入模式

i:在光标所在位置的前插入内容

I:将光标移到到行首,然后进入输入模式

a:将光标向后移到一位,然后进行插入模式(输入的内容会在光标原始位置的后一位。

A:在当前行尾插入

o:在光标所在行的下面新开一行,然后进入输入模式

O:在光标所在行的开面新开一行,然后进入输入模式

命令模式下的常用操作

第一类操作:复制、移动删除文件内容

yy:复制光标所在的行

nyy:复制光标所在的行开始向下的N行

dd:剪切光标所在的行

ndd:剪切光标所在的行开始向下的N行

p(小):粘贴到光标所在行的下面

P(大):粘贴到光标所在行的上面

D:删除光标所在位置到行尾的内容

dG:删除光标所在的行到末尾全部的行

home跳转到行首

end跳转到行位

pgup上翻一页

pgdn下翻一页

第二类操作:撤销和重复执行的相关操作

u:撤销上次所指向的操作(相当于windows中ctrl+z)

nu:撤销n次操作(n的值最大是50)

ctrl+r:撤销刚刚所撤销的那个操作(相当于windows中ctrl+y)

:重复执行上一次所做的操作

第三类操作:跳转相关的操作

nG:跳转到第n行

G:直接跳转到最后一行

0:跳转到行首(会认为空格也是内容,此时会跳转到空格的最前面)

^:跳转到行首(不认为空格是内容,此时会跳转到第一个非空字符)

$:跳转到行尾

ctrl+f:向下翻一屏

ctrl+b:向上翻一屏

第四类操作:替换相关操作

r:替换一个字符(替换完成之后,自动返回到编辑模式)

R:进入替换模式(要想退出替换模式,按esc)

第五类操作:查找

/string:在文件中搜索指定的字符串

n:正向查找

N:反向查找

情况2:从输入模式到命令模式

esc

情况3:从编辑模式到末行模式

进入末行模式的方式:在编辑模式下按shift+:

末行模式下的常用操作

第一类命令:行号

set nu:显示行号

set nonu:关闭行号

第二类命令:跳转

num:直接跳转到第num行

$:直接跳转到最后一行

第三类命令:取消匹配到的内容的高亮

nohl

第四类命令:替换

start,end s/原始内容/替换内容/g

(分隔符不一定是/,只要是三个相同的符号即可)

注意:

如果不用g,那么仅仅会替换每行的第一个找到的对象

如果使用g,那么会将范围内所有找到的对象全部做替换

例子:将54到56之间的echo替换为bajie

:54,56 s/echo/bajie/g

例子:将文件中全部的echo替换为bajie

:1,$ s/echo/bajie/g

:% s/echo/bajie/g

例子:将文件的50-100行行首添加一个#

:50,100 s/^/#/g

例子:1-5行首添加空格

:1,5 s/^/ /g

例子:将全部行首的空格删除

:1,$ s/^ //g

例子:将全部行首的#删除

:1,$ s/^#//g

例子:将1-5行中的a删除

:1,5 s/a//g

例子:在1-5行的末尾添加一个#

:1,5 s/$/#/g

例子:将文件中全部的/替换为+

:% s@/@+@g

补充1:

^:表示行首

$:表示行位

第五类命令:保存和退出

w:执行保存操作(保存到原始文件中)

w /path/to/file:实现文件另存为

q:退出

!:强制执行操作

第六类命令:高级操作

!命令:在vi中直接执行命令

r /path/to/file:将file中的内容导入到当前文件中

set tabstop=4:将tab缩进的字符数设置为4个

set ai:设置自动缩进

set noai:取消自动缩进

第七类命令:复制、移动、删除多行的操作

start,end d:删除多行

start,end m dest:将多行移动到指定行的下面

start,end co dest:将多个复制到指定行的下面

例子:将59到198之间的内容复制到233行的下面

59,198 co 233

分屏操作

vim -o file1 file2:实现水平分屏

vim -O file1 file2: 实现垂直分屏

ctrl+w:切换到另一个分屏

打开文件的小技巧

vim +num file:打开文件的时候,自动跳转到第num行(加号不可省略)

vim + file:打开文件的时候,自动跳转到最后一行

vi的配置文件

/etc/vimrc:全局配置文件,在这个文件中做的配置,会对所有用户生效

~/.vimrc:(默认不存在,需要自己手动创建)用户配置文件,仅仅对当前用户生效

1. 编辑vi的配置文件,实现可以自动显示行号、缩进4个字符、自动对齐

# vi ~/.vimrc

:set nu

:set ai

:set tabstop=4

vi崩溃缓存机制

用vim编辑一个文件的是,如果文件没有正常的关闭(wq、q、q!),那么就会生成一个崩溃缓存文件

崩溃缓存文件的和作用

1. 缓存文件是隐藏文件

2. 缓存文件基本格式是 .file.swp

3. 缓存文件的作用是用于在系统意外关机的情况下,恢复文件中的内容(修改了文件内容,意外关掉终端或者系统)

4. 缓存文件的使用方式

第一步:# vim -r .file.swp

第二步:保存退出

第三步:删除缓存文件

注意:

1. 如果文件发生了修改,那么无法直接退出

2. 如果要退出一个修改了的文件,有三种方式

方式1:先执行保存(w),然后执行退出(q)

方式2:直接保存并退出(wq)

方式3:不保存,并强制执行退出操作(q!)

补充:

1. 创建空白文件的方式有两种touch、vi\vim

2. linux中,文件的后缀对于文件的属性没有任何影响,文件的属性只和创建文件的时候所执行的命令有关

3. linux中无论是命令还是文件名,都严格区分大小写

练习

20190403vim编辑器week1_day3的更多相关文章

  1. vim编辑器详解(week1_day3)--技术流ken

    vi编辑器 作用:编辑文本文件中的内容的工具 命令历史 末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 v ...

  2. vim编辑器详解(week1_day3)

    vi编辑器   作用:编辑文本文件中的内容的工具   命令历史   末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令.   启动vim   在命令行窗口中 ...

  3. NiceMark——我的Markdown编辑器

    NiceMark--我的Markdown编辑器 闲来无事,写了一个Markdown编辑器.基于electron,完全采用Web前段技术(Html,css,JavaScript)实现.代码已托管在Git ...

  4. 关于Unity3D自定义编辑器的学习

    被人物编辑器折腾了一个月,最终还是交了点成品上去(还要很多优化都还么做).  刚接手这项工作时觉得没概念,没想法,不知道.后来就去看<<Unity5.X从入门到精通>>中有关于 ...

  5. 在ASP.NET Core中使用百度在线编辑器UEditor

    在ASP.NET Core中使用百度在线编辑器UEditor 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服务端只有ASP.NET版的,如果是为了 ...

  6. 07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器

    LoT.UI汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui 上次说的是强大的百度编辑器 http://www.cnblogs.com/d ...

  7. 富文本编辑器Simditor的简易使用

    最近打算自己做一个博客系统,并不打算使用帝国cms或者wordpress之类的做后台管理!自己处于学习阶段也就想把从前台到后台一起谢了.好了,废话不多说了,先来看看富文本编辑器SimDitor,这里是 ...

  8. 玩转Vim 编辑器

    一:VIM快速入门 1.vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数 ...

  9. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

随机推荐

  1. linux/nginx命令

    1.ps查看服务器所有的进程: -aux 显示所有状态 -ef 简洁信息 ps -aux | grep node 第二列是pid,杀掉程序使用kill. ps -ef | grep node 第一列是 ...

  2. 对于已经添加引用,还找不到类型或名字空间的错误及svn客户端清除用户帐号密码

    1 已经添加过引用,却找不到类型或名字空间. 可以看下项目的的.net framework版本是否一致. 项目(例如类库项目)右键(vs解决方案资源管理器)——>属性——>应用程序——&g ...

  3. 《JavaScript》 程序基本知识 数据类型。 {0912上} {0912下}

    JS脚本语言: 这是JaxaScript的全称名 JS是网页里面使用的脚本语言 JS是一个非常强大的语言 JS的基础语法 注释语法:  单行注释 //     多行注释 /**/ 输出语法:   双标 ...

  4. java-03-动手动脑

    1. 问题:这两种方式定义的变量是一样的吗? 早期我们经常这样定义变量  int value=100;前面的示例中这样定义变量  MyClass obj = new MyClass(); 回答:一般情 ...

  5. Jmeter学习之-获取登录的oken值(1)

    ps: 这里只着重讲述如何实时获取其他接口返回的值,作为此次接口的参数传递,添加接口请求的相关不再详述,可查看上一篇文章 为了方便管理,此处将:登录接口单独放在一个线程组下面,需要使用登录接口返回的t ...

  6. spring cloud 定时任务

    项目中,因为使用了第三方支付(支付宝和微信支付),支付完毕后,第三方支付平台一般会采用异步回调通知的方式,通知商户支付结果,然后商户根据通知内容,变更商户项目支付订单的状态.一般来说,为了防止商户项目 ...

  7. 一个项目中mysql数据库经常死锁的问题解决记录

    1.问题描述 此项目为一个物流系统,需要使用PDA对货物进行入库.备货.出货等操作,在系统开发测试过程中,经常发现死锁问题. 有这样一种业务场景:仓库对备货单上货进行扫码备货后,点击"完成& ...

  8. android 前台服务不显示通知

    原因可以在哪里写了执行完成后就自动结束的吧 导致前台服务没有出现 如我 @Override public int onStartCommand(Intent intent, int flags, in ...

  9. python_的面向对象编程

    废话不多说,先弄个对象来看看 class Student(object): def __init__(self, name, score): self.name = name self.score = ...

  10. 027-Session状态提供程序

    Session分三种:1.InProc(进程内)-默认就是这种-速度快/但内存小/易丢失进程外:可以在IIS或ASPNET服务意外关闭时继续保持状态,注意此时存储到session中的对象必须支持序列化 ...