复习_vim笔记

一、vi的使用

1、vi分为三种模式

一般模式:默认进入的。可以上下左右键移动光标,删除字符/删除整行,复制粘贴

编辑模式:按下[i,I,o,O,a,A,r,R]进入编辑模式,当按下这些按键时,会出现INSERT字样。按[Esc]可退出编辑模式,回到一般模式。

命令行模式:输入[:或/或?]中的任何一个,就可以进入命令行模式,可以在最底下一行输入命令。同样按ESC退出命令行模式,回到一般模式。

 

注意:只有一般模式可以与编辑模式、命令行模式切换,编辑模式与命令行模式之间不可以切换。

 

2、如何用vi简单的编辑一个文件:

(1)[root@server1 ~]# vi test.txt ##vi 文件名 进入vi的一般模式,文件存在则打开,不存在则创建,但是创建的文件只有在命令输入wq保存退出后才会真正的保存,否则这个文件是不会存在的

进入vi编辑器后,上半部分显示的是文件的内容,最底下一行显示的是文件的信息。

                  

这表示vi打开的文件名为test.txt,是一个新文件。

(2)按下i进入编辑模式

   

左下角出现-- INSERT --字样,表示现在可以进行编辑

   

(3)编辑完成后,按ESC回到一般模式

(4)按 : 进入命令行模式

(5)输入wq,即可保存退出编辑文件

   

注意:当保存退出时,如果提示不能保存退出,可以使用 wq! 强制保存退出。

(6)可以使用ls -l 查看test文件已被建立,且属性如下:

[root@server1 ~]# ls -l test.txt

-rw-r--r-- 1 root root 125 Aug 15 21:49 test.txt

(7)可以使用cat命令查看文件的内容是否如编辑的一样:

   

二、按键功能(有:的是表示要在命令行模式中输入的命令)

1、一般模式

   移动光标

h/<-- 键 光标向左移动一个字符

j/向下箭头键 光标向下移动一个字符

k/向上箭头键 光标向上移动一个字符

l/向右箭头键 光标向右移动一个字符

如果想要多次移动的话,如移动n行,可以使用nj组合按键。

ctrl + f 屏幕向下移动一页,=PgDn按键

ctrl + b 屏幕向上移动一页,=PgUp按键

ctrl + d 屏幕向下移动半页

ctrl + u 屏幕向上移动半页

+ 光标移动到非空格符的下一列

- 光标移动到非空各符的上一列

n<space> 光标向右移动这一行的n个字符。如20<space>

0/Home键 移动到这一行首

$/End键 移动到这一行尾

H 光标移动到这个屏幕的第一行的第一个字符

M 光标移动到这个屏幕的中央那一行的第一个字符

L 光标移动到这个屏幕的最下方那一行的第一个字符

G 移动到这个文件的最后一行

nG 移动到这个文件的第n行,如20G,移动到第20行

gg 移动到这个文件的第一行

n<Enter> 光标向下移动n行

   搜寻与取代

/word 在文件中向下寻找一个名称尾word的字符串,如/root

?word 在文件中向上寻找一个名为word字符串

n 重复前一个搜寻的动作

N 反向进行一个搜索动作,如?root之后,按下N则表示向下寻找关键字

:n1,n2s/word1/word2/g 在第n1行和第n2行之间寻找word1这个字符串,并将其改word2,例如在100到200行之间将root改为server:100,200s/root/server/g

:1,$s/word1/word2/g 从第一行到最后一行寻找word1字符串,并将其改为word2

:1,$s/word1/word2/gc 从第一行到最后一行寻找word1字符串,并将其改为 word2,且在更改前会询问用户是否确认更改

   删除、复制、粘贴

x,X 在一行中,x向后删除一个字符,X向前删除一个字符

nx 连续向后删除n个字符,例如:10x,向后删除10个字符

dd 删除光标所在的一整行

ndd 删除光标所在的向下n行

d1G 删除光标所在到第一行的所有数据

dG 删除光标所在到最后一行的所有数据

d$ 删除光标到该行的最后一个字符

d0 删除光标所在到该行的行首

yy 复制光标所在那一行

nyy 复制光标所在向下n行

y1G 复制光标所在列到第一列的所有数据

yG 复制光标所在列到最后一列的所有数据

y0 复制光标所在的字符到该行行首的所有数据

y$ 复制光标所在的字符到该行行尾的所有数据

p,P p在光标所在下一行粘贴,即如果光标在第10行,则从第11 行开始粘贴

    P在光标所在上一行粘贴,即如果光标在第10行,则从第9 行开始粘贴,原来的第10行会在粘贴的内容后面

