马哥教育N22期第六周作业

关于vim编辑器使用方法整理

编辑器分为文本编辑器、全屏编辑器、模式化编辑器

vim是最常用的编辑器之一,是vi的增强版

  • 基本模式分为编辑模式、命令模式、输入模式、末行模式

  • 下面我们介绍一下vim编辑器常用方法:

打开文件

vim +#:打开文件后,直接光标处于第#行行首
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配
+:处于尾部的行首
输入模式-->编辑模式:按键盘 ESC
编辑模式-->末行模式:按键盘shift+:
末行模式-->编辑模式:按键盘 ESC
编辑模式下:ZZ保存并退出
:q   退出
:q! 强制退出,不保存
:wq  保存并退出
:x   保存并退出
:w /PATH/TO/SOMEFILE 把文件内容输出到某路径的文件中(无需事先创建文件),相当于另存为

输入和编辑模式:

光标定位:
    - 字符间跳转:除了用上下左右键之外还可以通过h:左,j:下,k:上,i:右  来控制
    - 单词间跳转: w:下一个单词的词首;e:当前或后一个单词的词尾;b:当前或前一个单词的词尾;
    - 行首行尾跳转:^:跳转至行首第一个非空白字符;0:跳转至行首;$:跳转至行尾
    - 行间跳转: #G:跳转至由#指定的行;1G,gg:第一行; G:最后一行
    - 句间跳转:( )
    - 段间跳转: { }
    - 翻屏操作: Crtl+f:向文件尾部翻一屏
                Ctrl+b:向文件首部翻一屏
                Ctrl+d:向文件尾部翻半屏
                Ctrl+u:向文件首部翻半屏
                Enter:按行向后翻

编辑命令:

- 删除和替换命令:x:删除光标所在处的字符
                #x:删除光标所在处起始的#个字符
                xp:光标所在处字符与其后面的字符交换
                替换命令:rCHAR:替换光标所在处的字符
                删除命令:d:删除命令,可结合光标跳转字符,实现范围删除:
                d^/d$:删除光标所在处一直到行首或行尾的内容
                dw:删除单词
                de、db:删除光标所在处前、后的单词
                dd:删除光标所在处的行
- 粘贴和复制命令:p(小写):缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则粘贴至光标所在处的后方
                P(大写):缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则粘贴至光标所在处的后方
                y(yank,y):复制,工作类似于d命令 y$\y^\y0\ye\yw\yy
- 撤销和恢复命令:u:撤销之前操作
                Ctrl+r:恢复此前撤销操作

末行模式: 之前介绍了shift+:进入此模式,下面介绍一个常用方式

- 地址定界:$:最后一行
          #:特定的第#行,例如即第5行
          #,#:指定行范围,左侧为起始,右侧为结束
          #,+#:其实开始向后加#行例如3,3+7
          %:表示全文
          /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行
- 查找:/PARTTERN:从当前光标所在处向文件尾部查找能够被当匹配到的所有字符串
       ?PARTTERN:从当前光标所在处向文件首部查找能够被当前匹配到的所有字符串
       n:定位匹配到的字符串,下一个,与命令方向相同
       N:下一个,与命令方向不同(都可以循环查询)
- 查找替换:s:查询命令
           s/要查找的内容/替换为的内容/修饰符
           可把分隔符'/'替换为其它非常用字符:@或#
           修饰符:
           i:忽略大小写;
           g:全局替换,意味着一行中如果匹配到多次,则均替换;
  • 以上是对vim编辑器的一些实用总结,更多内容需要自己查看资料

欢迎访问 我的博客

1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#

cp /etc/rc.d/rc.sysinit /tmp/
:%s@^[[:space:]]\+@#@
387 次替换,共 387 行

2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;

cp /boot/grub/grub.conf /tmp/
:%s@^[[:space:]]\+@@
3 次替换,共 3 行

3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符

:%s@^#[[:space:]]@@
38 次替换,共 38 行

4、为/tmp/grub.conf文件中前三行的行首加#号;

:1,3 s/^/#&
3 次替换,共 3 行

5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;

:%s@\(enabled\|gpgcheck\)=0@\1=1@g

6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202

0 */4 * * * cp -rf /etc /home/xuc/backup/etc-`date +%Y%m%d%H%M`

7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402

* * * * 2,4,6 cp -rf /var/log/messages /backup/messages-`date +%Y%m%d%H%M`

8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中

 0 */2 * * *cat /proc/meminfo |egrep '^S' >> /tmp/stats/memory.txt

**9、工作日的工作时间内,每两小时执行一次echo ""howdy"" 脚本编程练习

