1. 程式人生 > >Linux學習筆記(十八) vim(二)、編輯模式、vim實踐練習

Linux學習筆記(十八) vim(二)、編輯模式、vim實踐練習

編輯模式 命令模式 vim實踐

一、

編輯模式

技術分享圖片

命令行模式
技術分享圖片
替換時
如果需要替換的字符中有/符號,那麽可以將分隔符換成#或者@

:1,100s#/good/weer/#well#g

將前一百行中的/good/weer/替換為well

:nohl 取消搜索時的高亮顯示

:x也是保存並退出,但是如果並未改動文件內容,:wq會修改mtime
x不會修改mtime

vim練習

cp /etc/dnsmasq.conf /tmp/1.txt

(1) 分別向下、向右、向左、向上移動6個字符(6j 6l 6h 6k)。
(2) 分別向下、向上翻兩頁(分別按兩次ctrl+f和ctrl+b)。
(3) 把光標移動到第49行(49G)。
(4) 把光標移動到行尾,再移動到行首(Shift+4, Shift+6)。

(5) 移動到1.txt文件的最後一行(G)。
(6) 移動到文件的首行(gg)。
(7) 搜索文件中出現的“dnsmasq”,並數一下該字符串出現的次數(/dnsmsq 然後按n)。
(8) 把從第1行到第10行出現的dnsmasq替換成dns(:1,10s/dnsmasq/dns/g)。
(9) 還原上一步操作(u)。
(10) 把整個文件中所有的etc替換成cte(:1,$s/etc/cte/g)。
(11) 把光標移動到第25行,刪除字符串 “ly”(25G 然後按l向右移動光標找到"ly",按v選中,然後按x)。
(12) 還原上一步操作(u)。
(13) 刪除第50行(50G dd)。
(14) 還原上一步操作(u)。
(15) 刪除第37-42行的所有內容(37G 6dd)。
(16) 還原上一步操作(u)。
(17) 復制第48行的內容並粘貼到第52行下面(48G yy 52G p)。
(18) 還原上一步操作(u)。
(19) 復制第37-42行的內容並粘貼到第44行上面(37G 6yy 44G P)。
(20) 還原上一步操作(按u)。
(21) 把第37-42行的內容移動到第19行下面(37G 6dd 19G p)。
(22) 還原上一步操作(按u)。
(23) 把光標移動到首行,把第1行內容改為“#!/bin/bash”(先按gg,把光標定位到第1行,然後按字母A,進入編輯模式,同時>光標到行末尾,進行修改操作,完成後按ESC)。
(24) 在第1行下面插入新的一行,並輸入“# Hello!”(按o進入編輯模式,同時光標向下另起一行,輸入“# Hello!”)。
(25) 保存文檔並退出(按Esc鍵,輸入“:wq”)。

二、vim用法補充

1.vim編輯器的替換模式與可視模式
在一般模式下按鍵盤上的r和R進入替換模式。如果按小r那麽這時候就進入了替換模式,你下一個輸入的字符會把你當前光標所在處的字符替換,然後自動退出替換模式。如果你按的是大R那麽你下面輸入的所有字符會把後面的字符依次替換,直到按退出替換模式。

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

註意:使用在一般模式使用“ctrl+v”組合鍵可以進入塊操作模式
在這個模式下和可視模式差不多,但是選擇的內容不同,大家可實際操作看看
2.刪除從光標所在處到行尾字符

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

3.刪除從光標所在處到行首字符

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

4.刪除從光標所在行到文件末尾行

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

5.刪除指定範圍內所有行

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

6.把正在編輯的文件另存為新文件

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

7.把其它文件的內容導入到正在編輯的文件的光標所在處

例:把“/root/1.txt” 文件的內容,導入到下在編輯的文件的第10行下面
首先在一般模式下按“10G”把光標定位到第10行
然後按“o”小寫,當前行的下面另起一行,並進入插入模式
最後按鍵盤上的返回到一般模式,再輸入“:r /root/1.txt”回車