J 将光标所在列与下一列的数据合成一列

c 重复删除多个数据,例如:向下删除10行:10cj

u 复原前一个动作,例如撤销删除

ctrl + r 重做上一个动作

. 小数点,重复前一个动作,如重复删除,粘贴等

2、进入编辑模式

i,I i: 从光标所在出插入

I: 从光标所在行的第一个非空个符出插入

a,A a:从光标所在的下一个字付处开始插入

A:从光标所在行的最后一个字符插入

o,O o:在光标所在的下一行插入

O:在光标所在的上一行插入

r,R r只会取代光标所在的那个字符一次

R:一直取代光标所在的字符,直到按下ESC键

3、命令行模式

:w 将编辑的数据写入硬盘文件中

:w! 当文件属性尾只读时,强制写入文件。到底能不能写入,最终取决于用户对该 文进的文件权限

:q 退出vi

:q! 若修改过文件,但是不想保存,可使用强制退出

:wq 保存退出。wq!为强制保存退出

ZZ 若文件没有被修改,则不保存退出;若文件被修改,则保存退出

:w [文件名] 将编辑的数据保存为另一个文件

:r [文件名] 在编辑的数据中,读如林和一个文件的数据

:n1,n2 w [filename] n1到n2的内容保存到filename这个文件中

:! command 暂时离开vi到指令列模式下执行command的显示结果。例如::!ls /home即可在vi中查看/home底下ls命令输出的文件信息

vim环境的设置

:set nu 显示行号

:n 数字n,跳到指定的第n行

:set nonu 取消行号

 

3、练习

(1)请在 /tmp 这个目录下建立一个名为 vitest 的目录;

[root@server1 ~]# cd /tmp/

[root@server1 tmp]# mkdir vitest

[root@server1 tmp]# ls -d vitest/

vitest/

(2)进入 vitest 这个目录当中;

[root@server1 tmp]# cd vitest/

[root@server1 vitest]# ls

[root@server1 vitest]#

(3)将 /etc/man.config 复制到本目录底下;

[root@server1 vitest]# cp /etc/ma ##按两下tab键可以查看ma开头的有哪些文件

magic       mailcap     makedev.d/  man.config  

[root@server1 vitest]# cp /etc/ma

magic       mailcap     makedev.d/  man.config  

[root@server1 vitest]# cp /etc/man.config . ##cp复制文件到当前目录,.表示当前目录

[root@server1 vitest]# ls

man.config

[root@server1 vitest]#

(4)使用 vi 打开本目录下的 man.config 这个档案;

[root@server1 vitest]# vi man.config

 

(5)在 vi 中设定一下行号;

 :set nu

(6)移动到第 58 行,向右移动40 个字符,请问你看到的双引号内是什么目录?

58G ##移动到58行

40l ##向右移动40个字符

 

目录为:/dir/bin/foo

(7)移动到第一行,并且向下搜寻一下『 bzip2 』这个字符串,请问他在第几行?

gg/1G ##移动到第一行

/bzip2 ##搜寻字符串bzip2

 

在第137行

(8)接着下来,我要将 50 到 100 行之间的『小写 man 字符串』改为『大写 MAN 字符串』,并且一个一个挑选是否需要修改,如何下达指令?如果在挑选过程中一直按『y』, 结果会在最后一行出现改变了几个 man 呢?


 :50,100s/man/MAN/gc

按一次y会更改一处

若一直按y,最后会显示在52行内,置换63个man

(9)修改完之后,突然反悔了,要全部复原,有哪些方法?

a、一直按u还原

b、:q!强制不保存退出,在重新读取文件内容

(10)我要复制 65 到 73 这九行的内容(含有 MANPATH_MAP),并且贴到最后一行之后;

:65 ##将光标移动到第65行

9yy ##向下复制9行

 

G ##移动到文件的最后一行

p ##向下粘贴

 

(11)21 到 42 行之间的开头为 # 符号的批注数据我不要了,要如何删除?


42-21+1=22行

22dd

 

会发现原来的43行变成了现在的21行

(12)将这个档案另存成一个 man.test.config 文件名;


:w man.test.config


(13)去到第 27 行,并且删除 15 个字符,结果出现的第一个单词是什么?

:27

 

15x

 

结果出现的第一个单词是you

(14)在第一行新增一行,该行内容输入『I am a student...』;

gg/1G

 

O(大写的O) ##向上插入一行

 

(15)储存后离开吧!

:wq

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值