2018-05-23 课后笔记

预习内容

5.1 vim介绍
5.2 vim颜色显示和移动光标
5.3 vim一般模式下移动光标
5.4 vim一般模式下复制、剪切和粘贴
5.5 进入编辑模式
5.6 vim命令模式
5.7 vim实践

 5.1 vim介绍

我们之前用过vi命令,他是linux中必不可少的工具。早期的unix都是使用vi作为系统默认的编辑器。但是vi和vim有区别的,其实vim是vi的升级版,很多linux系统管理员都习惯用vi,因为我们接触linux时用的就是vi,vim到后来才比较流行。

vi和vim的最大区别就是编辑一个文本时vi不会显示颜色,而vim会显示颜色,显示颜色更便于用户编辑,但其他功能没有太大的区别。

如果没有vim命令,使用命令安装它,如下:

yum install -y vim-enhanced 

 

 5.2 vim颜色显示和移动光标

首先我们cp一下/etc/passwd文件到/tmp下,

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

然后我们vimpasswd文件会看到文本是带颜色显示的。

我们在再次进去我们刚才拷贝的文件,vim /tmp/passwd,会看到没有显示颜色。

这是因为/etc/passwd的文件属性就是带颜色显示的,有些文件是cp到一个目录下,是没有显示颜色的,有些是显示颜色的。但是我们也可以把vim /tmp/passwd这个文件改一下名字改为passwd.sh就会带颜色显示。示例如下:

我们同样看到了改为passwd.sh文件就会显示颜色,只不过跟我们/etc/passwd文件颜色没有显示的那么漂亮。我们还可以这么在文本中最前面一行加入#号也会显示颜色。示例如下:

我们这种方法也会显示颜色,只不过是单纯的蓝颜色。

5.3 vim一般模式下移动光标

 当我们使用vim filename 编辑文件时,默认进入该文件的一般模式。在这个模式下,你可以做的操作有:上下移动光标,删除某个字符,删除某行以及某个复制粘贴一行或者多行。首先我们进入vim /tmp/passwd,该模式就是一般模式。

  • 在一般模式下,我们可以移动光标的位置,操作方法如下表:
按键作用
h或者向左的方向键光标向左移动一个字符      
l (小写字母l)或者向右的方向键  光标向右移动一个字符 
k或者向上的方向键光标向上移动一个字符 
j或者向下的方向键光标向下移动一个字符 
Ctrl+B文本页面向前翻一页
Ctrl+F文本页面向后翻一页
数字0或者Shift+6移动到本行行首
Shift+4移动到本行行尾
gg移动到首行
G移动到尾行
nG(n是任意数字)移动到第n行
Shift+o(字母o)直接在首行上面加一行并且进入编辑模式

举例nG的用法,示例如下:

我们输入12G,直接跳到12行的位置,在右下角会显示当前是多少行。

  • 在一般模式下,我们还可以实现字符或字符串的复制,粘贴,删除等操作。如下表:
按键                                                                           作用
x和Xx表示向后删除一个字符,X表示向前删除一个字符
nx向后删除n个字符
dd删除/剪切光标所在的那一行
ndd(n为number的缩写)                     删除/剪切光标所在行之后的n行
yy复制光标所在行
p从光标所在行开始,向下粘贴已经复制或者粘贴的内容
P(大写P)从光标所在行开始,向上粘贴已经复制或者粘贴的内容
nyy从光标所在行开始,向下复制n行
u还原上一步操作
v按v后移动光标会选中指定字符,然后可以实现复制,粘贴等操作
Ctrl+r返回

简单举几个例子用法:

dd:我们使用dd命令删除bin开头的一行。

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin

nx:我们使用4n删除掉4个字符

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

ndd:我们使用2dd删除root这二行

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

yy和p:我们使用yy复制这一行,然后按键p向下粘贴复制的一行。

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

v:我们使用v键之后,开始按方向键,实现复制到那个位置

5.5 进入编辑模式

 在一般模式下不可以修改某个字符,如果要修改字符,只能进入编辑模式。从一般模式进入编辑模式,只需按i、I、a、A、o、O、r和R中的某一个键即可。当进入编辑模式,在屏幕的尾行会显示INSERT或REPLACE的字样(如果centos支持中文,则会显示“插入”)。从编辑模式回到一般模式,只需按esc键即可,如下表:

