Vim多行縮排技巧

2021-05-09 05:41:55 字數 3707 閱讀 6658

3.gg   shift+g 首尾

4.全文本眼替換  %s/source/dist/g 或者 :1,$ s/source/dist/g

:s/vivian/sky/ 替換當前行第乙個 vivian 為 sky

:s/vivian/sky/g 替換當前行所有 vivian 為 sky

:n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第乙個 vivian 為 sky

:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為 sky

n 為數字,若 n 為 .,表示從當前行開始到最後一行

:%s/vivian/sky/(等同於 :g/vivian/s//sky/) 替換每一行的第乙個 vivian 為 sky

:%s/vivian/sky/g(等同於 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky

可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符

:s#vivian/#sky/# 替換當前行第乙個 vivian/ 為 sky/

:%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/

* ************************************

1.:s/vivian/sky/ 替換當前行第乙個 vivian 為 sky

:s/vivian/sky/g 替換當前行所有 vivian 為 sky

2. :n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第乙個 vivian 為 sky

:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為 sky

(n 為數字,若 n 為 .,表示從當前行開始到最後一行)

3. :%s/vivian/sky/(等同於 :g/vivian/s//sky/) 替換每一行的第乙個 vivian 為 sky

:%s/vivian/sky/g(等同於 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky

4. 可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符

:s#vivian/#sky/# 替換當前行第乙個 vivian/ 為 sky/

5. 刪除文字中的^m

問題描述:對於換行,window下用回車換行(0a0d)來表示,linux下是回車(0a)來表示。這樣,將window上的檔案拷到unix上用時,總會有個^m.請寫個用在unix下的過濾windows檔案的換行符(0d)的shell或c程式。

· 使用命令:cat filename1 | tr -d 「^v^m」 > newfile;

· 使用命令:sed -e 「s/^v^m//」 filename > outputfilename。需要注意的是在1、2兩種方法中,^v和^m指的是ctrl+v和ctrl+m。你必須要手工進行輸入,而不是貼上。

· 在vi中處理:首先使用vi開啟檔案,然後按esc鍵,接著輸入命令:%s/^v^m//。

· :%s/^m$//g

如果上述方法無用,則正確的解決辦法是:

· tr -d "/r" < src >dest

· tr -d "/015" dest

· strings a>b

6. 其它

利用 :s 命令可以實現字串的替換。具體的用法包括:

:s/str1/str2/ 用字串 str2 替換行中首次出現的字串 str1

:s/str1/str2/g 用字串 str2 替換行中所有出現的字串 str1

:.,$ s/str1/str2/g 用字串 str2 替換正文當前行到末尾所有出現的字串 str1

:1,$ s/str1/str2/g 用字串 str2 替換正文中所有出現的字串 str1

:g/str1/s//str2/g 功能同上

從上述替換命令可以看到:g 放在命令末尾,表示對搜尋字串的每次出現進行替換;不加 g,表示只對搜尋

字串的首次出現進行替換;g 放在命令開頭,表示對正文中所有包含搜尋字串的行進行替換操作。

鑑於大家在使用vi 的時候有一定的陌生,在這裡借花獻佛,從兄弟版[shell]中整理出以下關於vi程式設計的高階技巧,希望對大家學習unix有所幫助,並希望大家能結合使用hpux的心得體會對這些經驗進行進一步的擴充套件。

1.交換兩個字元位置

xp2.上下兩行調換

ddp3.把檔案內容反轉

:g/^/m0/       (未通過)

4.上下兩行合併 

j5.刪除所有行 

dg6.從當前位置刪除到行尾

d$7.從當前位置複製到行尾

y$ 如果要貼上到其他地方 p 就可以了

由於vi 是建立在 ex 上的 所以 當鍵入 : 時就來到了 ex 命令狀態 

8.:ab string strings 

例如 ":ab usa united states of america" ,

當你在文見裡插入 usa 時 

united states of america 就蹦出來了

9.:map keys new_seq 

定義你當前 鍵盤命令 

10.:set [all] 

vi or ex  的編輯狀態

如 顯示每行 :set nu 

11.在命令狀態下,nyy表示拷貝從游標行起的下n行內容,p表示paste,可剛複製的內容貼上在游標處的

下面。 

12.單個字元替換用r,覆蓋多個字元用r,用多個字元替換乙個字元用s,整行替換用s 

13.:%s/old_word/new_word/g

這個指令是於在整個檔案中替換特定字串  

14.游標控制

k:上移 nk 上移n行

j:下移 nj 下移n行

將游標移到第n行,按下 mk

將游標移到第m行,按下 "ay'k

即將第n到m的行存到a暫存器,以此類推,b,c........暫存器等

這樣就可以將你常用的需要復用的內容貼上到不同的暫存器中以備用

想貼上到某處,直接將游標移到某地,按下 『ap 即可,以此類推,b,c........暫存器等

在當前螢幕中

h 跳到第一行

m 跳到中間一行

l 跳到最後一行 

15.表8-2 刪除命令

刪除命令操作

d l 刪除當前字元(與x命令功能相同)

d 0 刪除到某一行的開始位置

d ^ 刪除到某一行的第乙個字元位置(不包括空格或ta b字元)

d w 刪除到某個單詞的結尾位置

d 3 w 刪除到第三個單詞的結尾位置

d b 刪除到某個單詞的開始位置

d w 刪除到某個以空格作為分隔符的單詞的結尾位置

d b 刪除到某個以空格作為分隔符的單詞的開始位置

d 7 b 刪除到前面7個以空格作為分隔符的單詞的開始位置

d) 刪除到某個語句的結尾位置

d 4) 刪除到第四個語句的結尾位置

d( 刪除到某個語句的開始位置

d } 刪除到某個段落的結尾位置

d  修改到某個段落的結尾位置

c '`

6  for machine in $addr

7   do

8     ping  $machine -n 2

9   done

10  done

VIM多行縮排技巧

vim入門有一段時間了。除了一些基本操作已經熟練以外,似乎自己還有很多東西木有了解。但是許多vim的指導教程都說會遇到瓶頸,想要堅持下來就得靠平時積累。於是乎,我就嘗試著一點一點地去了解去做。這次是關於縮減的問題。其實很多時候,無論是師弟問問題也好,還是說自己想跑乙個網上的demo也好,縮減永遠是最...

Vim多行縮排及高階命令

vim多行縮排技巧 3.gg shift g 首尾 4.全文本眼替換 s source dist g 或者 1,s source dist g s vivian sky 替換當前行第乙個 vivian 為 sky s vivian sky g 替換當前行所有 vivian 為 sky n,s viv...

Vim多行縮排及高階命令

vim多行縮排技巧 3.10,40s word1 word2 c substitute all word1 between line 10 40 with word2 4.全文本眼替換 s source dist g 或者 1,s source dist g 1.s vivian sky 替換當前行...