天天看點

5.5 進入編輯模式 5.6 vim指令模式 5.7 vim實踐

  • 5.5 進入編輯模式
  • 5.6 vim指令模式
  • 5.7 vim實踐
  •  擴充
  1. vim的特殊用法 http://www.apelearn.com/bbs/thread-9334-1-1.html
  2. vim常用快捷鍵總結 http://www.apelearn.com/bbs/thread-407-1-1.html
  3. vim快速删除一段字元 http://www.apelearn.com/bbs/thread-842-1-1.html
  4. vim亂碼 http://www.apelearn.com/bbs/thread-6753-1-1.html
  5. 小鍵盤問題 http://www.apelearn.com/bbs/thread-7215-1-1.html
  6. vim加密 http://www.apelearn.com/bbs/thread-7750-1-1.html

  • i在目前字元前插入,大I在光标所在行的行首開始插入
  • a在目前字元後插入,大A在光标所在行的行尾開始插入
  • o在目前行的下一行插入新的一行,大O在目前行的上一行插入新的一行

5.6 vim 指令模式

  • /word 向光标之後查找一個字元串word,按n向後繼續搜尋 *shift+n 向前搜 *
  • ?word 向光标之前查找一個字元串word,按n向前繼續搜尋
  • :n1,n2s/word1/word2/g 在n1-n2之間查找word1并且替換為word2,不加g則為隻替換每行的第一個word1
  • :1,$s/word1/word2/g 将文檔中所有的word1替換為word2,不加g則隻替換每行的第一個word1

如果要替換/etc/hosts 為aminglinux.com

:1,$s//etc/hosts/aminglinux.com/g \為拖譯 這樣寫起來有點麻煩,看起來很暈

可以使用#作為文法的組成 :1,$s#/etc/hosts#aminglinux.com#g 或者使用@符号也可以額 :1,$s@/etc/[email protected]@g

:q 退出

:wq 儲存退出

:q!強制退出,改動不生效

:w!強制儲存,在root使用者下即使文本隻讀也可以完成儲存

:set nu顯示行号

1 # Configuration file for dnsmasq.
  2 #
  3 # Format is one option per line, legal options are the same
  4 # as the long options legal on the command line. See
  5 # "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details.
  6 
  7 # Listen on this specific port instead of the standard DNS port
  8 # (53). Setting this to zero completely disables DNS function,
  9 # leaving only DHCP and/or TFTP.
 10 #port=5353
 11 
 12 # The following two options make you a better netizen, since they
 13 # tell dnsmasq to filter out queries which the public DNS cannot
 14 # answer, and which load the servers (especially the root servers)
 15 # unnecessarily. If you have a dial-on-demand link they also stop
 16 # these requests from bringing up the link unnecessarily.
 17 
 18 # Never forward plain names (without a dot or domain part)
 19 #domain-needed
 20 # Never forward addresses in the non-routed address spaces.
 21 #bogus-priv
 22 
 23 
 24 # Uncomment this to filter useless windows-originated DNS requests
 25 # which can trigger dial-on-demand links needlessly.
 26 # Note that (amongst other things) this blocks all SRV requests,
 27 # so don't use it if you use eg Kerberos, SIP, XMMP or Google-talk.:set nu      

:set nonu 不顯示行号

:nohl (不高量)

:x 和 :wq 在更改檔案内容的情況下都是儲存退出,效果一樣,但是如果隻是打開看了一下沒有做任何操作,:wq會更改檔案通路時間 mtime,:x則不會更改mtime,沒有改動就不會更改檔案的mtime。

先把etc目錄的dnsmasq 檔案 拷貝到 tmp目錄下并且改名為1.txt,指令如下

[root@aminglinux-01 ~]# cp /etc/dnsmasq.conf /tmp/1.txt[root@aminglinux-01 ~]# vim /tmp/1.txt      

擴充

1. vim的特殊用法 http://www.apelearn.com/bbs/thread-9334-1-1.html

  • vim編輯器裡面一些不為人知的操作
  1. vim編輯器的替換模式與可視模式 在一般模式下按鍵盤上的r和R進入替換模式。如果按小r那麼這時候就進入了替換模式,你下一個輸入的字元會把你目前光标所在處的字元替換,然後自動退出替換模式。如果你按的是大R那麼你下面輸入的所有字元會把後面的字元依次替換,直到按退出替換模式。