按键 作用
  i                              在当前字符前插入
 I在光标所在行的行首插入
 a在当前字符后插入
 A在光标所在行的行尾插入
 o在当前行的下一行插入新的一行
 O在当前行的上一行插入新的一行

 5.6 vim命令模式

在一般模式下,输入:或者/即可进入命令模式。在该模式下,我们可以搜索某个字符或者字符串,也可以实现保存,替换,退出,显示行号等操作。如下表:

命令    作用
/word                                  在光标之后查找一个字符串word,按n向后继续搜索
?word 在光标之前查找一个字符串word,按n向前继续搜索
:n1,n2s/word1/word2/g      在n1和n2行之前查找word1并替换为word2,不加g则只替换每行的第一个word1
:1,$s/word1/word2/g 

 将文档中所有的word1替换为word2,不加g则会替换每行的第一个word1

n 向下查找
Shift+nx向上查找

举例说明:

/word  我们输入/bin然后回车,会显示bin的所有字符。

?word:我们光标定位在红色箭头指示的位置,然后我们查找root,会显示在光标之前的所有的root字符。

:n1,n2s/word1/word2/g:我们把第一行到第12行,所有的bin替换为hongwei,图片中箭头指示的就是替换之后的显示。

:1,$s/word1/word2/g。使用1,$s表示从第一行到最后一行就是所有的bin字符改为hongwei

  • 命令模式的其他功能,如下表:
命令 作用
:w                                                                保存文本
:q退出vim
:w!强制保存,在root用户下,即使文本只读也能完成保存
:q!强制退出,所有保存不生效
:wq保存并退出
:set nu显示行号
:set nonu不显示行号

举例说明:

:set nu。设置set no表示显示行号,不设置就nonu 

  3 #skokso:sdsd:/sdsd/sdsd/ttt
  4 root:x:0:0:root:/root:/hongwei/bash
  5 hongwei:x:1:1:hongwei:/hongwei:/shongwei/nologin
  6 daemon:x:2:2:daemon:/shongwei:/shongwei/nologin
  7 adm:x:3:4:adm:/var/adm:/shongwei/nologin
  8 lp:x:4:7:lp:/var/spool/lpd:/shongwei/nologin
  9 sync:x:5:0:sync:/shongwei:/hongwei/sync
 10 shutdown:x:6:0:shutdown:/shongwei:/shongwei/shutdown
 11 halt:x:7:0:halt:/shongwei:/shongwei/halt
 12 mail:x:8:12:mail:/var/spool/mail:/shongwei/nologin
 13 operator:x:11:0:operator:/root:/shongwei/nologin
 14 games:x:12:100:games:/usr/games:/shongwei/nologin
 15 ftp:x:14:50:FTP User:/var/ftp:/shongwei/nologin
 16 nobody:x:99:99:Nobody:/:/shongwei/nologin
 17 avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/shongwei/nologin
 18 systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/shongwei/nologin
 19 systemd-network:x:998:996:systemd Network Management:/:/shongwei/nologin
 20 dbus:x:81:81:System message bus:/:/shongwei/nologin
 21 polkitd:x:997:995:User for polkitd:/:/shongwei/nologin
 22 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/shongwei/nologin
 23 postfix:x:89:89::/var/spool/postfix:/shongwei/nologin
 24 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/shongwei/nologin
 25 ntp:x:38:38::/etc/ntp:/shongwei/nologin
 26 hongwei3:x:1003:1001::/home/liuhongweilinux:/shongwei/nologin
 27 hongwei4:x:1004:1004::/home/hongwei4:/hongwei/bash
 28 hongwei1:x:1005:1005::/home/hongwei1:/hongwei/ba hongwei:x:1006:1006::/home/hongwei:/hongwei/bash
 29 hongwei11:x:1007:1007::/home/hongwei11:/hongwei/bash
 30 test:x:1008:1008::/home/test:/hongwei/basr

 

vim编辑器里面一些不为人知的操作

