linux vi 删除空行%s6,Linux——vim文本编辑器最新详解(由浅入深)

为什么要学vim

所有的Unix-like 系统都会内建vi文本编辑器,其他的文本编辑器则不一定会存在;

很多个别软件的编辑接口都会主动呼叫vi(例如:crontab、visudo、edquota);

vim是vi的进阶版,具有程序编辑能力,例如 shell script、C program ,可以主动地以字体颜色辨别语法的正确性;

vim还可以用不同的颜色或底线等方式来显示一些特殊的信息。

因为有太多Linux上面的命令都默认使用vi作为数据编辑的接口,所以必须得学会vi,否则很多命令就无法进行操作;另外,vim是vi的高级版本,又可以用颜色或下划线的方式显示一些特殊的信息;因此,现在我们选择功能更为强大的vim。

vim与vi的区别:

1、多级撤销。在vi中按u只能撤销上次命令,而在vim中可以无限制的撤销。

2、易用性。vi只能用于Unix中,而vim可以在Unix,Windows,Mac等多操作平台

3、语法加亮。Vim可以用不同的颜色加亮你的代码

4、可视化操作。就是说vim不仅可以在终端运行,也可以运行于x window、Mac OS、Windows。

5、对于vi的完全兼容。某些情况下,你可以把vim当成vi来使用

vim的三种基本模式

一般命令模式: 可以进行复制、粘贴、删除等操作

编辑模式: 编辑文件的内容,在命令模式下输入i、a、o(I、A、O)等任意一个键即可进入编辑模式

末行模式 / 命令行模式: 保存 / 退出文档,或者设置各种编辑环境

d221ccbbdfc16c2395d30d8c49a34d9f.png

简单执行范例

1、vim编辑器的启动

1、直接进入编辑环境

[root@localhost ~]# vim

2、使用【vim filename】进入编辑环境并打开(新建)文件

[root@localhost ~]# vim text

2、在命令模式下按【i】键进入编辑模式

3、按下【Esc】键回到一般命令模式

4、vim编辑器的退出

1、退出vim编辑环境

:q 退出

:wq 保存退出

2、放弃对文件的更改并退出编辑器

:q!

一、进入编辑模式按键操作

按键

说明

i

在当前光标处进入插入状态

a

在当前光标后进入插入状态

A

将光标移动到当前行的行末,并进入插入模式

o

在当前行的下面插入新行,光标移动到新行的行首,进入插入状态

O

在当前行的上面插入新行,光标移动到新行的行首,进入插入状态

二、一般命令模式的常见操作

1. 行内快速跳转

操作键

功能

^

将光标快速跳转到本行的行首字符

$

将光标快速跳转到本行的行尾字符

w

将光标快速跳转到当前光标所在的位置的后一个单词的首字母

b

将光标快速跳转到当前光标所在位置的前一个单词的首字母

e

将光标快速跳转到当前光标所在位置的后一个单词的尾字母

方向键

进行上下左右方向的光标移动

Home

快速定位到光标到行首

End

快速定位到光标到行尾

2. 行间快速跳转

命令

功能

:set nu

在编辑器中显示行号

:set nonu

取消编辑器行号显示

1G

跳转到文件的行首

G

跳转到文件的末尾行

nG

跳转到文件中的第n行

PageUp

进行文本的向上翻页

PageDown

进行文本的向下翻页

3. 文件内容的删除

命令

功能

x

删除光标处的单个字符 =delete

dd

删除光标所在行 ndd可以删除n行内容

dw

删除当前字符到单词尾(包括空格)的所有字符

de

删除当前字符到单词尾(不包括单词尾部的空格)的所有字符

d$

删除当前字符到行尾的所有字符

d^

删除当前字符到行首的所有字符

J

删除光标所在行行尾的换行符,相当于合并当前行和下一行的内容

4. 文件内容的撤销

命令

功能

u

取消最近一次的操作,并恢复操作结果;可以多次使用命令恢复已进行的多步操作

U

取消对当前行的所有操作

Ctrl + r

对使用u命令撤销的操作进行恢复

5. 文件内容的复制和粘贴

命令

功能

yy

复制当前行整行的内容

nyy

从当前行开始复制n行

yG

复制当前行到最后一行的所有数据

y1G

复制当前行到第一行的所有数据

p

将已复制的数据在光标下一行粘贴

三、命令行模式的常见操作

1. 文件的保存与退出

命令

说明

