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

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)點點點。

當(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,取消剛才的操作。

如確實需要部分內(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í)行命令后,有兩項選擇,如下:

選擇 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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

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

    這篇文章主要介紹了Linux之刪除帶有空格的文件(不是目錄),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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)境具體步驟,感興趣的朋友可以參考下,希望對你配置php環(huán)境有所幫助
    2013-05-05
  • Linux下gdb調(diào)試打印字符串方式

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

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

    CentOS系統(tǒng)使用yum命令報錯問題及解決

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

    linux設(shè)置服務(wù)開機(jī)自啟動的三種方式

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

    ubuntu中修改grub的啟動時間生成

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

    在Linux上如何檢查用戶所屬組詳解

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

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

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

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

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

最新評論