1.vim编辑器的替换模式与可视模式
在一般模式下按键盘上的r和R进入替换模式。如果按小r那么这时候就进入了替换模式,你下一个输入的字符会把你当前光标所在处的字符替换,然后自动退出替换模式。如果你按的是大R那么你下面输入的所有字符会把后面的字符依次替换,直到按退出替换模式。

在一般模式下按键盘上的v和V进入可视模式。如果是按小v那么这时候就时入了视图模式,这时候你移动光标会把你光标所在处到光标结尾处的所有字符选中,这时候可以进行复制,删除等操作。如果是按大V同样也是进入了视图模式,这时候移动光标会把光标所在行到光标结尾的行的所有内容选中,也可以进行复制,删除等操作。

注意:使用在一般模式使用“ctrl+v”组合键可以进入块操作模式
在这个模式下和可视模式差不多,但是选择的内容不同,大家可实际操作看看
2.删除从光标所在处到行尾字符

在一般模式下输入大写“D”或者输入“d$”

3.删除从光标所在处到行首字符


在一般模式下输入大写“d^”


4.删除从光标所在行到文件末尾行


在一般模式下输入大写“dG”


5.删除指定范围内所有行

例:删除10到15行的所有内容
在一般模式下输入“:10,15d”回车

6.把正在编辑的文件另存为新文件

例:把正在编辑的文件另存为到“/root/”下面并保存为1.txt
在一般模式下输入“:w /root/1.txt”
例:把正在编辑的文件的第10行到第15行另存为1.txt并保存到root目录下在一般模式下输入“:10,15 w /root/1.txt”

7.把其它文件的内容导入到正在编辑的文件的光标所在处

例:把“/root/1.txt” 文件的内容,导入到下在编辑的文件的第10行下面
首先在一般模式下按“10G”把光标定位到第10行
然后按“o”小写,当前行的下面另起一行,并进入插入模式
最后按键盘上的返回到一般模式,再输入“:r /root/1.txt”回车

8.正在编辑文件时,不退出文件仍可以运行linux命令

列:我下在编辑一个文件,但这时候我想查看“/root/1.txt” 文件的内容,但是我不想退出我正在编辑的文件,那么我们可以这样
在编辑模式下输入“:! cat /root/1.txt

9.把命令的执行结果导入到正在编辑的文件的光标所在处

这题我们可以结合上面两题,在一般模式下输入“:r ! cat /root/1.txt”

10.查找替换的功能使用

例:在10到15行的行首增加“#”
在一般模式下输入“:10,15s/^/#/”
例:在10到15行的行首去掉“#”
在一般模式下输入“:10,15s/^#//”
例:在10到15行的行首增加“//”
在一般模式下输入“:10,15s/^/\/\//”或者“:10,15s@^@//@”或者“:10,15s#^#//#”


注意:在上面所有命令的最后面都可以加g或者c一起配合使用,g的意思是行中出现的所有指定字符都替换,但是如果加了g那么前面就不能出现位置定义字符,反之前面出现的位置定义字符,那么后面就不可以出现g。在后面加c可以跟用户交互,在查找到符合命令的字符提示用户是否替换,需要用户确认,否则不需要确认

11.把输入的指定字符替换为指定的字符

例:在编辑一个文档的时候,我要频繁的输入“abcdefghijklmnopqrstuvwxyz”这样的连续字符串,这时候我想只输入一个或者一串指定字符就可以替换为刚才的字符,比如我指定输入“aming”系统就会自动把“aming”替换成“abcdefghijklmnopqrstuvwxyz”
在一般模式下输入“:ab aming abcdefghijklmnopqrstuvwxyz”然后回车,再进入编辑模式,当你输入“aming”的时候就会发现自动替换成了“abcdefghijklmnopqrstuvwxyz”

12.快捷键的定义

例:我想在一般模式下按键盘上的ctrl+b快捷键,会自动在光标所在行的行首插入“#”号,然后自动退出到一般模式
在一般模式下输入“:map ctrl+v ctrl+b I # ”然后回车,这时候在一般模式按键盘上的ctrl+b的时候就会在光标所在的行首插入“#”号了

