linux文件编辑
1.VIM基本概述
1.什么是VIM?
vi和vim是Linux下的一个文本编辑工具。(可以理解为windows的记事本,或word文档)
2.为什么要使用VIM?
因为Linux系统一切皆为文件,而我们工作最多的就是修改某个服务的配置(其实就是修改文件内容)。 也就是说如果没有vi/vim,我们很多工作都无法完成。
PS: vim是学习linux最重要的命令之一
3.VI与VIM有什么区别?
vi和vim都是文本编辑器,只不过vim是vi的增强版,比vi多了语法高亮显示,其他编辑功能几乎无差,所以使用vi还是vim取决个人习惯。
(相当于windows系统下的文本编辑软件“记事本”与”notepad++”的区别)
PS:因为前期最小化安装CentOS系统,所以默认情况下没有vim命令,但可以使用yum install vim -y安装
4.如何使用VIM编辑器?
在使用VIM之前,我们需要先介绍下VIM的三种模式: 普通模式、编辑模式、命令模式,每种模式分别支持多种不同的快捷键,要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法。
打开文件
vim [option] .... file....
+# 直接定位到第#行
+/pattern 打开文件后,直接定位到第一个匹配到patter的地方
-b 以二进制方式打开文件
-d file1 file2 对比打开多个文件
-m file 只读方式打开文件
-e 直接以末行模式打开
5.VIM模式三种模式介绍
1.普通模式: 主要是控制光标移动,可对文本进行复制、粘贴、删除等工作。
使用vim filename 编辑一个文件时,一进入该文件就是普通模式了。
在这个模式下,可以进行光标移动、复制、删除、粘贴操作。
2.编辑模式: 主要进行文本内容编辑和修改
从普通模式进入编辑模式,只需你按一个键即可(i, I, a, A, o, O)
当进入编辑模式时,会在屏幕的最下一行会出现 “INSERT”标记
从编辑模式回到普通模式只需要按键盘左上方的 ESC 键即可。
3.末行模式: 主要用于保存或退出文本。
在普通模式下,输入 “:” 或者 “/“ 即可进入命令模式。
在命令该模式下,可进行的操作有,显示行号、搜索、替换、保存、退出。
小结: vim编辑打开文件整体流程如下:
1.默认打开文件处于普通模式
2.从普通模式切换至编辑模式需要使用a、i、o
3.编辑模式修改完毕后需要先使用ECS返回普通模式
4.在普通模式输入”:”或”/“进入命令模式,可实现文件的保存与退出。
PS: 在vim中,无法直接从编辑模式切换到扩展命令模式。
模式
命令模式:可以光标,可以粘贴、复制文本,默认
插入模式或者编辑模式:可以修改文本
末行模式(扩展命令模式):保存、退出等等
esc 退出当前的模式
2.VIM模式使用
1 模式之间切换
命令模式- 插入模式
i 光标所在处插入
I 在当前光标所在的行的行首插入
a 光标所在位置的后面插入
A 在当前光标所在的行尾插入
o 在当前光标所在的行的下一行(新开)插入
O 在当前光标所在的行的上一行(新开一行)插入
插入模式- 命令模式
esc
命令模式 -- 末行模式
:
末行模式 -- 命令模式
esc esc
esc enter
2 关闭文件
末行模式
:w 保存
:q 退出
:wq 保存并退出
:q! 强制退出
:wq!强制保存退出
:x 保存并退出
命令模式
ZZ 保存退出
ZQ 不保存退出
3 扩展命令行模式
按":" 来进入
w 写入
q 退出
wq 保存并退出
q! 强制退出
x 保存并退出
r file 读入文件
w file 另存为
!command 直接执行命令
r!command 直接把命令的结果写到文件中
4 命令模式跳转
字符之间跳转
l 向右
h 向左
j 向下
k 向上
单词间跳转
w 下一次的单词的词首
e 当前词的词尾或者下一个单词的词尾
b 当前词的词首或者上一词的词首
# command 直接跳转#个单词
页面间跳转
H 页首
L 页尾
M 页中
zt 将光标所在行移动到屏幕的顶端
zb 将光标所在行移动到屏幕的底部
zz 将光标所在行移动到屏幕的中间
行首行尾之间跳转
^ 跳转到当前光标所在行的第一个非空字符
0(数字) 跳转到行首
$ 跳转到行尾
行间移动
#
G 跳转到第#行 4G就是跳到4行在命令扩展模式下,直接:# 跳转到对应的#行
G 直接到最后一行
gg 跳转到第一行
1G 跳转到第一行
段落之间跳转(空行分割为一段)
{ 上一段
} 下一段
翻屏
ctrl+f 向文件尾部翻一屏
ctrl+b 向文件首部翻一屏
ctrl+d 向文件尾部翻半屏
ctrl+u 向文件首部翻半屏
5 命令模式编辑
字符编辑
x 删除光标所在处的字符
#
x 删除#个字符xp 将光标所在处的字符和后面的字符互换位置
~ 将光标所在的位置大小写互换
J 删除当前行的换行符
替换
r 替换当前光标所在处的字符
R 进入替换模式
删除
d 删除,需要跟字符跳转结合
d$ 删除到行尾,删除当前位置
d0 删除到行首,当前位置不删除
d^ 删除到非空字符
dw 删除一个单词
de 向后删除一个单词
db 向前删除一个单词
dd 删除正行
# dd 删除#行
dG 删除到结尾
dgg 删除到开头
D 相当于d$
复制
y,也可以跟字符跳转结合
y$
y0
y^
yw
ye
yb
yy 一正行
#
yy 复制#行yG 复制到结尾
ygg 复制到开头
Y 复制整行
粘贴
p 如果是整行的话,则粘贴到当前光标所在行的下一行,否则粘贴到光标的后面
P 如果是整行的话,则粘贴到当前光标所在行的上一行,否则粘贴到光标的前面
改变,删除以后并将模式切换成插入模式
c 可以跟光标的跳转做结合
c$
c0
c^
cw
ce
cb
#
commandcc 删除正行并插入
C 相当于c$
#
[i|I|a|A|o|O]string esc 将string粘贴#次搜索
/pattern 从当前光标往下搜索
?pattern 从当前光标往上搜索
n 同命令相同的方向
N 同命令相反的方向
撤销
u 撤销最近的修改
# u 撤销最近的#次修改
ctrl +r 撤销之前的撤销动作
. 重复最后一次操作
#
. 最后一次操作重复执行#次
6 命令扩展模式
地址定界
:start,end
# 具体到第#行
#
,# 第#行到第#行
#,+n 从第#开始,到第#+n行结束 1,+2 ==>1,3
. 表示当前光标所在的行
$ 表示最后一行
$-1 表示倒数第二行
% 表示全文
/pat1/,/pat2/ 从第一个pat1匹配到的地方,到pat2第一次匹配到的地方
#
,/pat/ 从第#行开始,到第一次被pat匹配到的地方
/pat/,$ 从第一次被pat匹配到的地方到结尾
可以使用的命令
d
y
w file 重新另存为文件
r file 将文件的内容写到匹配到的下一行
查找并替换
要使用地址定界来进行查找
s 在扩展命令模式下使用为替换(替换光标出的字符)
格式: %s/要查找的内容/要替换的内容/装饰器(加了%,就是全文查找)
要查找的内容可以使用正则
替换的内容不能为正则
可以为分组:%s/(nfs.*)/#\1/
\1表示第一个分组内的内容
\2
\3
& 可以代表前面匹配到的内容
%s/sshd/#&/ 在匹配到的字符sshd前加#
装饰器
i 忽略大小写
g 表示全部替换
gc 每一次替换之前都要询问是否替换
分隔符的替换还可以使用
@
#
%s/@/etc/# etc前面的/替换成#
7 可视化
v 面向字符
V 面向行的
ctrl +v 面向块
可以结合所有的跳转键进行结合
对突出显示部分可以使用删除、复制、变更、过滤、替换、另存为等等
ctrl+v 进入可视块模式,选中需要注释的行
1.插入:按shift+i进入编辑模式,输入#,结束按ESC键
2.删除:选中内容后,按x或者d键删除
3.替换:选中需要替换的内容, 按下r键,然后输入替换后的内容 shift+v 进入可视行模式,选中整行内容
1.复制:选中行内容后按y键及可复制。
2.删除:选中行内容后按d键删除。
8 打开多个文件
vim file1 file2 file3
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个
:qall 退出全部
:wall 保存全部
:wqall 保存并退出全部
:xall 保存并退出全部
9 使用多个窗口
vim -o 水平分隔
vim -O 垂直分隔
切换ctrl+w 加上上下左右箭头
退出:qall
vim -o file2 passwd a 同时打开三个文件
vim -o file1 file2 #水平分割
vim -O file1 file2 #垂直分割 #ctrl+ww 文件间切换
10 相同文件之间差异对比,通常用于对比修改前后差异
# diff #文件对比
# vimdiff #以vim方式打开两个文件对比,高亮显示不同的内容
11 单文件切割
ctrl+w,s 水平切割
ctrl+w,v 垂直切割
ctrl+w,q 取消相邻的窗口
ctrl+w,o 取消全部窗口
12 如果VIM非正常退出 (ctrl+z)挂起或强制退出终端没关闭VIM后
#假设打开filename文件被以外关闭,需要删除同文件名的.swp文件即可解决
# rm -f .filename.swp
3 vim工作特性
配置文件
全局有效:/etc/vimrc
对当前用户有效: ~/.vimrc
行号:set nu 取消 set nonu
忽略大小写(搜索) set ic 取消set noic
自动缩进(同上一行) set ai 取消set noai(python中用的多)
设置高亮显示(搜索到的内容) set hls 取消set nohls
语法高亮 syntax on 取消 syntax off
文件格式
windows格式 set fileformat=dos
unix set fileformat=unix
添加标识线: set cul 取消标识线 set nocul
获取帮助: set all
获取帮助信息:
:help
:help topic
vimtutor
linux文件编辑的更多相关文章
- Linux系统运维笔记(二),Linux文件编辑命令
Linux系统运维笔记 Linux文件编辑命令 首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 接下来我们按i,然后键盘随便输入写内容. 然后按ESC重新进入到命令 ...
- Linux文件编辑工具——VIM
Linux文件编辑工具--VIM 1.VIM基本概述 1.1 什么是vim vi 和 vim 是 Linux 下的一个文本编辑工具.(可以理解为 windows 的记事本,或 Notepad++ 1. ...
- Linux文件编辑之sed命令
文件编辑之sed命令 sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为模式空间 (pattern space ...
- Linux文件编辑命令详细整理
刚接触Linux,前几天申请了个免费体验的阿里云服务器,选择的是Ubuntu系统,配置jdk环境变量的时候需要编辑文件. vi命令编辑文件,百度了一下,很多回答不是很全面,因此编辑文件话了一些时间. ...
- Linux文件编辑vi、mkdir等
1.进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于 ...
- Linux文件编辑命令具体整理
刚接触Linux,前几天申请了个免费体验的阿里云server,选择的是Ubuntu系统.配置jdk环境变量的时候须要编辑文件. vi命令编辑文件,百度了一下,非常多回答不是非常全面,因此编辑文件话了一 ...
- 7.Linux文件编辑之Vim
1.VIM基本概述 1.什么是VIM? vi和vim是Linux下的一个文本编辑工具.(可以理解为windows的记事本,或word文档) 2.为什么要使用VIM? 因为Linux系统一切皆为文件,而 ...
- linux文件编辑VI命令详解
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...
- linux文件 编辑常用 inux手把手vi ---针对文件操作
命令语法 说明 使用频率(1:常用;2一般:3:偶尔) 1.VI编辑器的启动与退出 VI编辑器的启动与退出 vi file1 新建一个文本文件名为file1 :q 退出,如果对缓存去进行过修改,则提 ...
- Linux文件编辑时光标操作
一.移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 ...
随机推荐
- NC23482 小A的最短路
题目链接 题目 题目描述 小A这次来到一个景区去旅游,景区里面有N个景点,景点之间有N-1条路径.小A从当前的一个景点移动到下一个景点需要消耗一点的体力值.但是景区里面有两个景点比较特殊,它们之间是可 ...
- NC200195 区区区间
题目链接 题目 题目描述 \(Keven\) 特别喜欢线段树,他给你一个长度为 \(n\) 的序列,对序列进行 \(m\) 次操作. 操作有两种: 1 \(1\ l\ r\ k\) :表示将下标在 \ ...
- NC20115 [HNOI2015]菜肴制作
题目链接 题目 题目描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号 ...
- Smartctrl 命令使用说明
一.smartctl工具简介 Smartmontools是一种硬盘检测工具,通过控制和管理硬盘的SMART(Self Monitoring Analysis and Reporting Techno ...
- SATA学习笔记——Link Layer 加扰/解扰/CRC
一.故事前传 我们之前说到Link layer的结构,link layer的作用大致可以包括以下几点: Frame flow control CRC的生成与检测 对数据与控制字符的Scrmable/D ...
- 【Android】使用MediaExtractor获取关键帧的时间戳
1 前言 使用MediaExtractor.MediaMuxer去掉视频文件中的音频数据 中介绍了 MediaExtractor 类的主要方法,本文主要将使用其 advance() 和 seekTo( ...
- Ubuntu在无网络环境下,用离线源apt-get安装软件
步骤概要如下: 1.假设目标安装的是服务器A,需先准备一台正常环境,且操作系统版本与A一致的服务器B: 2.用apt-get在服务器B上下载需要安装的包,并用dpkg-scanpackages依赖打包 ...
- 数据抽取平台pydatax介绍
缘起一: 公司现有数据仓库,是通过kettle从mysql抽取到目标库,运行多年,主要有以下问题, 1,效率低:kettle抽取行数少 2,容错性差:一个表抽取出错就导致后续计算 ...
- LVM精简卷(Thinly-Provisioned Logical Volumes)
可能LVM大家都比较熟悉,那么精简卷又是干什么的呢?相比于普通LVM有什么优势,又会带来哪些新的问题?带着这些我们来一探究竟: 工作原理 在创建Thin"瘦"卷时,预分配一个虚拟的 ...
- spring boot实现验证码登录
内容比较简单,需要完整项目的朋友留下邮箱,给你们发. 直接看效果: 下面是实现步骤 1.验证码生成工具类(引用自网络) package com.laoxu.test.helloweb.util; im ...