在一般模式下按鍵盤上的v和V進入可視模式。如果是按小v那麼這時候就時入了視圖模式,這時候你移動光标會把你光标所在處到光标結尾處的所有字元選中,這時候可以進行複制,删除等操作。如果是按大V同樣也是進入了視圖模式,這時候移動光标會把光标所在行到光标結尾的行的所有内容選中,也可以進行複制,删除等操作。

注意:使用在一般模式使用“ctrl+v”組合鍵可以進入塊操作模式 在這個模式下和可視模式差不多,但是選擇的内容不同,大家可實際操作看看

  1. 删除從光标所在處到行尾字元

在一般模式下輸入大寫“D”或者輸入“d$”

  1. 删除從光标所在處到行首字元

在一般模式下輸入大寫“d^”

  1. 删除從光标所在行到檔案末尾行

在一般模式下輸入大寫“dG”

  1. 删除指定範圍内所有行

例:删除10到15行的所有内容 在一般模式下輸入“:10,15d”回車

  1. 把正在編輯的檔案另存為新檔案

例:把正在編輯的檔案另存為到“/root/”下面并儲存為1.txt 在一般模式下輸入“:w /root/1.txt” 例:把正在編輯的檔案的第10行到第15行另存為1.txt并儲存到root目錄下在一般模式下輸入“:10,15 w /root/1.txt”

  1. 把其它檔案的内容導入到正在編輯的檔案的光标所在處

例:把“/root/1.txt” 檔案的内容,導入到下在編輯的檔案的第10行下面 首先在一般模式下按“10G”把光标定位到第10行 然後按“o”小寫,目前行的下面另起一行,并進入插入模式 最後按鍵盤上的傳回到一般模式,再輸入“:r /root/1.txt”回車

  1. 正在編輯檔案時,不退出檔案仍可以運作linux指令

列:我下在編輯一個檔案,但這時候我想檢視“/root/1.txt” 檔案的内容,但是我不想退出我正在編輯的檔案,那麼我們可以這樣 在編輯模式下輸入“:! cat /root/1.txt”

  1. 把指令的執行結果導入到正在編輯的檔案的光标所在處

這題我們可以結合上面兩題,在一般模式下輸入“:r ! cat /root/1.txt”

  1. 查找替換的功能使用

例:在10到15行的行首增加“#” 在一般模式下輸入“:10,15s/^/#/” 例:在10到15行的行首去掉“#” 在一般模式下輸入“:10,15s/^#//” 例:在10到15行的行首增加“//” 在一般模式下輸入“:10,15s/////”或者“:10,15s@@//@”或者“:10,15s#^#//#”

  • 注意:在上面所有指令的最後面都可以加g或者c一起配合使用,g的意思是行中出現的所有指定字元都替換,但是如果加了g那麼前面就不能出現位置定義字元,反之前面出現的位置定義字元,那麼後面就不可以出現g。在後面加c可以跟使用者互動,在查找到符合指令的字元提示使用者是否替換,需要使用者确認,否則不需要确認
  1. 把輸入的指定字元替換為指定的字元

例:在編輯一個文檔的時候,我要頻繁的輸入“abcdefghijklmnopqrstuvwxyz”這樣的連續字元串,這時候我想隻輸入一個或者一串指定字元就可以替換為剛才的字元,比如我指定輸入“aming”系統就會自動把“aming”替換成“abcdefghijklmnopqrstuvwxyz” 在一般模式下輸入“:ab aming abcdefghijklmnopqrstuvwxyz”然後回車,再進入編輯模式,當你輸入“aming”的時候就會發現自動替換成了“abcdefghijklmnopqrstuvwxyz”

  1. 快捷鍵的定義

例:我想在一般模式下按鍵盤上的ctrl+b快捷鍵,會自動在光标所在行的行首插入“#”号,然後自動退出到一般模式 在一般模式下輸入“:map ctrl+v ctrl+b I # ”然後回車,這時候在一般模式按鍵盤上的ctrl+b的時候就會在光标所在的行首插入“#”号了

  • 注意:指令中ctrl+v和ctrl+b是鍵盤上的組合鍵,不是輸入進去的字元,是需要按的組合鍵,其中第一個ctrl+v就照按,第二個ctrl+b是要定義的快捷鍵,根據自己需要的設定按。然後“I”的意思就是一般模式下的“I”進入插入模式并将光标移動到行首,然後接着輸入“#”号,後面“”的意思是退出編輯模式
  1. 同進編輯兩個檔案或者

