您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關linux中常用工具vi/vim的使用方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
為什么要學 vim
linux 有大量的配置文件,所以 linux 的文本處理工具也是比較多的,常用的有
less vi head tail cat grep sed awk .... 。其中編輯一些配置文件,及查看日志時,常用的工具就是 vim 和 less ,而且它兩的快捷鍵又很相似,所以學會 vim 的使用還是挺必要的。
預期讀者
運維,開發、及想對 linux 進階的人。學 bash 的話, 會 vim 還是方便點,不可能每次都要跑到 windows 上去編輯吧
開始學習
vi 的三種模式及切換
一般模式
編輯模式
指令列模式
graph LR A[一般模式] -- I/O/A/R--> B[編輯模式] A -- 冒號/問號/正斜杠 --> C[指令列模式] C -- ESC --> A B -- ESC --> A
從一般模式切換到編輯模式各命令區別
i 在當前光標處插入
o 另起一行插入
a 后面一個字符插入
r 替換輸入。這個在改單個字符很有用,因為它只替換一個字符又變回一般模式了
常用按鍵及功能
下面的指令是區分大小寫的
移動游標的方法 (一般模式)
↑→↓← 上右下左移動,5↓ 向下移動 5 行
ctrl + f 向下翻頁,翻半頁命令為 ctrl + d
ctrl + b 向上翻頁,翻半頁命令為 ctrl + u
0 移動到一行的開頭,移到到一行的結尾為 $
gg 到開頭,G 移動到結尾 ,3G 移動到第 3 行
<enter> 游標向下移動一行,3<enter> 游標向下移動 3 行
刪除,復制,粘貼 (一般模式)
x 向后刪除一個字符,X 向前刪除一個字符,3x 向后刪除 3 個字符
dd 刪除一行,3dd 刪除3 行
d$ 從當前光標位置刪除到結尾 ,dG 從當前位置到最后一行全部刪除
yy 復制當前行 ,3yy 復制 3 行
p 在下一行粘貼復制的東西,P 在上一行粘貼
u 撤回操作
. 重復上一次操作
查找與替換(一般模式)
/word 向下查找字符,?word 向上查找字符
n 重復前一個搜索的動作,按下 n 后,會繼續找下一個匹配的字符
1,5s/sanri/9420/g 搜索第 1 行到第 5 行的 sanri 字符串,替換成 9420
1,$s/sanri/9420/g 搜索第 1 行到最后一行的 sanri 字符串,替換成 9420
選擇文本 (一般模式)
v 然后使用方向鍵,相當于在 windows 按住鼠標拖動
V 光標經過的行會選擇
ctrl +v 選擇列模式
y 選擇的文本復制
d 選擇的文本刪除
總結一下
從上面的命令來看在vi 中,一些字母都是有著特別的含義的,比如
$ 代表行結尾,0 代表行開頭,G 代表最后一行,y 代表復制,d 代表刪除行,x 代表刪除字符、
數字一般表示重復做幾次的意思,大小寫代表的含義一般剛好相反、
翻頁的快捷鍵剛好是英文的縮寫
ctrl + f front page
ctrl + b back page
ctrl + d down page
ctrl + u up page
保存文件另存為(命令模式)
:w 保存文件,:w! 強制寫文件(需要權限)
:q 退出,:q! 退出不保存
:wq 保存并退出,:wq! 強制保存并退出(需要權限)
:1,5 w [filename] 將第一行到第 5 行的數據寫入新的文件
:! command 執行命令,在編輯文件的時候可以查看一些信息而不需要退出文件
:set nu 顯示行號,:set nonu 不顯示行號
練習一下
wget 'http://linux.vbird.org/linux_basic/0310vi/man.config'
使用 vi 開啟目錄下的 man.config 這個檔案;
在 vi 中設定一下行號;
移動到第 58 行,向右移動 40 個字元,請問你看到的雙引號內是什么目錄?
移動到第一行,并且向下搜尋一下‘ bzip2 '這個字串,請問他在第幾行?
接著下來,我要將 50 到 100 行之間的‘小寫 man 字串'改為‘大寫 MAN 字串',并且一個一個挑選是否需要修改,如何下達指令?如果在挑選過程中一直按‘y', 結果會在最后一行出現改變了幾個 man 呢?
修改完之后,突然反悔了,要全部復原,有哪些方法?
7.我要復制 65 到 73 這九行的內容(含有MANPATH_MAP),并且貼到最后一行之后;
21 到 42 行之間的開頭為 # 符號的注解資料我不要了,要如何刪除?
將這個檔案另存成一個 man.test.config 的檔名;
去到第 27 行,并且刪除 15 個字元,結果出現的第一個單字是什么?
在第一行新增一行,該行內容輸入‘I am a student...';
儲存后離開吧!
答案如下:
vi man.config :set nu 58G 40→ /dir/bin/foo gg /bzip2 118 行 50,100s/man/MAN/gc 25 處修改,有 23 行有變動 u ,或者不保存退出 :q! 定位到 65 行 65G ,復制 9 行 9yy ,定位最后一行 G ,粘貼 p :21,42s/^#//g //里面是可以使用正則的 :w man.test.config 27G 15x you 定位到第一行 gg ,i <enter> 然后輸入內容 :wq
多文件編輯
vi 后面可以接多個文件,像這樣
vi man.config test.txt
n 編輯下一個文件
N 編輯上一個文件
files 顯示當前正在編輯的所有文件
多視窗編輯
可以支持在同一個窗口打開多個文件,使用 :sp [filename] 命令,像這樣
:sp /etc/hosts
每一個窗口都有自己單獨的模式和命令
[ctrl]+w+↓ 切換到下一個窗口
[ctrl]+w+↑ 切換到上一個窗口
編輯 vim 的配置文件 ~/.vimrc (簡單配置)
每行一個配置 " 是注釋
可以使用命令 :set all 查看所有配置項,常用的配置項如下:
set nu
設置行號
set ts=4
設置按下一 tab 時,縮進 4 個空格的位置
set tabstop=4
設置顯示的時候,一個 tab 占 4 個空格的寬度
set autoindent
自動縮進,這對于寫代碼很有用
上面的命令已經設置好了展示,退格和按下 tab 都是用以制表符為單位。如果需要使用空格來表示制表符則需要加以下幾個配置
set expandtab
使用空格來表示縮進,而不是制表符
set softtabstop=4
退格的時候,如果遇到四個連續的空格,一次性刪除,而不是一個一個的刪
``
感謝各位的閱讀!關于“linux中常用工具vi/vim的使用方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。