* 9-18/2 * * * echo "howdy"

10、创建目录/tmp/testdir-当前日期时间;

[root@localhost tmp]# mkdir testdir-`date +%F-%T`
[root@localhost tmp]# ll |grep test
drwxr-xr-x. 2 root root    6 Sep 14 06:00 testdir-2016-09-14-06:00:44

11、在此目录创建100个空文件:file1-file100

#!/bin/bash
#
for((i=1;i<=100;i++));do
        touch file$i
done
[root@localhost testdir-2016-09-14-06:00:44]# ls
addfile.sh  file19  file3   file40  file51  file62  file73  file84  file95
file1       file2   file30  file41  file52  file63  file74  file85  file96
file10      file20  file31  file42  file53  file64  file75  file86  file97
file100     file21  file32  file43  file54  file65  file76  file87  file98
file11      file22  file33  file44  file55  file66  file77  file88  file99
file12      file23  file34  file45  file56  file67  file78  file89
file13      file24  file35  file46  file57  file68  file79  file9
file14      file25  file36  file47  file58  file69  file8   file90
file15      file26  file37  file48  file59  file7   file80  file91
file16      file27  file38  file49  file6   file70  file81  file92
file17      file28  file39  file5   file60  file71  file82  file93
file18      file29  file4   file50  file61  file72  file83  file94

12、显示/etc/passwd文件中位于第偶数行的用户的用户名;

#!/bin/bash
#
declare -i num
num=`cat /etc/passwd |wc -l`
for((i=2;i<=$num;i+=2));do
        head -$i /etc/passwd |tail -1 |cut -d: -f1
done

[root@localhost testdir-2016-09-14-06:00:44]# bash evennumber.sh
bin
adm
sync
halt
operator
ftp
systemd-bus-proxy
dbus
abrt
tss
usbmuxd
saslauth
rpc
chrony
qemu
rpcuser
avahi-autoipd
sssd
gdm
sshd
postfix
xuc
visitor
user1

13、创建10用户user10-user19;密码同用户名;

#!/bin/bash
#
for i in {10..19};do
        id user$i &> /dev/null || useradd user$i
        echo "user$i" |passwd --stdin user$i
done

[root@localhost xuc-scripts]# bash -x adduser.sh 
+ for i in '{10..19}'
+ id user10
+ passwd --stdin user10
+ echo user10
Changing password for user user10.
passwd: all authentication tokens updated successfully.
+ for i in '{10..19}'
+ id user11
+ echo user11
+ passwd --stdin user11
Changing password for user user11.
passwd: all authentication tokens updated successfully.
+ for i in '{10..19}'
+ id user12
+ echo user12
+ passwd --stdin user12
Changing password for user user12.
passwd: all authentication tokens updated successfully.
+ for i in '{10..19}'
+ id user13
+ echo user13
+ passwd --stdin user13
Changing password for user user13.
passwd: all authentication tokens updated successfully.
+ for i in '{10..19}'
+ id user14
+ echo user14
+ passwd --stdin user14
Changing password for user user14.
passwd: all authentication tokens updated successfully.
+ for i in '{10..19}'
+ id user15
+ echo user15
+ passwd --stdin user15
Changing password for user user15.
passwd: all authentication tokens updated successfully.
+ for i in '{10..19}'
+ id user16
+ echo user16
+ passwd --stdin user16
Changing password for user user16.
passwd: all authentication tokens updated successfully.
+ for i in '{10..19}'
+ id user17
+ echo user17
+ passwd --stdin user17
Changing password for user user17.
passwd: all authentication tokens updated successfully.
+ for i in '{10..19}'
+ id user18
+ echo user18
+ passwd --stdin user18
Changing password for user user18.
passwd: all authentication tokens updated successfully.
+ for i in '{10..19}'
+ id user19
+ echo user19
+ passwd --stdin user19
Changing password for user user19.
passwd: all authentication tokens updated successfully.

**14、在/tmp/创建10个空文件file10-file19; **

#!/bin/bash
#
for i in {10..19};do
        touch /tmp/file$i