:w

将编辑的数据写入硬盘文件中,即保存

:w!

强制写入硬盘文件

:q

退出vi / vim

:q!

强制退出不保存

:wq

保存后退出,若为 :wq! 则为强制保存后退出

:w [filename]

将编辑的数据保存成另一个【filename】文件

:r [filename]

将【filename】文件内容追加到当前文件的光标所在行后面

2. 文件内容的查找

命令

功能

/word

从上而下在文件中查找字符串 “word”

?word

从下而上在文件中查找字符串 “word”

n

定位下一位匹配的被查找字符串

N

定位上一位匹配的被查找字符串

3. 文件内容的替换

命令

功能

: s/old/new

将当前行中查找到的第一个字符串 “old” 替换为 “new”

: s/old/new/g

将当前行中查找到的所有字符串 “old” 替换为 “new”

:#,#s/old/new/g

在行号 " #,# " 范围内替换所有的字符串 "old" 为 "new"

:%s/old/new/g

在整个文件范围内替换所有的字符串 "old" 为 "new"

: s/old/new/c

在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认

4. 自定义vim使用环境

命令

功能

:set nu

在文档中显示行号

:set nonu

与 :set nu 相反,为取消显示行号

四、多文件、多窗口编辑

假如有两个或者多个文件需要对比观看,我们要一个接一个的打开对照吗?这种做法显然是效率低下的,这时采用多文件、多窗口编辑的功能就能极大地提高效率。

1、首先用【vim filename】打开一个文件

[root@localhost ~]# vim /etc/passwd

2、在当前文件下进入命令行模式输入【:sp filename】打开另一个文件

$:sp /etc/shadow

效果如下图:

7c9188d80d9c769835967fb8460d75bc.png

多窗口下的操作

操作键

功能

:sp filename

打开一个新窗口,加入filename文件

ctrl+w+方向下键

将光标移动到下方的窗口

crtl+w+方向上键

将光标移动到上面的窗口

:qa

退出所有文件

五、vim环境设置与记录:~/.vimrc、 ~/.viminfo

说明:

~/.viminfo:vim会主动的将你曾经做过的操作记录下来,保存到 ~/.viminfo文件

~/.vimrc:整体vim的设定值一般是放置在 /etc/vimrc这个文件,不过,不建议你修改它!但是可以修改 ~/.vimrc这个文件(预设不存在,需要自行手动建立),将你所希望的环境设定值写入。举例如下:

[root@localhost ~]# vim ~/.vimrc

set nu#可以在每一行的最前面显示行号

set hlsearch#高亮度反白

set autoindent#自动缩进

set backspace=2#可随时用退格键删除

set ruler#可显示最后一行的状态

set showmode#左下角那一行的状态

set bg=dark#显示不同的底色色调

syntax on#进行语法检验,颜色显示

六、语系编码转换(中文编码问题)

有很多朋友经常会碰到 vim 编辑器里面显示中文乱码的问题,这其实很可能是因为编码的问题。中文编码常用的有Big5、GBK、UTF-8等几种,如果你的文件使用的是GBK编码,但在vim的终端界面中使用的是UTF-8,由于编码的不同(字符集不同),中文就会显示成一堆乱码。

iconv命令:用于编码转换

命令格式:iconv -f 原始编码 -t 输出编码 原文件名 -o 输出文件名

参数

说明

-f

–from-code = 名称 原始编码

-t

–to-code = 输出编码

-o

–output = FILE 输出文件名

案例演示:

在windows下创建一个含有中文的文件aaa.txt,并传给Linux(这里可以通过MobaXterm_CHS传输),回到Linux系统中打开显示是中文乱码,这时我们使用iconv编码转换,并输出为bbb.txt。

[root@localhost a]# iconv -f GBK -t utf8 aaa.txt -o bbb.txt

编码转换前:

0e0c020d3b50245e1ba558cbb483491d.png

编码转换后:

f5af376ae6f02e8d6984b5351e96a550.png

注:

windows中记事本默认字符集是ANSI 可以通过另存为右下角查看

如果是中文操作系统指的ANSI就是指的是 GBK

七、写在最后:

vim入门很简单,但是其实不是那么好学的,因为它的功能十分强大,支撑起Linux的半壁江山。因此,我们在平时要多看、多练,才能成为一名合格的Linux系统的维护者。

好了,如果对你有所帮助的话,就是对博主创作的最好支持!如有不足,还请雅正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值