vim編輯器練習&任務計劃&腳本編程練習

請詳細總結vim編輯器的使用并完成以下練習題

vim總結:

vi:Visual Interface,是一種文本編輯器,所謂文本數據是基于字符編碼的文件,常見的編碼有ASCII編碼,UNICODE編碼等等。

文本編輯器的種類:

 行編輯模式:所謂行編輯器是指一行一行來編輯處理的工具,如sed。
 全屏編輯器:編輯空間占據整個屏幕,如nano,vi。
VIM即Vi IMproved:vi的增強版,vim是模式化的編輯。
vim在工作過程中有三種模式:編輯模式(命令模式)、輸入模式、末行模式。
1、編輯模式:也叫命令模式,鍵盤操作被常被理解為編輯模式;
2、輸入模式:在文本文件當中進行輸入內容;
3、末行模式:vim內置的命令行接口,執行vim的內置命令。

vim的使用

打開文件
#vim[option]...[FILE]...

+#:打開文件后,直接讓光標處于第#行的行首;
例子:
~]# vim +2 functions

+/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首。
例子:
~]# vim +/functions functions

模式轉換

1、ESC鍵:可以從輸入模式轉換到編輯模式
2、從編輯模式-->輸入模式,可使用下面的命令:
 i:在光標所在處的前方轉換為輸入模式
 a:在光標所在的后方轉換為輸入模式
 o:在光標坐在的行的下方新建一個空行并轉換為輸入模式
 I:在光標所在行的行首輸入
 A:在光標所在行的行尾輸入
 O:在光標所在行的上方新建一個空白行
3、編輯模式-->末行模式:直接輸入冒號(:)即可在窗口的左下方顯示冒號;
4、末行模式-->編輯模式:敲擊ESC鍵
5、輸入-->編輯-->末行:輸入模式不能直接轉換到末行模式

退出文件

需要先切換到編輯模式之后才能退出,在切換到編輯模式后鍵入以下命令即可進行相關的操作:
 :q 退出
 :q! 不保存退出
 :wq 保存退出
 :x 保存退出
 :wq! 強制保存退出
 :w /PATH/TO/SOMEWHERE
編輯模式保存退出的快捷鍵:ZZ

光標移動

 字符間移動:可以使用h,j,k,l鍵來進行光標的移動
  h:左
  l:右
  j:下
  k:上
