N22-第六周作業

vim小小的總結

(本總結摘自馬哥網絡班22期課堂筆記)

vim是一款交互式的全屏編輯器,是vi的升級版,在vi上增強了很多,如:多級撤銷,多窗口和多緩沖區,語法高亮,在線幫助等。

vim也是一種模式化的編輯器。分別是編輯模式也叫命令模式,輸入模式,末行模式。其中使用vim打開文件后默認的是編輯模式。

三種模式之間的轉換:

編輯模式--->輸入模式
    i:在光標處輸入
    a:在光標后輸入
    o:在光標的下方打開一個新行
    I:在光標所在的行首輸入
    A:在光標所在的行尾輸入
    O:在光標的上方打開一個新行

輸入模式--->編輯模式
    ESC鍵

編輯模式--->末行模式
    :

末行模式--->編輯模式
    ESC鍵

打開文件:

vim [options] [file…]

+#:打開文件后,直接讓光標處于第3行的行首

+/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首

關閉文件

ZZ:保持并退出
:q 退出(如果文件有改動此命令沒法退出文件)
:q! q強制退出,不保存此前的編輯操作
:wq 保存并退出 
:x 保存并退出
:w /PATH/TO/SOMEFILE (保存至某文件)

光標跳轉:

字符間跳轉
    h:左
    j:下
    k:上
    l:右
    #COMMAND:跳轉#個數的字符
單純間跳轉
    w:下一個單詞的詞首
    e:當前或后一個單詞的詞尾
    b:當前或前一個單詞的詞首
    #COMMADN:跳轉#個數的單詞
行首行尾跳轉
    ^:跳轉至行首的第一個非空白字符
    0:跳轉至行首
    $:跳轉至行尾
行間跳轉
    #G:跳轉至由#指定的行
    1G,gg:第一行
    G:最后一行
句間跳轉:
    )
    (
段間跳轉
    }
    {

vim的編輯命令:

字符編輯:
    x:刪除光標所在處的字符
    #x:刪除光標所在處起始的#個字符
    xp:交換光標所在處的字符與其后面的字符的位置
替換命令
    r:替換光標所在處的字符
        如:rCHAR
刪除命令
    d:刪除命令,可結合光標跳轉字符,實現范圍刪除
       如:d$:刪除光標處至行尾處的字符
    dd:刪除光標所在行
        #dd:刪除以光標所在行為起始行的共#行
粘貼命令
    P:緩沖區中的內容如果為整行,則粘貼在當前光標所在行的下方,否則,則粘貼至當前光標所在處的后方;
    p:緩沖區中的內容如果為整行,則粘貼在當前光標所在行的上方;否則,則粘貼至當前光標所在處的前方;
復制命令
    y:復制,工作行為相似于d命令,可結合光標跳轉字符,實現范圍復制
      如:y$,y^,y0,ye,yw
    yy:復制一整行
        #yy:復制#行
改變命令(c)
    編輯模式--->輸入模式,實現刪除操作,同樣有c$,c^,c0,cb,ce,cw等
    cc:刪除光標所在的行,并轉換為輸出模式,同樣有  #cc 
其他編輯操作:
    可視化模式
        v:按字符選定
        V:按行選定
        可結合編輯命令使用:d,c,y
    撤銷操作
        u:撤銷此前的操作;還可以使用ctrl+r
            #u:撤銷此前的#個操作
    重復執行前一個編輯操作
        .

VIM末行模式: 內建的命令行接口

1,地址定界
    :start_pos[,end_pos]
        #:特定的第#行,例如5即第5行
        .:當前行
        $:最后一行
        #,#:指定行范圍,左側為起始行,右側為結束行
        #,+#:指定行范圍,左側為起始行絕對編號,右側為相對左側行號的偏移量
        %:全文
        /pattern/:從光標所在處起始向文件尾部第一次被匹配到的行
        /pat1/,/pat2/:從光標所在處起始,第一次由pat1匹配到的行開始,至第一次由pat2匹配到的行結束之間的所有行
    可同編輯命令一同使用,實現編輯操作
        如d,y,c
        w /PATH/TO/SOMEFILE:將范圍內的文本保存至指定的文件中、   
        r /PATH/FROM/SOMEFILE:將指定的文件中的文本讀取并插入至指定位置。
2,查找
    /PATTERN:從當前光標所在處向文件尾部查找能夠被當前模式匹配到的所有字符串
    ?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串
        n:下一個,與命令方向相同
        N:上一個,與命令方向相反
3,查找并替換
    s:末行模式的命令;
        使用格式:s/要查找的內容/替換為的內容/修飾符
        要查找的內容:可使用正則表達式
        替換為的內容:不能使用正則表達式,但可以引用
            如果‘要查找的內容’部分在模式中使用分組符號:在‘替換為的內容’中使用后向引用
            直接引用查找模式匹配到的全部文件,要使用&符號
        修飾符:
            i:忽略大小寫
            g:全局替換,意味著一行中如果匹配到多次,則均替換
      可把分隔符替換為其他非常用字符:
            如:s@@@
                s###

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

]# cp /etc/rc.d/rc.sysinit /tmp/grub
]#vim rc.sysinit
:
:%s@^[[:space:]]\+@#&@g
:wq

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

]# cp /boot/grub/grub.conf /tmp
]#vim grub.conf
:
:%s@^[[:space:]]\+@@g
:wq

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

]#vim /tmp/rc.sysinit
:%s@^#[[:space:]]\+@@g
:wq

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

]#vim /tmp/grub.conf
:1,3s@.*@#&@g
:wq

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

]#vim /etc/yum.repos.d/CentOS-Media.repo
:%s@\(enabled\|gpgcheck\)=0@\1=1@g  
:wq

