日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux基础命令介绍四:文本编辑vim

發布時間:2024/1/8 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux基础命令介绍四:文本编辑vim 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文介紹vim(版本7.4)的一般用法。

vim是功能強大的文本編輯器,是vi的增強版。

  • vim?[options]?[file?..]?
  • 使用vim編輯一個文件的最常用命令就是:

  • vim?file?
  • 其中file可以是一個新文件,也可以是原有文件。這樣的命令執行后將打開編輯器,顯示文件file的內容。如圖所示:

    如果是一個新文件,底部左邊會顯示"file" [新文件]的字樣,右邊顯示0,0-1表示當前光標所在行數和字符數。如果打開的是一個老文件,底部左邊顯示"file" 3L, 66C字樣,表示文件名,當前光標所處行號,文件總字節數。文件中沒有字符的地方會以字符~開頭。

    現在還不能進行編輯,vim編輯文件有幾種模式,當前所處模式是普通模式,可以移動光標、執行復制粘貼等命令;另外還有兩種常用模式:插入模式和底行模式。

    開始進入的一般都是普通模式,按如下鍵將進入插入模式:

  • a?在光標所在位置下一個字符開始輸入?
  • A?在光標所在行尾開始輸入?
  • i?在光標所在位置開始輸入?
  • I?在光標所在行首開始輸入?
  • o?在光標所在行下新增一行,并在新增行行首開始輸入?
  • O?在光標所在行上新增一行,并在新增行行首開始輸入??
  • 進入插入模式后,底部會出現-- 插入 --字樣;這時就可以在光標位置進行輸入了。從插入模式退回到普通模式按ESC鍵。

    在普通模式按如下鍵將進入底行模式:

  • :?執行命令?
  • /?正向搜索?
  • ??反向搜索??
  • 從底行模式退回到普通模式需按兩次ESC鍵

    底行模式執行:q(quit)表示退出編輯器,如果對文件內容進行過更改,需要執行:wq(write quit)來保存退出;如果不保存退出則需要執行:q!強制退出;強制保存退出為:wq!。

    下面列出一些在普通模式下可以執行的命令及它們的作用:

  • 文本修改:?
  • .???重復上一個命令?
  • x???刪除光標位置的字符?
  • d???從光標處開始剪切?
  • dd??剪切光標所在位置的整行(保存在臨時緩沖區)?
  • ndd?n為數字,表示從當前行開始,從上到下剪切n行?
  • p???將緩沖區中的內容放到當前行之下?
  • np??n是數字,相當于執行n次p命令?
  • P???將緩沖區中的內容放到當前行之上?
  • y???從光標處開始復制?
  • yy??復制當前行(保存在臨時緩沖區)?
  • nyy?n為數字,表示從當前行開始,從上到下復制n行?
  • r???替換光標所在位置的一個字符?
  • R???從光標位置開始替換,并進入文本輸入模式(ESC退出)?
  • u???撤銷上一次操作?
  • ZZ??保存退出?
  • 移動光標:?
  • h或左箭頭鍵?光標向左移動一格?
  • l或右箭頭鍵?光標向右移動一格?
  • j或下箭頭鍵?光標向下移動一格?
  • k或上箭頭鍵?光標向上移動一格?
  • 0?光標移動到當前行開頭?
  • ^?光標移動到當前行非空白字符(如空格、tab鍵等)的開頭?
  • $?光標移動到當前行結尾?
  • g_?光標移動到當前行非空白字符的結尾?
  • w??光標移動到下一個單詞的開頭?
  • e??光標移動到下一個單詞的結尾?
  • *??匹配光標所在單詞,移動到下一個相同的單詞?
  • #??匹配光標所在單詞,移動到上一個相同的單詞?
  • f{?光標移動到當前行的下一個字符{處,{可以換成其他字符?
  • F}?光標移動到當前行的上一個字符}處?
  • t,?光標移動到當前行的下一個逗號之前一個字符處?
  • T,?光標移動到當前行的上一個逗號之后一個字符處?
  • %??移動到成對括號的另一半括號處,包括()?{}?[].需要先將光標移動到括號上。?
  • gg?光標移動到文件第一行行首?
  • G??光標移動到文件最后一行行首?
  • 回車鍵?光標移動到下一行行首??
  • 這里只列出一部分,初學者也許會覺得太多,記不住。其實只要記住其中幾個,就完全可以使用了;其他的作用大多是使你的操作更簡便快捷。

    vim中的各種命令,大多可以組合使用:

    比如要刪除光標當前所在位置一直到行尾,可以執行d$;

    比如要在當前位置插入50個‘word’,只需執行50iword ESC按完ESC鍵之后這50個單詞就被插入了;

    比如要粘貼被復制的內容,但希望粘貼5次,則執行5p;

    比如要再次執行上一次命令5次,則執行5.;

    熟練使用這些命令將極大提高編寫文件的速度。

    在插入模式下(普通模式按a、i、o等),輸入一個單詞的開頭,然后按CTRL-P或CTRL-N就會自動補齊。

    底行模式共三個開始字符(:、/、?),其中/和?用來匹配模式搜索:

    如搜索文件內字符串centos:

  • /centos?
  • 輸入這個字符串之后按回車,vim就會將所有匹配的字符串高亮顯示,按下n鍵,光標就會跳到下一個匹配字符串處,按N鍵,光標就會跳到上一個匹配處。(想想man查詢)

    使用?和/的作用相同,不過是方向相反。

    :可以執行許多命令,如前面介紹過的保存退出命令:wq。下面介紹部分底行模式命令:

  • :set?nu???顯示行號?
  • :set?nonu?隱藏行號?
  • :r?file???讀取文件file內容并寫入當前編輯的文件中,內容從光標當前位置下一行開始插入。?
  • :w?file???將當前編輯的內容寫入一個新文件file中。?
  • :s?/pattern/string/?將匹配pattern的字符串替換成string?
  • :x????????作用和:wq相同,保存并退出。?
  • :!?command?暫時離開vim并執行shell命令command。?
  • :help?????查看幫助?
  • :.=???????顯示當前行號?
  • :=????????顯示總行數?
  • :n????????移動光標到第n行行首??
  • 這些命令也可以組合如執行shell命令并將結果寫入當前行的下一行:

  • :r!ls?-l?
  • 還能組合其他模式下的命令如替換當前行所有匹配模式的字符串:

  • :s/pattern/string/g?#?g表示全局?
  • 如替換本文件中所有匹配模式的字符串:

  • :%s/pattern/string/g?#?%表示所有行?
  • 如替換指定行的匹配字符串:

  • :n,ms/pattern/string/g?
  • 這里n和m都是數字,代表行號。可以用點號.代表當前行

    如刪除當前行到第五行的內容:

  • :.,5d?
  • 當當前行處于第五行以下時,會有反向刪除的提示。

    使用/pattern和:s/pattern/string時,pattern是一個正則表達式,用來匹配一個字符串的模式。

    正則表達式和之前介紹的通配符(基礎命令介紹二)有一些相似的地方,但要注意區分兩者的不同。

    通配符主要是用于對文件名的匹配,正則表達式不僅可以用于匹配文件名,事實上,它可以進行任何字符串的匹配。它要比通配符更通用,大多數編程語言和一些工具中(如vim、grep、awk、sed)都有對正則表達式的直接支持。

    下面介紹一部分將要用到的正則表達式的概念和用法:

  • 匹配位置:?
  • ^?表示行開頭?
  • $?表示行結尾?
  • <?表示單詞開頭?
  • >?表示單詞結尾?
  • 匹配字符:?
  • .?表示匹配任意單個字符(相當于通配符中的?)?
  • [...]?表示匹配括號內任意單個字符?
  • [^...]?表示匹配任意一個非列出字符?#參照通配符描述?
  • \a????匹配英文字符,等同于[a-zA-Z]或[[:alpha:]]。?
  • \A????匹配非英文字符,等同于[^a-zA-Z]。?
  • \d????匹配數字,等同于[0-9]或[[:digit:]]。?
  • \D????匹配非數字,等同于[^0-9]。?
  • \x????匹配十六進制數字,等同于[0-9A-Fa-f]或[[:xdigit:]]。?
  • \X????匹配非十六進制數字,等同于[^0-9A-Fa-f]。?
  • \w????匹配單詞,等同于[0-9A-Za-z_]。?
  • \W????匹配非單詞,等同于[^0-9A-Za-z_]。?
  • \t????匹配TAB字符。?
  • \s????匹配空白字符,等同于[?\t]或[[:blank:]]。?
  • \S????匹配非空白字符,等同于[^?\t]。?
  • \u????匹配大寫字母,等同于[A-Z]或[[:upper:]]。?
  • \U????匹配非大寫字母。?
  • \n????匹配換行?
  • \r????匹配回車?
  • (...)?匹配并捕獲,用\1?\2?\3?...來引用被捕獲的字符串。?
  • |?????表示邏輯或?
  • 匹配數量:?
  • *?表示匹配前一個字符零到任意多次,相當于{0,}。?
  • +?表示匹配前一個字符一到任意多次,相當于{1,}。?
  • ??表示匹配前一個字符零到一次,相當于{0,1}。#注意和通配符?的區別?
  • {n,m}?表示匹配前一個字符n到m次。??
  • 在使用正則表達式時,有時需要在特殊字符之前加上轉義字符"\"來使特殊字符表示它的字面意思而不是它的特殊意義,在特定的工具中使用正則時,也需要這樣做來避免特殊字符被工具本身解釋。

    vim在使用如下正則表達式時需要將特殊字符轉義:\<...\>、\{n,m}、\(...\)、\?、\+、\|下面結合正則舉例說明vim中模式匹配及部分命令用法

    匹配字符串world并使光標停留在匹配行后第三行行首:

  • /world/+3?
  • 將第三行到第八行行首添加注釋符號//:

  • :3,8s/^/\/\//?
  • 注意這里的行首符^和轉義符'\'的用法

    如:

  • :%g/^\sxyz/normal?dd?
  • 此命令作用是全局匹配以空白后接xyz開頭的行,并執行普通模式下的命令dd

    如匹配6個以上的小寫字母:

  • /\a\{6,}?
  • 如交換冒號:兩側的字符串:

  • :s/\(.*\):\(.*\)/\2:\1/?#注意這里是如何引用之前匹配的分組的?
  • 如將所有tag、tog和tug分別改為hat、hot和hut

  • :%s/t\([aou]\)g/h\1t/g?
  • 如匹配hello或world兩個單詞:

  • /\<hello\>\|\<world\>?
  • 這里只列出部分vim用到的正則表達式,關于正則的更多內容,以后的文章中還會有描述和舉例。

    vim編輯器是很強大的,這里只描述了部分初級使用方法。vim還能使用視圖模式,編輯多文本,設置鍵盤映射,多剪貼板,錄制宏,使用插件等等。完全可以用vim作為IDE來使用。但相對來說,vim的學習曲線比較陡峭,不同的應用場景,需要記憶的命令和方法數量也是完全不同的。建議在學習中,每次只熟悉幾個命令,一段時間后,就能流暢快捷的編輯文本了。





    作者:vvpale 來源:51CTO

    總結

    以上是生活随笔為你收集整理的Linux基础命令介绍四:文本编辑vim的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。