vi与vim文字处理器的使用

目录

一、vi三种模式

二、命令行内容说明

一般模式 

编辑模式

命令行模式

三、vim的附加功能 

块选择

多文件编辑

多窗口功能

vim环境设置

四、DOS与Linux的换行符


一、vi三种模式

vi分为3种模式,分别是“一般模式”、“编辑模式”、“命令行模式”。

  • 一般模式:光标移动、搜索、替换、删除字符、删除整行、复制整行、粘贴整行
  • 编辑模式:可输入任何字符
  • 命令行模式:读取、存储文件以及其他附加功能 

二、命令行内容说明

一般模式 

一般模式:移动光标的方法
h或←光标向左移动一个字符
j或↓光标向下移动一个字符
k或↑光标向上移动一个字符
l或→光标向右移动一个字符

如果想要进行多次移动的话,例如向下移动30行,可以使用“30j”或“30↓”的组合键,即加上想要进行的次数(数字)后,操作即可。

Ctrl+[f]或PgDn屏幕“向下”移动一页
Ctrl+[b]或PgUp屏幕“向上”移动一页
Ctrl+[d]屏幕“向下”移动半页
Ctrl+[u]屏幕“向上”移动半页
+光标移动到非空格符的下一行
-光标移动到非空格符的上一行
n<space>n表示“数字”,例如 20。按下数字后再按空格键,光标会向右移动这一行的n个字符。例如20<space>则光标向后面移动20个字符的距离
0这是数字“0”:移动到这一行的最前面字符处
$移动到这一行的最后面字符处
H光标移动到这个屏幕的最上方那一行
M光标移动到这个屏幕的中央那一行
L光标移动到这个屏幕的最下方那一行
G光标移动到这个文件的最后一行
nGn为数字。移动到这个文件的第n行。例如20G则会移动到这个文件的第20行(可配合 :set nu)
gg移动到这个文件的第一行,相当于1G
n<Enter>n为数字。光标向下移动n行
一般模式:搜索与替换
/word从光标位置开始,向下寻找一个名为word的字符串。例如要在文件内搜索vbird这个字符串,就输入/vbird即可
?word从光标位置开始,向上寻找一个名为word的字符串
nn是英文按键。表示“重复前一个搜索的动作”。举例来说,如果刚刚执行/vbird去向下搜索vbird字符串,则按下n后,会向下继续搜索下一个名称为vbird的字符串。如果执行?vbird的话,那么按下n,会向上继续搜索名称为vbird的字符串
N这个N是英文按键。与n刚好相反,为“反向”进行前一个搜索动操作。例如/vbird后,按下N则表示“向上”搜索vbird
:n1、n2s/word1/word2/g

n1与n2为数字。在第n1与n2行之间寻找word1这个字符串,并将这个字符串替换为word2。举例来说,在100到200行之间搜索vbird并替换为VBIRD则:“:100、200s/vbird/VBIRD/g”

:1、$s/word1/word2/g

从第一行到最后一行寻找word1字符串,并将该字符串替换为word2

:1、$s/word1/word2/gc从第一行到最后一行寻找word1字符串,并将该字符串替换为word2。且在替换前显示提示符给用户确认(conform)是否需要替换
一般模式:删除、复制与粘贴
x,X

在一行字中,x为向后删除一个字符(相当于[Del

]键),X为向前删除一个字符(相当于[backspace]即退格键)

nxn为数字,连续向后删除n个字符。举例来说,要连续删除10个字符,则输入“10x”
dd删除光标所在的那一整行
nddn为数字。从光标位置开始,删除向下n行,例如20dd则是删除20行
d1G删除光标所在位置到第一行的所有数据
dG删除光标所在位置到最后一行的所有数据
d$删除光标所在为位置到该行的最后一个字符
d0d的后面是数字0,删除光标所在处,到该行的最前面一个字符
yy复制光标所在的那一行
nyyn为数字。复制光标所在的向下n行,例如20yy则是复制20行
y1G复制光标所在行到第一行的所有数据
yG复制光标所在行到最后一行的所有数据
y0复制光标所在的那个字符到该行行首的所有数据
y$复制光标所在的那个字符到该行行尾的所有数据
p,Pp为将已复制的数据粘贴到光标的下一行,P为贴到光标的上一行。举例来说,当前光标在第20行,且已经复制了10行数据。则按下p后,那10行数据会贴在原来的20行之后,即由21行开始贴。但如果是按下P,那么原来的第20行会被变成30行
J将光标所在行与下一行的数据结合成同一行
c重复删除多个数据,例如向下删除10行,[10cj]
u复原前一个操作
[Ctrl]+r重做上一个操作
u与[Ctrl]+r是很常用的命令。一个是复原,另一个是重做一次。利用这两个功能按键,编辑起来就得心应手。
.这就是小数点。意思是重复前一个动作。如果想重复删除、复制粘贴,按下小数点“.”就可以

编辑模式

