欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

1.現(xiàn)象

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

2.原因

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

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

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

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

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

3.案例

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

a.打開(kāi)文件

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

b.錄入數(shù)字

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

c.切換模式

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

d.錄入內(nèi)容

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

e.退出

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

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

二、避免重復(fù)行

1.知道原因

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

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

2.操作注意

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

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

三、刪除重復(fù)行

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

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

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

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

1.sort u

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

: sort u

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

此命令也可以再簡(jiǎn)化為sor[t] u,執(zhí)行時(shí)可以不寫(xiě)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ù)。

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

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

4. sor ur /^/

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

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

: sor ur /^/

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

在前面的命令中,不加/^/時(shí),也可以排序、去重。但加上/^/將僅去重,不進(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到多個(gè)任意字符
  • \(\)用括號(hào)包起來(lái)形成第一個(gè)分組
  • $行尾
  • \n換行
  • \1反向引用第一個(gè)分組
  • /d刪除

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

下面使用替換來(lái)刪除所有重復(fù)行(僅保留第一行,同時(shí)刪除后面的重復(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é)

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

相關(guān)文章

  • linux文件系統(tǒng)調(diào)整大小的方法(linux調(diào)整分區(qū)大小)

    linux文件系統(tǒng)調(diào)整大小的方法(linux調(diào)整分區(qū)大小)

    本文歸納了在不破快文件系統(tǒng)數(shù)據(jù)的前提下對(duì)文件系統(tǒng)大小進(jìn)行調(diào)整的方法.這里采用的是"拆東墻, 補(bǔ)西墻"的方法, 當(dāng)然, 如果你的磁盤(pán)中有未分區(qū)的空閑空間, 你就不用減小某個(gè)分區(qū)的空間了
    2014-01-01
  • Linux之刪除帶有空格的文件(不是目錄)

    Linux之刪除帶有空格的文件(不是目錄)

    這篇文章主要介紹了Linux之刪除帶有空格的文件(不是目錄),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • CentOS 6.4系統(tǒng)下編譯安裝LNMP和配置PHP環(huán)境具體步驟

    CentOS 6.4系統(tǒng)下編譯安裝LNMP和配置PHP環(huán)境具體步驟

    下面介紹的是CentOS 6.4系統(tǒng)下編譯安裝LNMP和配置PHP環(huán)境具體步驟,感興趣的朋友可以參考下,希望對(duì)你配置php環(huán)境有所幫助
    2013-05-05
  • Linux下gdb調(diào)試打印字符串方式

    Linux下gdb調(diào)試打印字符串方式

    這篇文章主要介紹了Linux下gdb調(diào)試打印字符串方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • CentOS系統(tǒng)使用yum命令報(bào)錯(cuò)問(wèn)題及解決

    CentOS系統(tǒng)使用yum命令報(bào)錯(cuò)問(wèn)題及解決

    文章主要講述了在CentOS系統(tǒng)中使用yum命令時(shí)遇到的錯(cuò)誤,并提供了個(gè)人解決方法,希望對(duì)大家有所幫助,并鼓勵(lì)大家支持腳本之家
    2024-12-12
  • linux設(shè)置服務(wù)開(kāi)機(jī)自啟動(dòng)的三種方式

    linux設(shè)置服務(wù)開(kāi)機(jī)自啟動(dòng)的三種方式

    這篇文章主要介紹了linux設(shè)置服務(wù)開(kāi)機(jī)自啟動(dòng)的三種方式,需要的朋友可以參考下
    2015-11-11
  • ubuntu中修改grub的啟動(dòng)時(shí)間生成

    ubuntu中修改grub的啟動(dòng)時(shí)間生成

    這篇文章主要介紹了ubuntu中修改grub的啟動(dòng)時(shí)間生成,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 在Linux上如何檢查用戶(hù)所屬組詳解

    在Linux上如何檢查用戶(hù)所屬組詳解

    這篇文章主要給大家介紹了關(guān)于在Linux上如何檢查用戶(hù)所屬組的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • linux 定時(shí)休眠的實(shí)現(xiàn)思路

    linux 定時(shí)休眠的實(shí)現(xiàn)思路

    這篇文章主要介紹了linux 定時(shí)休眠的實(shí)現(xiàn)思路,休眠的類(lèi)型有三種類(lèi)型,文章對(duì)每種類(lèi)型介紹的都很詳細(xì),需要的朋友可以參考下
    2018-07-07
  • 記一次入侵Linux服務(wù)器和刪除木馬程序的經(jīng)歷

    記一次入侵Linux服務(wù)器和刪除木馬程序的經(jīng)歷

    這篇文章主要介紹了記一次入侵Linux服務(wù)器和刪除木馬程序的經(jīng)歷的相關(guān)資料,需要的朋友可以參考下
    2016-02-02

最新評(píng)論