歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 實用好記的Vim命令

實用好記的Vim命令

日期:2017/3/3 15:47:59   编辑:關於Linux

命令1: [vydc] [ia] [pair_char]

上面命令指的是該命令由三部分組成,每部分可以是[ ]裡面的任意一個字符

第一部分指定“操作類型”

第二部分和第三部分指定“操作范圍”,是基於當前光標所在位置的,這個非常重要

(1)

v: visual select

y: copy

d: delete

c: change,和delete的區別在於它會先delete,然後進入"insert mode";等價於先 d 然後按下 i 進入"insert mode"

(2)

pair_char 可以是一些成對的字符,比如 { [ ( < " ' 也可以使用它們的對應right close版本,比如} ] 等等

pair_char 的特殊情況, 可以是w, 代表光標所在的單詞(以空格分隔), 這時中間是使用i還是a, 區別在於操作結果包不包括單詞右邊的空格

(3)

i: exclude the pair_char

a: include the pair_char

i 和 a 的區別在於指定的“操作范圍”包不包括由pair_char指定的這一對字符,即 {} 或 [] 或 () 或 "" 等等

舉個例子吧:

假設有一文本行為 abcd "fgh ijk <lmn>";

光標位於m處(下劃線處)

vi< 作用:選中了 lmn

ya" 作用:復制了 "fgh ijk <lmn>"

di" 作用:刪除了 fgh ijk <lmn>

ci< 作用: 刪除了 lmn 並且進入了"insert mode",光標位於<>中間

命令2: [vydc] [tf] [a_char]

(1)

參見命令1的(1)

(2)

t: till, exclude the character 'a_char'

f: find, include the character 'a_char'

t和f 代表從左往右

另外,還可以使用大寫的T和F,代表從右往左

(3)

a_char: 代表某一個字符,特殊情況是0和$, 代表行首和行尾

命令3: 大小寫轉換 gU, gu

(1)

[visual_select_something_by_someway]gU

[visual_select_something_by_someway]gU

先通過某種方式選擇某個范圍的內容(可以通過命令1,2中的v指令進行選擇),然後將其轉換成大寫或小寫

(2)

gU [ia] [pair_char]

gu [ia] [pair_char]

gU [tf] [a_char]

gu [tf] [a_char]

這種方式是先通過gU指定要轉換成大寫,然後通過後兩部分指定“操作范圍”

[ia] [pair_char] 參見命令1的解釋

這裡中間部分使用 i 或 a 好像是沒有什麼區別

[tf] [a_char] 參見命令2的解釋

本欄目更多精彩內容:http://www.bianceng.cn/OS/Linux/

命令4: 宏命令

錄制命令 qa [do_some_routine_job_in_this_line_and_move_to_next_line] q

執行上一步錄制的命令 [n]@a

qa中的a代表將錄制的命令放置於哪個寄存器中,對應於[n]@a 中的a。所以,a也可以換成b,c,d...

[n]@a中的n代表執行該錄制命令的次數,省略n即執行1次

宏命令非常適合執行一些針對每一行都執行有規律的的操作,重點在於,首先,按下qa進入錄制模式,然後在第一行針對該行進行有規律的操作,最終移到下一行,按下a退出錄制模式,使用[n]@a對余下的所有行進行批量處理

例子:

假設有如下的文本行,每一行代表一個用戶名,現在需要對該用戶名進行密碼重置為123456,簡單起見,假設只有5行:

user1
user2
user3
user4
user5

光標置於第一行某個位置處,在“Normal mode” 模式下按順序按 qaIalter user_table set password='123456' where username='<Esc>A';<Esc>ja

好了,錄制命令完畢,執行命令4@a,即把剩下的4行處理為與第一行相同的結果了

執行結果如下:

alter user_table set password='123456' where username='user1';
alter user_table set password='123456' where username='user2';
alter user_table set password='123456' where username='user3';
alter user_table set password='123456' where username='user4';
alter user_table set password='123456' where username='user5';

命令5: 代碼自動縮進 =

(1) 光標移到某個位置,然後,使用 vi{ 選擇要自動縮排的代碼塊{ code },最後,按=

(2) 按下大寫V進入行選擇模式,使用 jk 上下移動選擇要自動縮排的行集, 最後,按 =

(3) 最懶的方式, gg到第一行, VG 選擇該文件所有行,最後,按 =,格式化所有代碼

命令6: 倒置文本 :g/^/m0

讓第一行成為最後一行,第二行成為倒數第二行,最後一行成為第一行。

作者:DayByDay

出處:http://www.cnblogs.com/DayByDay

Copyright © Linux教程網 All Rights Reserved