done
~        
[root@localhost xuc-scripts]# bash -x touch_nonefile.sh 
+ for i in '{10..19}'
+ touch /tmp/file10
+ chown user10:user10 /tmp/file10
+ for i in '{10..19}'
+ touch /tmp/file11
+ chown user11:user11 /tmp/file11
+ for i in '{10..19}'
+ touch /tmp/file12
+ chown user12:user12 /tmp/file12
+ for i in '{10..19}'
+ touch /tmp/file13
+ chown user13:user13 /tmp/file13
+ for i in '{10..19}'
+ touch /tmp/file14
+ chown user14:user14 /tmp/file14
+ for i in '{10..19}'
+ touch /tmp/file15
+ chown user15:user15 /tmp/file15
+ for i in '{10..19}'
+ touch /tmp/file16
+ chown user16:user16 /tmp/file16
+ for i in '{10..19}'
+ touch /tmp/file17
+ chown user17:user17 /tmp/file17
+ for i in '{10..19}'
+ touch /tmp/file18
+ chown user18:user18 /tmp/file18
+ for i in '{10..19}'
+ touch /tmp/file19
+ chown user19:user19 /tmp/file19

15、把file10的属主和属组改为user10,依次类推。

#!/bin/bash
#
for i in {10..19};do
        touch /tmp/file$i &> /dev/null
        chown user$i:user$i /tmp/file$i
done
~                      
[root@localhost xuc-scripts]# bash -x touch_nonefile.sh 
+ for i in '{10..19}'
+ touch /tmp/file10
+ chown user10:user10 /tmp/file10
+ for i in '{10..19}'
+ touch /tmp/file11
+ chown user11:user11 /tmp/file11
+ for i in '{10..19}'
+ touch /tmp/file12
+ chown user12:user12 /tmp/file12
+ for i in '{10..19}'
+ touch /tmp/file13
+ chown user13:user13 /tmp/file13
+ for i in '{10..19}'
+ touch /tmp/file14
+ chown user14:user14 /tmp/file14
+ for i in '{10..19}'
+ touch /tmp/file15
+ chown user15:user15 /tmp/file15
+ for i in '{10..19}'
+ touch /tmp/file16
+ chown user16:user16 /tmp/file16
+ for i in '{10..19}'
+ touch /tmp/file17
+ chown user17:user17 /tmp/file17
+ for i in '{10..19}'
+ touch /tmp/file18
+ chown user18:user18 /tmp/file18
+ for i in '{10..19}'
+ touch /tmp/file19
+ chown user19:user19 /tmp/file19

原创文章,作者:N22_熊宝,如若转载,请注明出处:http://www.178linux.com/49754

(0)
N22_熊宝N22_熊宝
上一篇 2016-10-09
下一篇 2016-10-09

相关推荐

  • vim文件编辑器

       vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。 vim功能十分强大,具有很多有优点: 所有的unix like系统都会内置vi文本编辑器,其他的文本编辑器则不一定会有 很多软件的编…

    Linux干货 2016-08-11
  • 【招聘需求】高级运维工程师/上海虹口区/待遇20k左右

    上海虹口区/待遇20k左右 有意向者发简历至@管家邮箱 邮件名是:[求职]Net-姓名-花名-工作年限 岗位职责:1、降低技术壁垒,建设运维工具、运维平台,实现运维自动化,包括 运维自动化、配置管理中心等。2、具备前瞻性,带领运维技术团队完成业务支撑,负责定位、分析、跟踪和相协调处理重大事故,使之对业务影响降至最低。3、技术支持、培训、知识库建设。4、运维接…

    Linux干货 2015-03-12
  • 常用的shell命令

    硬件: 1.cpu相关 lscpu:查看cpu的统计信息 cat /proc/cpuinfo :查看cpu详细信息,如每个cpu的型号 2.内存相关 free -m:概要查看内存情况,这里的单位是MB cat  /etc/meminfo   :查看内存详细信息 3.磁盘相关: l…

    Linux干货 2016-08-22
  • N25-第13周博客作业

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程)   1)共享名为shared,工作组为magedu;   2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名; &n…

    Linux干货 2017-05-21
  • Shell脚本-循环基础

    Shell脚本-循环基础 背景: 正在学习Shell脚本之循环,发现Shell的循环和其他编程语言大同小异,逻辑上都是相通的,但在使用格式上却有点不同,在学习完Shell循环后,将学习的心得体会记录下来,以备今后复习。 介绍: 什么是Shell脚本:       shell script是利用shell的功能…

    2017-08-26
  • 高级文件系统之-LVM管理

    lvm应用 lvm的重点在于可以弹性的调整filesystem的容量! 而并非在于数据的存储效率及安全上面。 需要文件的读写效能或者是数据的可靠性是RAID所考虑的问题。 lvm:逻辑卷管理器 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小 允许在多个物理设备间重新组织文件系统 将设备指定为物理卷 用一个或者多个物理卷来创建一个卷组 物理卷是用固定…

    Linux干货 2016-09-02

评论列表(1条)

  • luoweiro
    luoweiro 2016-10-11 23:48

    作业整理的非常详细,对于vim还是希望能多加运用,熟能生巧。