1. 程式人生 > >Linux(RadHat)基礎學習—vim編輯器及文件的輸入輸出

Linux(RadHat)基礎學習—vim編輯器及文件的輸入輸出

沒有 就是 定制 gre 可視模式 追加 刪除 roo oss

1.vim編輯器
Vim是一個類似於Vi的著名的功能強大、高度可定制的文本編輯器,在Vi的基礎上改進和增加了很多特性。 

1.初識神器:vim

(1).vim的註意事項

編輯文件時
    a.當文件名稱存在,那麽進入文件直接編輯
    b.當文件名稱不存在,vim會在退出保存時自動建立文件
    c.當vim命令後沒有跟任何文件名稱時,時無法實現":wq"退出保存的那麽可以用":wq filename"(給新建文件命名並保存)

(2).當vim異常退出時,系統會建立.file.swp這個緩存文件

    這個文件中保存著沒有":wq"動作保存的信息
    當用vim對文件做編輯的時候會提示
        O   ##只讀打開
        E   ##直接忽略.file.swap信息編輯文件
        R   ##利用.file.swap進行為保存數據恢復
        D   ##刪除.file.swap
        Q   ##退出
        A   ##終止

例如:
技術分享圖片

2.vim操作

ps:vim有三種模式
1.命令模式:
        在Linux終端中輸入“vim 文件名”就進入了命令模式,查看文件內容,但不能輸入文字。
2.編輯模式:
        在命令模式下按i/o/A等就會進入編輯模式,此時就可以寫入程式,按Esc可回到命令模式。
3.末行模式:
        在命令模式下按:進入末行模式,左下角會有一個冒號出現,此時可以敲入命令並執行。

下面所有帶有:的操作都表示是在行末模式進行的操作!
1.命令模式

命令模式是vim打開文件後默認進入的模式,這個模式中不能插入字符,只能瀏覽文件內容。但是可以按 : 進入行末模式然後設定vim的工作方式
    :set 指定信息
    :set nu                    顯示行數
    :set nonu               不顯示行數
    :set cursorline       添加行線展示
    :set mouse=a        添加鼠標選擇

註意:在vim中直接設定vim的工作方式是臨時設定,也就是說當vim關閉,設定失效。如果要永久設定需要編寫"/etc/vimrc".這個文件也是vim的配置文件。操作如下:

vim /etc/vimrc
直接在文件末尾插入想要的設置然後保存退出,重新打開vim即可看到效果

插入設置:
技術分享圖片
設置生效:
技術分享圖片
2.在命令模式下如何管理字符

按"x":
    刪除光標所在字符
按"u":
    undo 恢復
按"ctrl+r":
    redo 撤銷恢復
按"y":復制 
    "yw"        ##復制一個單詞
    "yl"        ##復制一個字母
    "yy"        ##復制一整行
    "y5y"       ##復制5行
按"c":剪切
    "cw"        ##剪掉一個單詞
    "cl"          ##剪掉一個字母
    "cc"         ##剪掉一整行
    "c5c"       ##剪掉5行

--------> 在命令模式下按“p“粘貼復制或剪切的字符
註意:用C做剪切時,會進入插入模式,如果要粘貼需要退出插入模式按<ESC>再按"p"

按"d":刪除
    "dw"        ##刪除一個單詞
    "dl"          ##刪除一個字母
    "dd"        ##刪除一整行
    "d5d"       ##刪除5行

3.vim的可視化操作

(1).可視化模式的基本操作
        在vim中是不能用鼠標選擇區域操作的,如果要操作某個區域,需要進入到可視化模式
        在命令模式下 "ctrl + v"  就可以進入到可視模式了
        按"上|下|左|右"移動光標選擇區域,按相應操作鍵就可以對選擇區域進行操作

技術分享圖片

(2).可視化模式下批量添加字符
        1.把光標停留在想要加入字符所在的列的第一行
        2.移動光標選擇添加字符所在列
        3."I"進入插入模式
        4.寫入要插入的字符
        5.按"ESC"退出插入模式,字符批量添加成功

技術分享圖片
技術分享圖片

4.vim的字符替換(進入行末模式)

:%s/原有字符/新字符/g          #全文替換
:1,5s/原有字符/新字符/g        #替換1到5行的字符
                                      g   #替換出現的所有關鍵字,如果不加"g"只替換沒行出現的第一個

輸入字符替換的命令:
技術分享圖片
成功替換字符:
技術分享圖片
5.vim總字符的查找及光標的移動(行末模式)