同時還支持數字跳轉:#{h|j|k|l}:跳#個字符
例如:
10j 往下移動10行

 單詞間移動:可以使用w,e,b鍵來進行移動
  w:下一個單詞詞首
  e:當前單詞或下一個單詞詞尾
  b:當前單詞或前一個單詞詞首
  #{w|e|b}

 行內移動:
  ^:行首第一個非空白字符
  0:絕對行首
  $:絕對行尾

 句子間移動:
  )
  (

 段落間移動:
  {
  {

 行間移動:
 #G:直接跳轉至第#行
 G:最后一行
 1G,gg:第一行

vim的編輯命令

 x:刪除光標所在處的字符
 #x:刪除光標出起始的#個字符
 d:刪除命令,結合光標跳轉字符使用,刪除跳轉字符內的字符
  w,b,e,$,0,^
 dd:刪除光標所在的行
  #dd:多行刪除
 p:paste,黏貼
  p:緩沖區存的如果為整行,則黏貼于當前光標所在的行下方,否則,黏貼至當前光標所在處的后面;
  P:緩沖區存的如果為整行,則黏貼于當前光標所在的行上方,否則,黏貼至當前光標所在處的前面;
 y:yank,復制,結合光標跳轉字符使用,復制跳轉范圍內的字符
  w,b,e,$,0,^
 #y:復制從當前行向下#行內容
 Y:yy 復制行
 c:change,修改,結合光標跳轉字符使用,修改跳轉范圍內的字符
  w,b,e,$,0,^
  所謂修改就是先刪除,再轉換為輸入模式
  cc,C:刪除光標所在處的整行而后轉為輸入模式
   #cc

vim可視化模式:

 v:光標走過的字符
 V:光標走過的行
Note:經常結合編輯命令使用:d,c,y

撤銷編輯:
 u:undo,撤銷此前的操作
 #u:撤銷最近#次操作

撤銷此前的撤銷操作
 Ctrl+r

翻屏操作
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏

vim中的末行模式

1、內容定界:startpos,endops
 #:第#行
 #, #:從左側第#行到右側第#行
 #, +#:從左側第#行起,加上右側#表示的行數
 .:當前行
 $:最后一行
 %:全文,相當于1,$
 10,$-1
 /pat1/,/pat2/:從第一次被pat1模式匹配模式到的行開始,一直到第一次被pat2匹配到的行結束;
  #,/pat/:從第#行開始到第一次匹配到pat為止;
  /pat/,$:從第一次匹配到pat到最后一行;
  使用方法:后跟一個編輯密令c,d,y可以直接附加在地址范圍后使用;
 w /path/to/somefile:將選定范圍內的內容保存至某個文件中
 r /path/from/somefile:將指定的文件內容中的內容讀取到指定位置

2、查找
 /PATHERN:從當前光標所在處向文件尾部查找
 ?PATHERN:從當前光標走在處向文件首部查找
 在查找過程當中可以吃用n或者N來輔助查找
  n:與命令同方向查找
  N:與命令反方向查找

3、查找并替換
 s:在末行模式下完成查找替換操作
  s/查找模式/要替換成的內容/修飾符
   查找模式:可以使用正則表達式
   替換的內容:不能使用模式,僅能使用引用(如\1,\2...等后向引用符號;還可以使用“&”引用前面查找時查到的整個內容)
   修飾符:
i:忽略大小寫
g:全局替換;默認情況下,每一行只替換一次出現的內容;
查找替換中的分隔符/可以用其它沒有出現過的其它字符替代如:s@@@gi s###gi等
示例:
示例:
%s@\<t\([[:alpha:]]\+\)\>@T\1@g
%s@\<t[[:alpha:]]\+\>@&er@g
:.,$s@^[[:space:]]\+@@ 當前光標所在行至文本末尾替換

vim的多文件功能

多文件模式(一次打開多個文件)

 vim FILE1 FILE2 ...

 在文件間切換:
 :next 切換到下一個文件
 :previous 切換到上一個文件
 :last 切換到最后一個文件
 :first 切換到第一個文件

 退出所有文件:
 :wqall 保存所有文件并退出
 :wall
 :qall

多窗口模式
 多文件:(演示:vim -o a.txt b.txt)

 vim
  -o:水平分割
  -O:垂直分割
 在窗口間切換Ctrl+w,Arrow(上下左右箭頭)

 注意:單個文件也可以分割為多個窗口進行查看
 Ctrl+w,s:水平分割
 Ctrl+w,v:垂直分割

窗口屬性定義:

 :set nu顯示行號
 :set nonu 取消顯示行號
 :set ai 啟用自動縮進功能
 :set noai 取消自動縮進功能
 :set ic 忽略字符的大小寫
 :set noic 不忽略字符的大小寫
 :set sm 括號匹配
 :set nosm 取消括號匹配
 語法高亮: :syntax on|off
 搜索高亮:
  :set hlsearch
  :set nohlsearch
Note:末行模式中的窗口屬性只對當前vim進程有效,可通過修改下下面的配置文件進行定義:
 全局:/etc/vimrc
 用戶:~/.vimrc

1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;

~]# cp /etc/rc.d/rc.sysinit /tmp/
~]# vim /tmp/rc.sysinit

:%s@^[[:space:]]\+@#&@g

備注:
 替換的內容,不能使用模式,僅能使用引用(如\1,\2...等后向引用符號;還可以使用“&”引用前面查找時查到的整個內容;
 修飾符:g 全局替換;默認情況下,每一行只替換一次出現的內容。

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

~]# cp /boot/grub/grub.conf /tmp
~]# vim /tmp/grub.conf
:1,$s@^[[:space:]]@@g

3、刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少一個空白字符的行行的#和空白字符

:%s@^#[[:space:]]\+@@g

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

:1,3s@.*@#&@g

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

~]#mkdir /backup
~]#crontab -e
* */4 * * * /bin/cp -a /etc /backup/etc-$(date +%Y%m%d%H%M)

備注:cp -a 保留原文件的權限

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

~]#mkdir  -p /backup/messages_logs
~]#crontab -e
* * * * 2,4,6 /bin/cp -a /var/log/messages /backup/messages_logs/messages-$(date +%Y%m%d)

