20180618 Task 5.1 —— 5.7

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

5.1 vim 介绍
  1. 之前使用的 vi 和现在的 vim 一样的用法,
vim是vi的升级版本

 vim是带有颜色显示的

 安装 vim : yum install -y vim-enhanced

 一般模式、编辑模式、命令模式
  1. vim 和 vi 的区别 1.1 vi 不带色 , vim 带色

vi

vim

  1. vim 分为三种模式: 2.1 一般模式, 在没进入编辑模式之前的模式, 可以删除, 复制, 剪切, 粘贴等 2.2 编辑模式, 对文档进行编辑 2.3 命令行模式, 在文档中搜索, 查找与替换; 包括 :wq 也属于命令模式
5.2 vim 颜色显示和移动光标
相同的文件在不同的路径下可能会不显示颜色, 不同的名称也会显示不同的颜色
文档中有语法等特殊用法时: shell,python 等

示例如下

mark

不过有些文件在不同的路径下一样会有显示

mark

1.1 对 /tmp/passwd 文件进行操作

## 模仿写一行 再复制篇尾的一行到篇首
[root@arron-01 ~]# vim /tmp/passwd

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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin

## 更改如下 
[root@arron-01 ~]# vim /tmp/passwd

#jesus:x:1:3:arron:arron:/sbin/nologin
#chrony:x:998:996::/var/lib/chrony:/sbin/nologin 
......

1.1.1 再次进入该文档, 发觉只有颜色显色

mark

1.2 更改文档名称, 再查看文档的颜色

mark

1.3 文档中的语法

mark

1.4 综上, 文档在 vim 命令打开的情况下, 跟注释符, 文档中的特殊语法和文档的名称等有关系

  1. vim 的配置文件: /etc/vimrc , 可以在 /etc/vimrc 中更改配置文件; 同时, 也可以在 /root/.vimrc 文件中对高级的用法(自动缩进, 语法高亮等)进行写入, /root/.vimrc 默认是不存在的
[root@arron-01 ~]# vim /etc/vimrc

if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
   set fileencodings=ucs-bom,utf-8,latin1
endif
.......
5.3 vim 一般模式下移动光标
  1. 一般模式下的命令 :
按键作用
h 或者向左的方向键光标向左移动一个字符 (支持数字, nh)
l (小写字母 l) 或者向右的方向键或空格键光标向右移动一个字符**(支持数字, nl)**
k 或者向上的方向键光标向上移动一个字符 (支持数字, nk)
j 或者向下的方向键光标向下移动一个字符 (支持数字, nj)
Ctrl + B (CTRL+Back)文本页面向前翻一页
Ctrl + F (CTRL+Front)文本页面向后翻一页
数字 0 或者 shift + 6移动到本行行首, shift+6 移动到该行有字符串的行首, 0 移动到顶格的行首
Shift + 4移动到本行行尾
gg移动到首行
G移动到尾行
nG (n 是任意数字)移动到第 n 行

P.S: vim 命令下文档右下角的标示

vim 标示

5.4 一般模式下复制剪切粘贴
  1. 一般模式下, 还可以实现字符或字符串的复制, 删除, 粘贴等操作
按键作用
x (小写 x) 和 X (大写 X)x (小写 x ) 表示向后删除一个字符, X (大写 X ) 表示向前删除一个字符
nx向后删除 n 个字符
dd删除/剪切光标所在的那一行
ndd (n 为 number 的缩写)删除/剪切光标所在行的之后的 n 行
yy复制光标所在行
p (小写p)从光标所在行开始, 向下粘贴已经复制或者粘贴的内容
P (大写P)从光标所在行开始, 向上粘贴已经复制或者粘贴的内容
nyy从光标所在行开始, 向下复制 n 行
u还原上一步操作, 最多 50次, 而 CTRL+R 是退回上一次还原
v按 v 后移动光标会选中指定字符, 然后可以实现复制、粘贴等操作

  1. 之前说的 dd 实际上是剪切,
5.5 进入编辑模式
  1. 编辑模式是可以编辑文本文档的模式,
按键作用
i**(小写 i)**在当前光标下插入
I (大写 I)在当前光标的行首插入
o (小写 o)从光标所在行的下一行写入
O (大写 O)从光标所在行的上一行写入
a (小写 a)在光标的后一个字符写入
A (大写 A)在光标所在行的行尾写入
R (大写 R)在选中的字符出替换, 按下 R 后, 文档左下方会出现 -- REPLACE --, 按 ESC 退出
5.6 vim 命令模式
  1. 命令模式
命令作用
/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
:w保存文本
:q退出 vim
:w!强制保存, 在 root 用户下, 即使文本只读也可以完成保存
:q!强制退出, 所有改动不生效
:wq保存并退出, 会同时更改文件的 mtime 和 ctime (保存的那刻), atime 不变
:x保存并退出, 会更改文件的 atime (保存的那刻), mtime 和 ctime 不变
:set nu显示行号
:set nonu不显示行号
:nohl不高亮

  1. /etc/dnsmasq.conf 做试验, /keyword , 按键 n 向下查找关键字, N 向上查找关键字
[root@mail ~]# cp /etc/dnsmasq.conf /tmp/ 
[root@mail ~]# vim /tmp/dnsmasq.conf 

## 输入 /dnsmasq , 按键 n 向下查找关键字, N 向上查找关键字 

文档底部的标识