例:我現正在編輯1.txt檔案,然後我想再打開root目錄下的2.txt同時編輯,并把視窗上下水準分隔,一起顯示 在一般模式下輸入“:new /root/2.txt”

例:我現正在編輯1.txt檔案,然後我想再打開root目錄下的2.txt同時編輯,并把視窗左右垂直分隔,一起顯示 在一般模式下輸入“:vsplit /root/2.txt”

  • 注意:在一般模式下按“ctrl+w”組合鍵,再按左右,或者上下方向鍵,可以在不同視窗之間切換如果在一般模式下輸入“:only”那麼隻保留目前正在編輯的視窗,其它全關閉
  1. 在vim查找關鍵字時不區分大小寫

在一般模式下輸入“:set ic” 如果想取消就輸入“:set noic”

  1. 如何把檔案設定成隻讀檔案,隻有強制儲存時才能儲存

在一般模式下輸入“:set readonly”

  1. 把檔案恢複到打開時的狀态

在一般模式下輸入“:e!”

  1. 配置檔案的使用 以上那麼多操作,像設定忽略大小寫,設定快捷鍵,設定自動替換,等一些操作,當電腦重新開機後就沒有了。這時候我們可以把這些指令寫入配置檔案,這樣電腦重新開機後還是可以使用,我們有兩種方法 第一種:所有使用者都統一 修改“/etc/vimrc”檔案,在末尾加入需要設定的指令,就是我紅色标注的部分 第二種:隻對目前使用者 修改使用者家目錄下的“.vimrc”檔案,注意有個點,這是隐藏檔案,一般使用者家下沒有,需要自己手工建立

2. vim常用快捷鍵總結http://www.apelearn.com/bbs/thread-407-1-1.html

  • 分享幾個vim裡常用的快捷鍵 分享 vim 1,注釋所有的行:ctrl+v j/k+ shift +i 2,檢視光标目前的man手冊 shift+k 3,d+f+字元 4,選中面積 v+t+字元 5,在vim裡面删除光标後的所有字元 shift+d 6,删除目前光标上的單詞 d+i+w 7,選中目前光标上的單詞 v+i+w

3. vim快速删除一段字元http://www.apelearn.com/bbs/thread-842-1-1.html

  • vim 快速删除指定的一段字元

vim 因為不是一行,是以用dd不行,但用x去删除的話,又太慢。今天從網上發現一種特别快速删除的方法。 那就是使用da,如何使用,請看下面的例子。 比如,我的1.txt内容如下:

11111111111111111111111111 222222222222222222222222222222B3NzaC1yc2EAAAABIwAAAQEAv5oJvuIdaaVUsDOA2FbfnL0K2GbTc05Yg6TGM+8SNleI6bU5MhAy2uP5J4yCrMu43911hEJ2uh1UPycWX1O4xpEgUm8TGIs1HoQySnukv3g121uOLACRj37qqL9j4RRhrUxhunAW3alLSGIV0mxFD0ApyycFoLA/1I3hU7Yyx7tdripwz0FeHHhT3Qjfe9yC8Z6Ptq7cvBPXBBvc/G8pXVq3bnGMtj9Ifmbh7NnTvfHnEZGacf2MR4FSy0MMuNL0k3X5sBlsyP9/rXY9CPOh73eKUhZQoK3uWjwuDRp/dqrxgWDVeg0NZ+0t130pKu/LSREothWoVBu54rrtUUIdb3Sq0xsW4x9EhKGJJHPvBrbGbiDPTKBUaHdQEfmQQPAWeeX1hMC7lCunnfgTzf39Pv/2VpXz2l8NH2Jem0nrS48A6sf4eFz5VIakoRySMQu/6mY4s9aU3arbX+JvUE9s2/7D+JdqJlINtQqRU4V92LQq3BJaSMmKiwnPSytxDtARI3+8I2XXqFCJ5bBY7e3333333333333333333333 44444444444444444444444444444 我現在想删除22222222222和33333333333333333之間的字元隻需要這樣做:

  1. 把1.txt的内容改成: 11111111111111111111111111 222222222222222222222222222222{B3NzaC1yc2EAAAABIwAAAQEAv5oJvuIdaaVUsDOA2FbfnL0K2GbTc05Yg6TGM+8SNleI6bU5MhAy2uP5J4yCrMu43911hEJ2uh1UPycWX1O4xpEgUm8TGIs1HoQySnukv3g121uOLACRj37qqL9j4RRhrUxhunAW3alLSGIV0mxFD0ApyycFoLA/1I3hU7Yyx7tdripwz0FeHHhT3Qjfe9yC8Z6Ptq7cvBPXBBvc/G8pXVq3bnGMtj9Ifmbh7NnTvfHnEZGacf2MR4FSy0MMuNL0k3X5sBlsyP9/rXY9CPOh73eKUhZQoK3uWjwuDRp/dqrxgWDVeg0NZ+0t130pKu/LSREothWoVBu54rrtUUIdb3Sq0xsW4x9EhKGJJHPvBrbGbiDPTKBUaHdQEfmQQPAWeeX1hMC7lCunnfgTzf39Pv/2VpXz2l8NH2Jem0nrS48A6sf4eFz5VIakoRySMQu/6mY4s9aU3arbX+JvUE9s2/7D+JdqJlINtQqRU4V92LQq3BJaSMmKiwnPSytxDtARI3+8I2XXqFCJ5bBY7e}3333333333333333333333 44444444444444444444444444444 注意,2222 和{ 之間沒有換行。
  2. 把光标移動到第一個{,也就是最後一個2後,然後輸入da{ 即可把{}内的字元全部删除。

另外,除了可以使用{ 外,還可以使用 ", ', ( 等成對的特殊符号。

其實vim還有一個比較常用的那就是v了,用v和d來删除也挺友善的: 打開一個文本後,直接按v,然後移動光标可以選中文本,當選中完你想要的文本後,直接按d,就删除了。

4. vim亂碼 http://www.apelearn.com/bbs/thread-6753-1-1.html

  • vim 粘貼代碼自動縮進導緻全亂了

用vim打開一個空白文檔,然後把已經複制的代碼給粘貼進來,發現它有自動縮進功能,最終導緻粘貼的文本一行比一行靠右,看起來亂成一團。比較快的解決辦法是,在粘貼文檔前,在指令行模式下,輸入 :set noai nosi 然後按'i' 進入編輯模式,再粘貼已經複制的代碼内容,這樣就不會自動縮進了。

有時候,這樣的方法不好用,可以嘗試這種:

:set paste

5. 小鍵盤問題 http://www.apelearn.com/bbs/thread-7215-1-1.html

  • 用戶端putty, xshell連接配接linux中vim的小鍵盤問題

在putty上用vi的時候,開NumLock時按小鍵盤上的數字鍵并不能輸入數字,而是出現一個字母然後換行(實際上是指令模式上對應上下左右的鍵)。解決方法

選項Terminal->Features裡,找到Disable application keypad mode,選上就可以了

在xmanager 4 中的xshell也有小鍵盤問題 解決方法為

修改session 屬性 -> 終端->VT模式->初始數字鍵盤模式

選擇 設定為普通。

6. vim加密 http://www.apelearn.com/bbs/thread-7750-1-1.html

  • 檔案加密
  •  Linux用vim/vi給檔案加密和解密
  • 一、 利用 vim/vi 加密: 優點:加密後,如果不知道密碼,就看不到明文,包括root使用者也看不了; 缺點:很明顯讓别人知道加密了,容易讓别人把加密的檔案破壞掉,包括内容破壞和删除;

vi編輯器相信大家都很熟悉了吧,vi裡有一個指令是給檔案加密的,舉個例子吧: 1) 首先在root主目錄/root/下建立一個實驗檔案text.txt: [root@www ~]# vim/vi text.txt 2) 進到編輯模式,輸入完内容後按ESC,然後輸入:X(注意是大寫的X),回車; 3) 這時系統提示讓你輸入密碼,2次,如下所示: 輸入密碼: ******* 請再輸入一次: ******* 4) 儲存後退出,現在這個檔案已經加密了; 5) 用cat或more檢視檔案内容,顯示為亂碼;用 vim/vi 重新編輯這個檔案,會提示輸入密碼,如果輸入的密碼不正确,同樣會顯示為亂碼! 注意:檔案加密後,千萬别忘了密碼!