8、每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中

~]# mkdir -p /stats
~]# touch /stats/memory.txt
~]#crontab -e
* */2 * * * /bin/grep "^S" /proc/meminfo >> /stats/memory.txt

9、工作日的工作時間內,每兩小時執行一次echo "howdy"

~]#crontab -e
*  8-17/2  *  *  1-5 /bin/echo "howdy"

腳本編程練習

10、創建目錄/tmp/testdir-當前日期時間;

#!/bin/bash
#
mkdir /tmp/testdir-$(date +%Y%m%d%H%M)

#!/bin/bash
#
dirName=testidr-$(date +%Y%m%d%H%M)
mkdir /tmp/$dirName

11、在此目錄創建100個空文件:file1-file100

#!/bin/bash
#
dirName=testdir-$(date +%Y%m%d%H%M)
mkdir /tmp/$dirName
for i in {1..100};do
touch /tmp/$dirName/file$i
done

#!/bin/bash
#
dirName=testdir-$(date +%Y%m%d%H%M)
mkdir /tmp/$dirName
touch /tmp/$dirName/file{1..100}

12、顯示/etc/passwd文件中位于第偶數行的用戶的用戶名;

#!/bin/sh
#
line=$(cat /etc/passwd | wc -l)
for i in $(seq 2 2 $line);do
head -$i /etc/passwd | tail -1 | cut -d: -f1
done

13、創建10用戶user10-user19;密碼同用戶名;

#!/bin/bash
#
for ((i=10;i<=19;i++)); do
if ! id user$i &> /dev/null; then
useradd user$i
else
echo "user$i" | passwd --stdin user$i
fi
done

14、在/tmp/創建10個空文件file10-file19;

#!/bin/bash
#
for i in {10..19};do
touch /tmp/file$i
done

原創文章,作者:N23-蘇州-void,如若轉載,請注明出處:http://www.www58058.com/56487

(0)
N23-蘇州-voidN23-蘇州-void
上一篇 2016-10-31
下一篇 2016-10-31

相關推薦

  • 文件管理相關

     rename:對文件重命名     rename [options] expression replacement file        示例:          # rename -v cut.exe cut.exe3 cut.exe…

    Linux干貨 2017-02-25
  • 馬哥教育網絡班21期+第7周課程練習

    1、創建一個10G分區,并格式為ext4文件系統;     fdisk /dev/sdb    n p 1 +10G w (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl…

    Linux干貨 2016-08-22
  • Linux終端類型

    Linux終端類型 Linux的終端類型包括控制臺終端、虛擬終端、偽終端、串行終端、控制終端、圖形終端。   終端 要理解偽終端(Pseudo Terminal),先來看看什么是“終端”(Terminal)。 終端是一種字符型設備,它有多種類型,通常使用tty來簡稱各種類型的終端設備。 1、串行端口終端(/dev/ttySx) 串行端口終端(Ser…

    Linux干貨 2016-10-14
  • N26第二周博客作業

    1.Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 ?  ls 查看文件與目錄 ls [選項] 文件或目錄 常用選項 -a:全部的文件,連同隱藏文件(以.開頭)一起列出來 -d:列出目錄本身,而不是列出目錄里的文件 -l:列出詳細信息,如文件的屬性與權限等數據 -h:將文件容量以易讀的方式顯示(例如:GB,KB等) -t:…

    Linux干貨 2017-01-08
  • Liunx系統命令的使用格式

    Liunx系統命令的格式 基本格式如下:               ~]# COMMAND OPTIONS ARGUMENTS COMMAND:      發起一個命令,請求內核將某個二進…

    Linux干貨 2016-10-28
  • vsftpd+pam+MySQL—->實現虛擬用戶認證

    一、安裝所需要程序 1、安裝vsftpd yum -y install vsftpd 2、安裝MySQL yum -y install  mysql-server mysql-devel pam_mysql 二、創建虛擬用戶賬號 1.準備數據庫及相關表 首先請確保mys…

    Linux干貨 2016-09-19

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-01 22:52

    完成的非常好,6、8題需要精確到分鐘,7題需要精確到分鐘、小時哈,9題還差一個工作日哦,加油!

欧美性久久久久