进入编辑模式
i、I插入:在当前光标所在处插入输入文字,已存在的文字会向后退;其中,i为“从当前光标所在处插入”,I为“在当前所在行的第一个非空格符处开始插入”
a、Aa为“从当前光标所在的下一个字符处开始插入”,A为“从光标所在行的最后一个字符处开始插入”
o、O这是英文字母o的大小写。o为“在当前光标所在的下一行处插入新的一行”;O为“在当前光标所在处的上一行插入新的一行”
r、R替换:r会替换光标所在的那一个字符;R会一直替换光标所在的文字,直到按下Esc键为止
使用上面这些按键时,在vi画面的左下角会出现“--INSERT”或“--REPLACE--”的字样。通过名称就知道是什么操作。特别注意,上面也提过了,想在文件中输入字符时,一定要在左下角处看到INSERT/REPLACE才能输入
Esc退出编辑模式,回到一般模式中

命令行模式

命令行模式
:w将编辑的数据写入硬盘文件中
:w!若文件属性为“只读”时,强制写入该文件。不过,到底能不能写入,与文件权限有关
:q离开vi
:q!若曾修改过文件,又不想存储,使用!为强制离开不存储文件
注意一下,那个感叹号(!)在vi当中,常常具有“强制”的意思。
:wq存储后离开,若为 :wq! 则为强制存储后离开
:e!将文件还原到最原始的状态
ZZ若文件没有更改,则不存储离开,若文件已经更改,则存储后离开
:w [filename]将编辑的数据存储成另一个文件(类似于另存新文件)
:r [filename]在编辑的数据中,读入另一个文件的数据。即将“filename”这个文件内容加到光标所在行的后面
:n1、n2 w [filename]将n1到n2的内容存储成filename文件
:! command暂时离开vi到命令行模式下执行command的显示结果。例如:“:! ls /home”,即可在vi中查看/home中以ls输出的文件信息
:set nu显示行号,设置之后,会在每一行的前缀显示该行的行号
:set nonu与set nu相反,取消行号

三、vim的附加功能 

块选择

按键块选择的按键意义
v字符选择,会将光标经过的地方反白选择
V行选择,会将光标经过的行反白选择
[Ctrl]+v块选择,可以用长方形的方式选择数据
y复制反白的地方
d将反白的地方删除掉

多文件编辑

按键意义
:n编辑下一个文件

:N

编辑上一个文件
:files列出当前vim打开的所有文件

多窗口功能

按键功能
:sp [filename]打开一个新窗口,如果加 filename ,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容(同步显示)
[Ctrl]+wj按键的按法是:先按下[Ctrl不放,再按下w后放开所有的按键,然后再按下j,则光标可移动到下方的窗口
[Ctrl]+wk同上,不过光标移动到上面的窗口
[Ctrl]+wq其实就是 :q 结束离开。举例来说,如果想结束下方的窗口,利用[Ctrl]+wj 键移到下方窗口后,按下 :q 即可离开,也可以按下[Ctrl]+wq 键

vim环境设置

参数说明
:set nu设置行号。取消的话,就是 :set nonu
:set hlsearch设置是否将搜索的字符串反白。默认是 hlsearch ,如果不想反白,就用 :set nohlsearch
:set autoindent是否自动缩排。autoindent是自动缩排,不想缩排就用 :set noautoindent
:set backup是否自动存储备份文件。一般用 nobackup ,如果设置 backup ,当你更改任何一个文件时,则源文件会被另存为一个名为 filename~的文件。举例来说,我们编辑hosts,设置:set  backup ,那么当更改hosts时,在同一目录下,就会产生hosts~文件名的文件,记录原始的hosts文件内容
:set ruler设置是否在右下角显示状态行说明
:set showmode是否在左下角的状态行显示--INSERT--
:set backspace=(012)一般来说,如果按下i进入编辑模式后,可以利用退格键(backspace)来删除任意字符。但是,某些版本则不允许这样做。此时就可以通过backspace来设置。当backspace为2时,可以删除任意值;0或1时,仅可以删除刚刚输入的字符,而无法删除原来就已经存在的文字
:set all显示当前所有的环境参数设置值
:syntax(off|on)是否根据程序相关语法显示不同的颜色。举例来说,在编辑一个纯文本文件时,如果是以#开始,那么该行就会变成蓝色。如果你懂得写程序,那么这个 :syntax on 还会主动帮你调试。但是,如果仅是编写纯文本文件,要避免颜色对屏幕产生的干扰,则可以取消这个设置 :syntax off

四、DOS与Linux的换行符

我们利用cat -A来观察DOS(Windows系统)建立的特殊文件格式,可以发现DOS使用的换行符为 ^M$ ,我们称为CR与LF两个符号;而在Linux中,则仅有LF($)这个换行符。在开始执行Linux命令时,它的判断依据是“Enter”,而Linux的Enter为LF符号,不过,DOS的换行符是CRLF,就多了一个^M的符号,在这样的情况下,如果是一个shell脚本的程序文件,将可能造成“程序无法执行”的状态。

因为换行符以及DOS与Linux操作系统中一些字符的定义不同,因此,不建议在Windows系统中将文件编辑好之后,才上传到Linux系统,这样容易发生错误。而且,如果在不同系统之间复制一些纯文本文件时,千万要用unix2dos或dos2unix来转换格式。

dos2unix [-kn] file [newfile]
unix2dos [-kn] file [newfile]
参数:
-k :保留该文件原来的mtime时间格式(不更新文件上次内容经过修改的时间)
-n :保留原来的旧文件,将转换后的内容输出到新文件,如 dos2unix -n old new

根据鸟哥的Linux私房菜基础学习篇(第二版)整理,供大家学习使用

如果对你有帮助,动动手指点个赞吧~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海是倒过来的天呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值