6、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202

0 */4 * * * /bin/cp -R /etc/ /backup/etc-$(date +%Y%m%d%H%M)

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

0 0 * * 2,4,6 /bin/cp /var/log/messages /backup/messages_logs/messages-$(date +%Y%m%d)

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

0 */2 * * * /bin/grep -E "^S" /proc/meminfo >> /stats/memory.txt

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

0 */2 * * 1,2,3,4,5 /bin/echo "howdy"

腳本編程練習

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

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

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

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

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

15、把file10的屬主和屬組改為user10,依次類推。

#!/bin/bash
#

#創建目錄/tmp/testdir-當前日期時間
filename=$(date +%Y%m%d%H%M%S)
mkdir /tmp/testdir-${filename}

#在此目錄創建100個空文件:file1-file100,此處沒有判斷系統有無此文件
for i in {1..100};do
	touch /tmp/testdir-${filename}/file$i
done


#顯示/etc/passwd文件中位于第偶數行的用戶的用戶名
sed  -n  'n;p'  /etc/passwd | cut -d: -f 1

#創建10用戶user10-user19;密碼同用戶名
for i in {10..19};do
	useradd user$i
	echo user$i | passwd --stdin user$i
done



#在/tmp/創建10個空文件file10-file19
#把file10的屬主和屬組改為user10,依次類推
for i in {10..19};do
	touch /tmp/file$i
	chown user$i.user$i /tmp/file$i
done

原創文章,作者:N22-成都-stephen,如若轉載,請注明出處:http://www.www58058.com/60076

(0)
N22-成都-stephenN22-成都-stephen
上一篇 2016-11-21
下一篇 2016-11-21

相關推薦

  • Linux基礎目錄名稱命名法則及功能規定

    Linux中有非常多的目錄文件,那么這些目錄文件的命令規則,和功能都有那些,今天學習了下,下面是我的學習記錄,跟大家分享下。 文件命名規則 (1) 除了/之外,所有字符都合法 (2) 特殊字符如@、#、¥、&、()、-、空格等最好不要使用,當使用空格作為文件名時,執行命令會出錯 (3) 避免使用”.”作為文件名的第一個字符,因為在Linux系統中以”…

    Linux干貨 2016-08-15
  • N25第六周 vim,crontab命令的使用

    請詳細總結vim編輯器的使用并完成以下練習題 vim是一款功能強大的文本編輯器,是程序員的必備神器。 vim工作模式分為三種:編輯模式,輸入模式,末行模式,三種工作模式可以進行來自由切換     編輯模式—》輸入模式: 直接鍵i      輸入模式—》…

    Linux干貨 2016-12-29
  • Linus:利用二級指針刪除單向鏈表

    感謝網友full_of_bull投遞此文(注:此文最初發表在這個這里,我對原文后半段修改了許多,并加入了插圖) Linus大嬸在slashdot上回答一些編程愛好者的提問,其中一個人問他什么樣的代碼是他所喜好的,大嬸表述了自己一些觀點之后,舉了一個指針的例子,解釋了什么才是core low-level coding。 下面是Linus的教學原文及翻譯—— “…

    Linux干貨 2016-07-10
  • N26-第十二周

    1、請描述一次完整的http請求處理過程;        1、建立或處理鏈接:接收請求或拒絕請求        2、接收請求:接收來自于網絡的請求報文中對某資源的一次請求的過程;接收請求的方式通常是并發訪問響應模型        3、處理請…

    2017-05-14
  • 馬哥linux 0728作業

    1,軟鏈接和硬鏈接的區別 硬鏈接有以下特性 1)文件有相同的 inode 及 data block; 2)只能對已存在的文件進行創建; 3)不能交叉文件系統進行硬鏈接的創建; 4)不能對目錄進行創建,只可對文件創建; 5)刪除一個硬鏈接文件并不影響其他有相同 inode 號的文件。 而軟鏈接有一下特性 1)軟鏈接有自己的文件屬性及權限等; 2)可對不存在的文…

    Linux干貨 2016-08-04
  • 文本工具

    本文將介紹Linux下使用Shell處理文本時最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和參數都是最常用和最為實用的

    2017-11-25

評論列表(1條)

  • luoweiro
    luoweiro 2016-11-29 22:54

    為增加腳本的健壯性,可以在添加用戶或者創建目錄前做以判斷,寫代碼還是要嚴謹一些。

欧美性久久久久