最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux?CentOS7?vim重復(fù)行問題

 更新時間:2023年11月08日 14:59:18   作者:qq_36142959  
這篇文章主要介紹了Linux?CentOS7?vim重復(fù)行問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

在用vim編輯處理文件時,會有重復(fù)行。有的是情境需要,有的可能是誤操作而形成。對于正常形成的重復(fù)行,我們不作討論,我們僅討論什么情況下會出現(xiàn)重復(fù)行,如何避免,如何處理。

在文件中的單行或多個連續(xù)空白行,我們不作處理。這可能是格式需要。

一、出現(xiàn)重復(fù)行

1.現(xiàn)象

很多新手容易出現(xiàn)的現(xiàn)象:編輯vim后出現(xiàn)很多重復(fù)行

2.原因

原因也很簡單,vim具有數(shù)字+命令的多次重復(fù)執(zhí)行命令的功能,也就是說,允許數(shù)字+命令的語法格式,表示重復(fù)執(zhí)行命令,其重復(fù)次數(shù)就是命令前的數(shù)字。

如在命令模式下,5yy:從光標(biāo)所在行開始且包括當(dāng)前行,共復(fù)制5行;3dd:從光標(biāo)所在行開始(含當(dāng)前行),共刪除3行;7p:在光標(biāo)所在行后粘貼7次前面復(fù)制的內(nèi)容。

新手是如何操作,才造成的重復(fù)行呢?

新手操作vim最容易犯的錯誤就是用vim打開文件就開始錄入內(nèi)容。不顯示內(nèi)容時就用鼠標(biāo)點(diǎn)點(diǎn)點(diǎn)。

當(dāng)錄入某些數(shù)字后,發(fā)現(xiàn)沒有模式切換,就又按了i/I,或按了a/A。在編輯模式下,錄入一些內(nèi)容后,按Esc鍵返回命令模式。這時就會出現(xiàn)重復(fù)的多行內(nèi)容(就是前面錄入的內(nèi)容)。

3.案例

我們對此過程進(jìn)行模擬操作,重現(xiàn)此類現(xiàn)象。

a.打開文件

我們先準(zhǔn)備一個文本文件test.txt:

b.錄入數(shù)字

用vim test.txt打開文件,(在命令模式下)直接錄入數(shù)字123(可以是小鍵盤錄入,也可以是主鍵盤上的123,不影響后續(xù)結(jié)果)。

c.切換模式

再按i鍵,進(jìn)入編輯模式

d.錄入內(nèi)容

移動光標(biāo),在abcde行下錄入ABCD,按回車

e.退出

按Esc,退出編輯模式,vim的文本內(nèi)容將出現(xiàn)如下效果:

文件中的其他部分內(nèi)容不變!錄入的內(nèi)容本來希望一行“ABCD”,現(xiàn)在出現(xiàn)很多行(123行)。

二、避免重復(fù)行

1.知道原因

了解vim模式的使用,在不同模式下操作不同的命令或內(nèi)容。

如果因操作不當(dāng),產(chǎn)生了重復(fù)行,可以返回到命令模式下,按u取消原來的操作。

2.操作注意

不在命令模式下錄入數(shù)字,或錄入數(shù)字后及時按Esc,取消剛才的操作。

如確實(shí)需要部分內(nèi)容重復(fù),可以按此方法,產(chǎn)生需要的重復(fù)行。

三、刪除重復(fù)行

刪除重復(fù)行的操作十分普遍。

如果找不到產(chǎn)生重復(fù)行的原因,或拷貝內(nèi)容時產(chǎn)生了多余的重復(fù)行,將如何刪除重復(fù)行呢?

vim刪除重復(fù)行方法很多,原理基本相同:先排序,再應(yīng)用正則表達(dá)式查找相同行,并刪除(特定條件下,不排序,直接去除重復(fù)行)。

在后續(xù)的討論中,我們需要一些重復(fù)行,將按前述介紹操作產(chǎn)生重復(fù)行。

1.sort u

sort命令應(yīng)用比較多,具有排序功能。u是uniq去除重復(fù)命令的簡寫。

: sort u

命令執(zhí)行后效果:

此命令也可以再簡化為sor[t] u,執(zhí)行時可以不寫t。

2.%!uniq

在前面刪除重復(fù)行操作后,可以在命令模式下,按u,返回到有重復(fù)行狀態(tài)。

錄入命令:

: %!uniq

效果如前,去除了重復(fù)行,僅保留一行內(nèi)容。

3.w !uniq > %

再次按下u,返回到有重復(fù)行狀態(tài)。

執(zhí)行命令(底行模式下):

: w !uniq > %

執(zhí)行命令后,有兩項(xiàng)選擇,如下:

選擇 O,確認(rèn)后,仍需按確認(rèn)鍵繼續(xù)。

返回原來狀態(tài)。

選擇 L,確認(rèn)后,仍需按確認(rèn)鍵繼續(xù),最終是刪除重復(fù)行:

4. sor ur /^/

再次按下u,返回到有重復(fù)行狀態(tài)。

執(zhí)行命令(底行模式下):

: sor ur /^/

效果與前面基本一致。最大的不同,是在去除重復(fù)行的同時,不打亂原來文件內(nèi)容。

在前面的命令中,不加/^/時,也可以排序、去重。但加上/^/將僅去重,不進(jìn)行打亂文件內(nèi)容而排序。

