20190403vim编辑器week1_day3
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的更多相关文章
- vim编辑器详解(week1_day3)--技术流ken
vi编辑器 作用:编辑文本文件中的内容的工具 命令历史 末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 v ...
- vim编辑器详解(week1_day3)
vi编辑器 作用:编辑文本文件中的内容的工具 命令历史 末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中 ...
- NiceMark——我的Markdown编辑器
NiceMark--我的Markdown编辑器 闲来无事,写了一个Markdown编辑器.基于electron,完全采用Web前段技术(Html,css,JavaScript)实现.代码已托管在Git ...
- 关于Unity3D自定义编辑器的学习
被人物编辑器折腾了一个月,最终还是交了点成品上去(还要很多优化都还么做). 刚接手这项工作时觉得没概念,没想法,不知道.后来就去看<<Unity5.X从入门到精通>>中有关于 ...
- 在ASP.NET Core中使用百度在线编辑器UEditor
在ASP.NET Core中使用百度在线编辑器UEditor 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服务端只有ASP.NET版的,如果是为了 ...
- 07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器
LoT.UI汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui 上次说的是强大的百度编辑器 http://www.cnblogs.com/d ...
- 富文本编辑器Simditor的简易使用
最近打算自己做一个博客系统,并不打算使用帝国cms或者wordpress之类的做后台管理!自己处于学习阶段也就想把从前台到后台一起谢了.好了,废话不多说了,先来看看富文本编辑器SimDitor,这里是 ...
- 玩转Vim 编辑器
一:VIM快速入门 1.vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数 ...
- 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范
昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...
随机推荐
- KafkaManager对offset的两种管理方式
OffsetManager主要提供对offset的保存和读取,每个broker都有一个OffsetManager实例,kafka管理topic的偏移量有2种方式: 1.ZookeeperOffsetM ...
- vs2010下release版本调试设置
设置在Release模式下调试的方法: 1.工程项目上右键 -> 属性 2.c++ -> 常规 -〉调试信息格式 选 程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi) ...
- zeppelin 一直报这个警告 也是醉了
用./zeppelin-daemon.sh start 启动zeppelin 一直报这个警告.. WARN [2017-03-23 19:11:34,461] ({qtp483422889-45} N ...
- selenium 操作过程中,元素标红高亮的两种实现方式
在使用selenium时,动作元素标红高亮,在定位问题时相当好用,有以下二种方法可以实现 一.使用js将元素属性修改 这也是网上大部分的实现方式,但有时候会有点小问题,代码如下: 只写其实某一段函数 ...
- 跨平台桌面程序框架Electron
https://www.npmjs.com/ js库
- cf 938E
哇自闭了. 一样个毛啊. 和之前见过的几道感觉很类似啊. 首先一个数如果有贡献那么在他后面一定有一个大于它的数,并且前面的全比他小,然后我就跑偏了... 于是我们先排个序,显然无影响,我们可以考虑从 ...
- GCD与LCM
求最大公约数(GCD)和求最小公倍数(LCM): 首先是求最大公约数,我们可以利用辗转相除法来求 1 int gcd(int a,int b) 2 { 3 if(b==0) 4 return a; 5 ...
- java web实现在cookie中保存用户名和密码,用户自动登入
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 微信小程序开发笔记03
今天基本实现了微信小程序主要功能,页面还没有进行优化,有些功能还需完善. 页面之间的信息转化部分还未实现.
- STL算法总览(部分)
下图将所有的STL算法(以及一些非标准的SGI STL算法)的名称.用途.文件分布等等,依算法名称的字母顺序列表.表格中凡是不在STL标准规格之内的SGI专属算法,都以 * 加以表示. 注:以下“质变 ...