8.正在編輯文件時,不退出文件仍可以運行linux命令

列:我下在編輯一個文件,但這時候我想查看“/root/1.txt” 文件的內容,但是我不想退出我正在編輯的文件,那麽我們可以這樣
在編輯模式下輸入“:! cat /root/1.txt”

9.把命令的執行結果導入到正在編輯的文件的光標所在處

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

10.查找替換的功能使用

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

註意:在上面所有命令的最後面都可以加g或者c一起配合使用,g的意思是行中出現的所有指定字符都替換,但是如果加了g那麽前面就不能出現位置定義字符,反之前面出現的位置定義字符,那麽後面就不可以出現g。在後面加c可以跟用戶交互,在查找到符合命令的字符提示用戶是否替換,需要用戶確認,否則不需要確認

11.把輸入的指定字符替換為指定的字符

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

12.快捷鍵的定義

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

註意:命令中ctrl+v和ctrl+b是鍵盤上的組合鍵,不是輸入進去的字符,是需要按的組合鍵,其中第一個ctrl+v就照按,第二個ctrl+b是要定義的快捷鍵,根據自己需要的設置按。然後“I”的意思就是一般模式下的“I”進入插入模式並將光標移動到行首,然後接著輸入“#”號,後面“”的意思是退出編輯模式

13.同進編輯兩個文件或者

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

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

註意:在一般模式下按“ctrl+w”組合鍵,再按左右,或者上下方向鍵,可以在不同窗口之間切換如果在一般模式下輸入“:only”那麽只保留當前正在編輯的窗口,其它全關閉

15.在vim查找關鍵字時不區分大小寫

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

16.如何把文件設置成只讀文件,只有強制保存時才能保存

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

17.把文件恢復到打開時的狀態

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

18.配置文件的使用
以上那麽多操作,像設置忽略大小寫,設定快捷鍵,設定自動替換,等一些操作,當電腦重啟後就沒有了。這時候我們可以把這些命令寫入配置文件,這樣電腦重啟後還是可以使用,我們有兩種方法
第一種:所有用戶都統一
修改“/etc/vimrc”文件,在末尾加入需要設置的命令,就是我紅色標註的部分
第二種:只對當前用戶
修改用戶家目錄下的“.vimrc”文件,註意有個點,這是隱藏文件,一般用戶家下沒有,需要自己手工創建
轉自 http://www.apelearn.com/bbs/thread-9334-1-1.html

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
轉自 http://www.apelearn.com/bbs/thread-407-1-1.html

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,就刪除了。
轉自 http://www.apelearn.com/bbs/thread-842-1-1.html
小鍵盤問題

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

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

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

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

選擇 設置為普通。
轉自 http://www.apelearn.com/bbs/thread-7215-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 重新編輯這個文件,會提示輸入密碼,如果輸入的密碼不正確,同樣會顯示為亂碼!
註意:文件加密後,千萬別忘了密碼!
二、 解密用vi加密的文件(前提是你知道加密的密碼):
1) 用 vim/vi 打開文件如text.txt,要輸入正確的密碼,然後在編輯時,將密碼設置為空,方法是輸入下面的命令:
:set key=
然後直接回車,保存文件後,文件已經解密了。
2) 或者這樣也行:
在正確打開文件後用 “:X” 指令,然後給一個空密碼也可以。保存用“wq!”保存。
兩種方法實際上效果是一樣的。

轉自 http://www.apelearn.com/bbs/thread-7750-1-1.html

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

用vim打開一個空白文檔,然後把已經復制的代碼給粘貼進來,發現它有自動縮進功能,最終導致粘貼的文本一行比一行靠右,看起來亂成一團。比較快的解決辦法是,在粘貼文檔前,在命令行模式下,輸入

:set noai nosi

然後按‘i‘ 進入編輯模式,再粘貼已經復制的代碼內容,這樣就不會自動縮進了。

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

:set paste
轉自 http://www.apelearn.com/bbs/thread-6753-1-1.html

Linux學習筆記(十八) vim(二)、編輯模式、vim實踐練習