1.字符的查找
:/關鍵字
n            ##向下匹配關鍵字
N           ##向上匹配關鍵子
2.光標的移動
:數字       ##光標快速移動到指定行
gg            ##光標移動到文件的第一行
G              ##光標移動到文件的最後以行

6.vim同時編輯多個文件

進入行末模式:
    sp filename      在當前vim另外打開一個新的文件
進入命令模式:
    ctrl + w   上          #光標進入上邊文件窗口
    ctrl + w   下          #光標進入下邊文件窗口

7.進入編輯模式

"i"         #在光標所在位置插入字符
"I"         #光標所在行的行首插入字符
"o"         #光標所在行的下一行新行插入字符
"O"         #光標所在行的上以行新行插入
"s"         #刪除光標所在字符並插入字符
"S"         #刪除光標所在行並插入字符
"a"         #光標所在字符的下一個字符插入
"A"         #光標所在行的行尾插入字符

8.退出vim

:q         #當vim進入文件沒有對文件內容做任何操作可以按"q"退出
:q!       #當vim進入文件對文件內容有操作但不想保存退出
:wq     #正常保存退出
:wq!        #強行保存退出,只針對與root用戶或文件所有人生效

一張圖了解vim操作!

技術分享圖片

2.文件輸入輸出的管理

1.輸入輸出的定義

1.輸入
    就是我們的鍵盤,鼠標和我們用這些硬件在系統只哦個錄入的字符
2.輸入
    就是系統接收到我們想要實現的功能字符後,經過進程的處理產生字符
    輸入會有兩種出現:
            編號1為正確輸出
            編號2為錯誤輸出
    默認著兩種輸出都會被系統定向到字符設備中

2.如何管理輸入

1.非交互式多行錄入
    編輯文件: vim test.sh
    寫入內容:passwd
    保存並退出後執行命令:sh test.sh

雖然這樣能正確運行,但不是多行錄入
下面舉例說明多行錄入
新建一個example.sh結尾文件後,在文件中編輯如下內容:
passwd <<END
redhat
redhat
END
命令行執行sh example.sh
這樣可以自動運行避免交互(以上操作將用戶密碼改為redhat)
技術分享圖片
ps:這裏由於設置的密碼不規範所以沒有設置成功,但還是實現了多行錄入。

2.如何管理輸出

重定向:重定向是指修改原來默認的一些東西,對原來系統命令的默認執行方式進行改變,比如說簡單的我不想看到在顯示器的輸出而是希望輸出到某一文件中就可以通過Linux重定向來進行這項工作。
        >           重定向正確輸出(將正確的輸出 輸出到指定地方,錯誤的輸出則還是輸出到默認地方)
        2>       重定向錯誤輸出(將錯誤的輸出 輸出到指定地方,錯誤的輸出則還是輸出到默認地方)
        &>      重定向所有輸出(將所有的輸出都 輸出到指定地方)
        2>&1     把錯誤輸出的編號由2轉換為1(將錯誤的輸出變成正確的輸出)

舉幾個栗子

find /etc/ -name passwd  > file.out        -----------> 查找/etc目錄下所有名字叫passwd的文件並重定向使其將正確的查找結果輸出到file.out中
find /etc/ -name passwd 2> file.out       -----------> 查找/etc目錄下所有名字叫passwd的文件並重定向使其將錯誤的找結果輸出到file.out中
find /etc/ -name passwd &> file.all        -----------> 查找/etc目錄下所有名字叫passwd的文件並重定向使其將所有查找結果輸出到file.all中

"註意:重定向是會覆蓋原文件內容的!!!"
向文件追加內容:

保持原文件內容不變的情況下把輸出追加到文件之後
    >>         追加正確輸出
    2>>     追加錯誤輸出
    &>>     追加所有輸出

即一個>符號是覆蓋,2個>符號是追加。
舉幾個栗子:

find /etc/ -name passwd >> westos
find /etc -name passwd 2>> westos
find /etc -name passwd &>> westos

最後文件內會有三次重定向的所有輸出內容

3.管道

把上一程序(命令)的輸出變成下一個程序的輸入
(管道是用來組合多條命令的使用的)
栗子:
        ls /bin | wc -l      -----------> 查詢/bin下所有文件然後把結果作為輸入去統計這些文件的個數

註意:通過管道後輸出會變成輸入,那麽是無法保存在文件中的.。另外,系統中錯誤的輸出是無法通過管道的。

tee:復制輸出到指定位置
舉個栗子:
        ls /bin | tee file | wc -l
執行命令:cat file       可以看到file中已經保存了ls /bin的輸出

grep:全局搜索表達式

    從結果中過濾出包含關鍵字的輸出

Linux(RadHat)基礎學習—vim編輯器及文件的輸入輸出