注意:命令中ctrl+v和ctrl+b是键盘上的组合键,不是输入进去的字符,是需要按的组合键,其中第一个ctrl+v就照按,第二个ctrl+b是要定义的快捷键,根据自己需要的设置按。然后“I”的意思就是一般模式下的“I”进入插入模式并将光标移动到行首,然后接着输入“#”号,后面“”的意思是退出编辑模式

13.同进编辑两个文件或者

例:我现正在编辑1.txt文件,然后我想再打开root目录下的2.txt同时编辑,并把窗口上下水平分隔,一起显示
在一般模式下输入“:new /root/2.txt”

例:我现正在编辑1.txt文件,然后我想再打开root目录下的2.txt同时编辑,并把窗口左右垂直分隔,一起显示
在一般模式下输入“:vsplit /root/2.txt”

注意:在一般模式下按“ctrl+w”组合键,再按左右,或者上下方向键,可以在不同窗口之间切换如果在一般模式下输入“:only”那么只保留当前正在编辑的窗口,其它全关闭


15.在vim查找关键字时不区分大小写

在一般模式下输入“:set ic”
如果想取消就输入“:set noic”

16.如何把文件设置成只读文件,只有强制保存时才能保存

在一般模式下输入“:set readonly”

17.把文件恢复到打开时的状态

在一般模式下输入“:e!”

18.配置文件的使用
以上那么多操作,像设置忽略大小写,设定快捷键,设定自动替换,等一些操作,当电脑重启后就没有了。这时候我们可以把这些命令写入配置文件,这样电脑重启后还是可以使用,我们有两种方法
第一种:所有用户都统一
修改“/etc/vimrc”文件,在末尾加入需要设置的命令,就是我红色标注的部分
第二种:只对当前用户
修改用户家目录下的“.vimrc”文件,注意有个点,这是隐藏文件,一般用户家下没有,需要自己手工创建

 链接 :http://www.apelearn.com/bbs/thread-9334-1-1.html

 分享几个vim里常用的快捷键

  1. 查看光标当前的man手册 shift+k
  2. d+f+字符
  3. 选中面积 v+t+字符
  4. 在vim里面删除光标后的所有字符 shift+d
  5. 删除当前光标上的单词 d+i+w
  6. 选中当前光标上的单词 v+i+w

链接:http://www.apelearn.com/bbs/thread-407-1-1.html

 vim 快速删除指定的一段字符

因为不是一行,所以用dd不行,但用x去删除的话,又太慢。今天从网上发现一种特别快速删除的方法。
那就是使用da,如何使用,请看下面的例子。
比如,我的hongwei.txt内容如下:

[root@localhost ~]# touch /tmp/hongwei.txt
[root@localhost ~]# vim /tmp/hongwei.txt
[root@localhost ~]# cat !$
cat /tmp/hongwei.txt
122222222222222222222222222222222jidjaodajdkjsadjksaljdlksajdlkjsalkdj
wadsadsadasdjksadlksajdkjsalkjdlksajdlkjsalkdjaslkjd
djkasjdlksajdljsalkjdklsajdkljsaldkj
dasjlkdlsakjdksaljdlkjsaldkjlsakjd
jldkjalkjlk3
333333333333333333333333333333333

我现在想删除122222222222和33333333333333333之间的字符只需要这样做:就是把222后添加上{字符,在333前面添加}字符。注意,之间没有空格的。

122222222222222222222222222222222{jidjaodajdkjsadjksaljdlksajdlkjsalkdj
wadsadsadasdjksadlksajdkjsalkjdlksajdlkjsalkdjaslkjd
djkasjdlksajdljsalkjdklsajdkljsaldkj
dasjlkdlsakjdksaljdlkjsaldkjlsakjd
jldkjalkjlk3}
333333333333333333333333333333333