如把命令修改為sor u /^/,結(jié)果也將是排序、去重。

5.g/^\(.\+\)$\n\1/d

再次按下u,返回到有重復(fù)行狀態(tài)。

執(zhí)行命令(底行模式下):

: g/^\(.\+\)$\n\1/d

命令解釋

在命令g/^\(.\+\)$\n\1/d中:

  • g全局
  • ^行首
  • .\+此處有1到多個任意字符
  • \(\)用括號包起來形成第一個分組
  • $行尾
  • \n換行
  • \1反向引用第一個分組
  • /d刪除

本案例中,沒有執(zhí)行排序命令,直接執(zhí)行去重命令:

下面使用替換來刪除所有重復(fù)行(僅保留第一行,同時刪除后面的重復(fù)行)。這是該g//d方法的一種變體。

: %s/^\(.*\)\(\n\1\)\+$/\1/

去除重復(fù)行,僅保留一行!

: %s/\v^(.*)(\n\1)+$/\1/

去除重復(fù)行,僅保留一行!

: %s/\(.\+\)$\n\1/\1/g

不能一次去除重復(fù)行,可以多次執(zhí)行,最后只保留一行。

另外還有一些別的命令,也可以試一試:

  • :g/\%(^\1$\n\)\@<=\(.*\)$/d     //功能同上,也是去除重復(fù)行
  • :g/\%(^\1\>.*$\n\)\@<=\(\k\+\).*$/d  //功能同上,也是去除重復(fù)行

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Linux中利用sudo進(jìn)行賦權(quán)的方法詳解

    Linux中利用sudo進(jìn)行賦權(quán)的方法詳解

    sudo的目的:為非根用戶授予根用戶的權(quán)限,下面這篇文章主要給大家介紹了關(guān)于Linux中利用sudo進(jìn)行賦權(quán)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • 詳解ubuntu 16.04 LTS 降級安裝gcc 4.8

    詳解ubuntu 16.04 LTS 降級安裝gcc 4.8

    本篇文章主要介紹了ubuntu 16.04 LTS 降級安裝gcc 4.8 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Linux下如何啟動Oracle命令

    Linux下如何啟動Oracle命令

    這篇文章主要介紹了Linux下如何啟動Oracle命令問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • VNC連接Linux服務(wù)器藍(lán)屏的解決方法

    VNC連接Linux服務(wù)器藍(lán)屏的解決方法

    本文介紹了使用VNC連接Linux遠(yuǎn)程桌面出現(xiàn)藍(lán)屏問題的現(xiàn)象,并提供了解決方法,包括執(zhí)行相關(guān)命令、重啟VNC進(jìn)程并重新連接,成功消除藍(lán)屏問題,需要的朋友可以參考下
    2025-10-10
  • 如何重置 RHEL7/CentOS7 系統(tǒng)的root密碼

    如何重置 RHEL7/CentOS7 系統(tǒng)的root密碼

    這篇文章主要介紹了如何重置 RHEL7/CentOS7 系統(tǒng)的root密碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Linux CentOS下安裝Tomcat9及web項(xiàng)目的部署

    Linux CentOS下安裝Tomcat9及web項(xiàng)目的部署

    本文講解在Linux CentOS下安裝Tomcat9,以及Web項(xiàng)目的部署發(fā)布過程,通過實(shí)例代碼相結(jié)合的形式給大家介紹的非常的詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-07-07
  • CentOS 6.8 安裝vsftpd的方法步驟

    CentOS 6.8 安裝vsftpd的方法步驟

    這篇文章主要介紹了CentOS 6.8 安裝vsftpd的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • linux上安裝zookeeper 啟動和關(guān)閉的教程

    linux上安裝zookeeper 啟動和關(guān)閉的教程

    這篇文章主要介紹了linux上安裝zookeeper 啟動和關(guān)閉的教程詳解,首先zookeeper運(yùn)行需要java環(huán)境所以必須先裝JDK,具體操作步驟大家一起看看本文吧
    2018-08-08
  • #實(shí)踐筆記#Ubuntu配置Apache+PHP+MySQL

    #實(shí)踐筆記#Ubuntu配置Apache+PHP+MySQL

    在我早先的一篇文章《#實(shí)踐筆記#本地配置PHPnow與WordPress》,已經(jīng)討論過PHPnow的本地安裝教程。但是PHPnow套件是Windows平臺下的軟件,不適用我現(xiàn)在使用的平臺
    2012-03-03
  • linux下system函數(shù)的簡單分析

    linux下system函數(shù)的簡單分析

    這篇文章主要簡單分析了linux下system函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評論

抚顺市| 伊金霍洛旗| 茶陵县| 武宣县| 汝阳县| 辽阳市| 万宁市| 白朗县| 西峡县| 南雄市| 琼海市| 加查县| 汪清县| 金山区| 无锡市| 永嘉县| 汝州市| 浙江省| 靖江市| 阿拉善左旗| 正蓝旗| 凤台县| 洪江市| 永新县| 兴安盟| 和静县| 宜昌市| 平南县| 珠海市| 土默特右旗| 淮北市| 久治县| 寿光市| 盐山县| 株洲县| 迁西县| 郯城县| 浦江县| 云林县| 乌兰浩特市| 金昌市|