mark

  1. ?keyword , 按键 n 向上查找关键字, N 向下查找关键字

  2. :n1,n2s/word1/word2/g , 从 n1 行到 n2 行的 word1 替换为 word2, 不加 g 就只替换行的第一个 word1, 加 g 就替换行所有的 word1 ;

## 全篇文档全局替换 
:1,$s/word1/word2/g 

## 特殊情况, 替换字符/目标字符中有 / 
:1,$s//etc/hosts/arronlinux.com/g vim 命令编辑器识别不了, 需要用到脱意符号 \  , 见如下, 在替换字符中在 / 前加上 \ , 但是有点乱 
:1,$s/\/etc\/hosts/arronlinux.com/g 

可以将字符连接符的 / 改为 # 或者 @, 见如下 
:1,$s#/etc/hosts#arronlinux.com#g 

  1. 在编辑模式下 , 输入: , 按向上的方向键, 可以调出之前输入的命令
5.7 vim 实践

1. vim实践操作

## part one 
# cp /etc/dnsmasq.conf  /tmp/1.txt

(1) 分别向下、向右、向左、向上移动6个字符(6j 6l 6h 6k)。
(2) 分别向下、向上翻两页(分别按两次ctrl+f和ctrl+b)。
(3) 把光标移动到第49行(49G)。
(4) 把光标移动到行尾,再移动到行首(Shift+4, Shift+6)。
(5) 移动到1.txt文件的最后一行(G)。
(6) 移动到文件的首行(gg)。
(7) 搜索文件中出现的“dnsmasq”,并数一下该字符串出现的次数(/dnsmsq 然后按n)。
(8) 把从第1行到第10行出现的dnsmasq替换成dns(:1,10s/dnsmasq/dns/g)。
(9) 还原上一步操作(u)。
(10) 把整个文件中所有的etc替换成cte(:1,$s/etc/cte/g)。 

## part two 
(11) 把光标移动到第25行,删除字符串 “ly”(25G 然后按l向右移动光标找到"ly",按v选中,然后按x)。
(12) 还原上一步操作(u)。
(13) 删除第50行(50G dd)。
(14) 还原上一步操作(u)。
(15) 删除第37-42行的所有内容(37G 6dd)。
(16) 还原上一步操作(u)。
(17) 复制第48行的内容并粘贴到第52行下面(48G yy 52G p)。
(18) 还原上一步操作(u)。
(19) 复制第37-42行的内容并粘贴到第44行上面(37G 6yy 44G P)。 

## part three 
(20) 还原上一步操作(按u)。
(21) 把第37-42行的内容移动到第19行下面(37G 6dd 19G p)。
(22) 还原上一步操作(按u)。
(23) 把光标移动到首行,把第1行内容改为“#!/bin/bash”(先按gg,把光标定位到第1行,然后按字母A,进入编辑模式,同时>光标到行末尾,进行修改操作,完成后按ESC)。
(24) 在第1行下面插入新的一行,并输入“# Hello!”(按o进入编辑模式,同时光标向下另起一行,输入“# Hello!”)。
(25) 保存文档并退出(按Esc键,输入“:wq”)。 

如果实在不记得是否是文档最初的样子, ESC --> :e! 就可以了

  • /etc/dnsmasq 只适用于 云(我用阿里云试了是 OK 的, 不知道其他云如何)
  1. part one
10) 把整个文件中所有的etc替换成cte
[root@mail ~]# vim /tmp/1.txt 
## 输入如下字符串
:1,$s/etc/cte/g

## 显示如下
16 substitutions on 16 lines
  1. part two
11) 把光标移动到第25行,删除字符串 “ly”
## 输入如下内容
:25,25s/ly//g
## 显示如下
# which can trigger dial-on-demand links needless.

### 原句如下 
# which can trigger dial-on-demand links needlessly.

13) 删除第50行
#no-poll ## 50th line
## 50G + D , 或者 50G + dd; 前者会删除光标处后边的字符, 如果是行首, 会删除整行, 后者不管光标在哪里整行都会删除 

15) 删除第37-42行的所有内容 
## 输入 37G后, 再 6dd 
# servers it knows about and tries to favour servers to are  known
# to  be  up.  Uncommenting this forces dnsmasq to try each query
# with  each  server  strictly  in  the  order  they   appear   in
# /etc/resolv.conf
#strict-order

17) 复制第48行的内容并粘贴到第52行下面
## 48G --> yy --> 52G --> P (大写 P) , 结果如下

48 # If you don't want dnsmasq to poll /etc/resolv.conf or other resolv
 49 # files for changes and re-read them then uncomment this.
 50 #no-poll
 51 
 52 # If you don't want dnsmasq to poll /etc/resolv.conf or other resolv
 53 # Add other name servers here, with domain specs if they are for

3. part three

21) 把第37-42行的内容移动到第19行下面 
## 37G --> dd --> 19G -- > p
 20 # servers it knows about and tries to favour servers to are  known
 21 # to  be  up.  Uncommenting this forces dnsmasq to try each query
 22 # with  each  server  strictly  in  the  order  they   appear   in
 23 # /etc/resolv.conf
 24 #strict-order
 25 

23) 把光标移动到首行,把第1行内容改为“#!/bin/bash” 
## gg --> D --> i --> 输入 #!/bin/bash 
或者 :1,1s@.*@#!/bin/bash@g

转载于:https://my.oschina.net/u/3869385/blog/1831680

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值