把光标移动到第一个{,也就是最后一个2后,然后输入da{ 即可把{}内的字符全部删除。

122222222222222222222222222222222k333333333333333333333333333333333

另外,除了可以使用{ 外,还可以使用 ", ', (  等成对的特殊符号。

其实vim还有一个比较常用的那就是v了,用v和d来删除也挺方便的:
打开一个文本后,直接按v,然后移动光标可以选中文本,当选中完你想要的文本后,直接按d,就删除了

vim 粘贴代码自动缩进导致全乱了

用vim打开一个空白文档,然后把已经复制的代码给粘贴进来,发现它有自动缩进功能,最终导致粘贴的文本一行比一行靠右,看起来乱成一团。比较快的解决办法是,在粘贴文档前,在命令行模式下,输入

:set noai nosi

然后按'i' 进入编辑模式,再粘贴已经复制的代码内容,这样就不会自动缩进了。

有时候,这样的方法不好用,可以尝试这种:

:set paste

 客户端putty, xshell连接linux中vim的小键盘问题

在putty上用vi的时候,开NumLock时按小键盘上的数字键并不能输入数字,而是出现一个字母然后换行(实际上是命令模式上对应上下左右的键)。解决方法

选项Terminal->Features里,找到Disable application keypad mode,选上就可以了
在xmanager 4 中的xshell也有小键盘问题 解决方法为
修改session 属性 -> 终端->VT模式->初始数字键盘模式
选择 设置为普通。

 Linux用vim/vi给文件加密和解密

 

一、        利用 vim/vi 加密:
优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了;
缺点:很明显让别人知道加密了,容易让别人把加密的文件破坏掉,包括内容破坏和删除;

举个例子吧:
我们进入文件vim /tmp/hongwei.txt进入到编辑模式,输入完内容后按ESC,然后输入:X(注意是大写的X),回车;

idaljdlasjdlasldjlajsdsaldjasjd
asdlasjdljasldjlsajdlasjd;l
dsjlajdlajsldjsaldjla;djsa
adjlsajdsajdjsaljdlsajd
adjlasjd;lsajdajs
ajsldjasl;djl;sadj
asdjlsajd;lsajd
ajdlasjldjsa

~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
:X 


 这时系统提示让你输入密码,2次,如下所示:

~                                                                                                                                                   
输入密码: **********
请再输入一次: **********

保存后退出,现在这个文件已经加密了;

用cat或more查看文件内容,显示为乱码;

[root@localhost ~]# cat !$
cat /tmp/hongwei.txt
VimCrypt~01!4e·0ϰ`?+عẈÿ>hڨ8¨IJ   Q°݅«¨
                                    UR 
%zD£H	tAvDF鰘bՁ礕ʉ§mM½?¯炑KT?¾+Eіcs୻?º-p臨¦¿%䶖2LI٘➂4iŜ%£ІĮ²\ЗB%[Ī/`?k&[root@localhost ~]# Xshell

用 vim/vi 重新编辑这个文件,会提示输入密码,如果输入的密码不正确,同样会显示为乱码!

[root@localhost ~]# vim /tmp/hongwei.txt





























Need encryption key for "/tmp/hongwei.txt"
输入密码: 

注意:文件加密后,千万别忘了密码!
解密用vi加密的文件(前提是你知道加密的密码):
用 vim/vi 打开文件如text.txt,要输入正确的密码,然后在编辑时,将密码设置为空,方法是输入下面的命令:
:set key=
然后直接回车,保存文件后,文件已经解密了。

[root@localhost ~]# vim /tmp/hongwei.txt



idaljdlasjdlasldjlajsdsaldjasjd
asdlasjdljasldjlsajdlasjd;l
dsjlajdlajsldjsaldjla;djsa
adjlsajdsajdjsaljdlsajd
adjlasjd;lsajdajs
ajsldjasl;djl;sadj
asdjlsajd;lsajd
ajdlasjldjsa

~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
:set key=
[root@localhost ~]# vim /tmp/hongwei.txt

idaljdlasjdlasldjlajsdsaldjasjd
asdlasjdljasldjlsajdlasjd;l
dsjlajdlajsldjsaldjla;djsa
adjlsajdsajdjsaljdlsajd
adjlasjd;lsajdajs
ajsldjasl;djl;sadj
asdjlsajd;lsajd
ajdlasjldjsa

~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
~                                                                                                                                                   
"/tmp/hongwei.txt" 9L, 178C  

解密成功。
或者这样也行:
在正确打开文件后用 “:X” 指令,然后给一个空密码也可以。保存用“wq!”保存。
两种方法实际上效果是一样的。

转载于:https://my.oschina.net/u/3851487/blog/1817870

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值