生活随笔
收集整理的這篇文章主要介紹了
【Linux基础 11】vi和vim编辑器的使用
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
vi —— 終端中的編輯器 目標(biāo) vi 簡(jiǎn)介 打開(kāi)和新建文件 三種工作模式 常用命令 分屏命令 常用命令速查圖 01. vi 簡(jiǎn)介 1.1 學(xué)習(xí) vi 的目的 在工作中,要對(duì) 服務(wù)器 上的文件進(jìn)行 簡(jiǎn)單 的修改,可以使用 ssh 遠(yuǎn)程登錄到服務(wù)器上,并且使用 vi 進(jìn)行快速的編輯即可 常見(jiàn)需要修改的文件包括: 源程序 配置文件 ,例如 ssh 的配置文件 ~/.ssh/config 在沒(méi)有圖形界面的環(huán)境下,要編輯文件,vi 是最佳選擇! 每一個(gè)要使用 Linux 的程序員,都應(yīng)該或多或少的學(xué)習(xí)一些 vi 的常用命令 1.2 vi 和 vim 在很多 Linux 發(fā)行版中,直接把 vi 做成 vim 的軟連接 vi vi 是 Visual interface 的簡(jiǎn)稱,是 Linux 中 最經(jīng)典 的文本編輯器 vi 的核心設(shè)計(jì)思想 —— 讓程序員的手指始終保持在鍵盤(pán)的核心區(qū)域,就能完成所有的編輯操作
vi 的特點(diǎn): 沒(méi)有圖形界面 的 功能強(qiáng)大 的編輯器只能是編輯 文本內(nèi)容 ,不能對(duì)字體、段落進(jìn)行排版 不支持鼠標(biāo)操作 沒(méi)有菜單 只有命令 vi 編輯器在 系統(tǒng)管理 、服務(wù)器管理 編輯文件時(shí),其功能永遠(yuǎn)不是圖形界面的編輯器能比擬的 vim vim = vi improved
vim 是從 vi 發(fā)展出來(lái)的一個(gè)文本編輯器,支持 代碼補(bǔ)全 、編譯 及 錯(cuò)誤跳轉(zhuǎn) 等方便編程的功能特別豐富,在程序員中被廣泛使用,被稱為 編輯器之神 查詢軟連接命令(知道) 在很多 Linux 發(fā)行版中直接把 vi 做成 vim 的軟連接 # 查找 vi 的運(yùn)行文件$ which vi
$ ls -l /usr/bin/vi
$ ls -l /etc/alternatives/vi
$ ls -l /usr/bin/vim.basic# 查找 vim 的運(yùn)行文件
$ which vim
$ ls -l /usr/bin/vim
$ ls -l /etc/alternatives/vim
$ ls -l /usr/bin/vim.basic
02. 打開(kāi)和新建文件 $ vi 文件名
如果文件已經(jīng)存在,會(huì)直接打開(kāi)該文件 如果文件不存在,會(huì)新建一個(gè)文件 2.1 打開(kāi)文件并且定位行 在日常工作中,有可能會(huì)遇到 打開(kāi)一個(gè)文件,并定位到指定行 的情況 例如:在開(kāi)發(fā)時(shí),知道某一行代碼有錯(cuò)誤 ,可以 快速定位 到出錯(cuò)代碼的位置 這個(gè)時(shí)候,可以使用以下命令打開(kāi)文件 $ vi 文件名 +行數(shù)
提示:如果只帶上 + 而不指定行號(hào),會(huì)直接定位到文件末尾
2.2 異常處理 如果 vi 異常退出,在磁盤(pán)上可能會(huì)保存有 交換文件 下次再使用 vi 編輯該文件時(shí),會(huì)看到以下屏幕信息,按下字母 d 可以 刪除交換文件 即可 提示:按下鍵盤(pán)時(shí),注意關(guān)閉輸入法
03. 三種工作模式 vi 有三種基本工作模式: 命令模式 打開(kāi)文件首先進(jìn)入命令模式 ,是使用 vi 的 入口 通過(guò) 命令 對(duì)文件進(jìn)行常規(guī)的編輯操作,例如:定位 、翻頁(yè) 、復(fù)制 、粘貼 、刪除 …… 在其他圖形編輯器下,通過(guò) 快捷鍵 或者 鼠標(biāo) 實(shí)現(xiàn)的操作,都在 命令模式 下實(shí)現(xiàn) 末行模式 —— 執(zhí)行 保存 、退出 等操作 要退出 vi 返回到控制臺(tái),需要在末行模式下輸入命令 末行模式 是 vi 的 出口 編輯模式 —— 正常的編輯文字
提示:在 Touch Bar 的 Mac 電腦上 ,按 ESC 不方便,可以使用 CTRL + [ 替代
末行模式命令 命令英文功能 w write 保存 q quit 退出,如果沒(méi)有保存,不允許退出 q! quit 強(qiáng)行退出,不保存退出 wq write & quit 保存并退出 x 保存并退出
04. 常用命令 命令線路圖 重復(fù)次數(shù) 在命令模式下,先輸入一個(gè)數(shù)字 ,再跟上一個(gè)命令 ,可以讓該命令 重復(fù)執(zhí)行指定次數(shù) 移動(dòng)和選擇(多練 ) vi 之所以快,關(guān)鍵在于 能夠快速定位到要編輯的代碼行 移動(dòng)命令 能夠 和 編輯操作 命令 組合使用 編輯操作 撤銷(xiāo)和重復(fù) 查找替換 編輯 學(xué)習(xí)提示 vi 的命令較多,不要期望一下子全部記住 ,個(gè)別命令忘記了,只是會(huì)影響編輯速度而已 在使用 vi 命令時(shí),注意 關(guān)閉中文輸入法 4.1 移動(dòng)(基本) 要熟練使用 vi,首先應(yīng)該學(xué)會(huì)怎么在 命令模式 下樣快速移動(dòng)光標(biāo) 編輯操作命令 ,能夠和 移動(dòng)命令 結(jié)合在一起使用1) 上、下、左、右 命令功能手指 h 向左 食指 j 向下 食指 k 向上 中指 l 向右 無(wú)名指
2) 行內(nèi)移動(dòng) 命令英文功能 w word 向后移動(dòng)一個(gè)單詞 b back 向前移動(dòng)一個(gè)單詞 0 行首 ^ 行首,第一個(gè)不是空白字符的位置 $ 行尾
3) 行數(shù)移動(dòng) 命令英文功能 gg go 文件頂部 G go 文件末尾 數(shù)字gg go 移動(dòng)到 數(shù)字 對(duì)應(yīng)行數(shù) 數(shù)字G go 移動(dòng)到 數(shù)字 對(duì)應(yīng)行數(shù) :數(shù)字 移動(dòng)到 數(shù)字 對(duì)應(yīng)行數(shù)
4) 屏幕移動(dòng) 命令英文功能 Ctrl + b back 向上翻頁(yè) Ctrl + f forward 向下翻頁(yè) H Head 屏幕頂部 M Middle 屏幕中間 L Low 屏幕底部
4.2 移動(dòng)(程序) 1) 段落移動(dòng) vi 中使用 空行 來(lái)區(qū)分段落 在程序開(kāi)發(fā)時(shí),通常 一段功能相關(guān)的代碼會(huì)寫(xiě)在一起 —— 之間沒(méi)有空行 2) 括號(hào)切換 在程序世界中,()、[]、{} 使用頻率很高,而且 都是成對(duì)出現(xiàn)的 3) 標(biāo)記 在開(kāi)發(fā)時(shí),某一塊代碼可能需要稍后處理 ,例如:編輯、查看 此時(shí)先使用 m 增加一個(gè)標(biāo)記,這樣可以 在需要時(shí)快速地跳轉(zhuǎn)回來(lái) 或者 執(zhí)行其他編輯操作 標(biāo)記名稱 可以是 a~z 或者 A~Z 之間的任意 一個(gè) 字母添加了標(biāo)記的 行如果被刪除 ,標(biāo)記同時(shí)被刪除 如果 在其他行添加了相同名稱的標(biāo)記 ,之前添加的標(biāo)記也會(huì)被替換掉 命令英文功能 mx mark 添加標(biāo)記 x,x 是 a~z 或者 A~Z 之間的任意一個(gè)字母 'x 直接定位到標(biāo)記 x 所在位置
4.3 選中文本(可視模式) 學(xué)習(xí) 復(fù)制 命令前,應(yīng)該先學(xué)會(huì) 怎么樣選中 要復(fù)制的代碼 在 vi 中要選擇文本,需要先使用 Visual 命令切換到 可視模式 vi 中提供了 三種 可視模式,可以方便程序員選擇 選中文本的方式 按 ESC 可以放棄選中,返回到 命令模式 命令模式功能 v 可視模式 從光標(biāo)位置開(kāi)始按照正常模式選擇文本 V 可視行模式 選中光標(biāo)經(jīng)過(guò)的完整行 Ctrl + v 可視塊模式 垂直方向選中文本
可視模式 下,可以和 移動(dòng)命令 連用,例如:ggVG 能夠選中所有內(nèi)容4.4 撤銷(xiāo)和恢復(fù)撤銷(xiāo) 在學(xué)習(xí)編輯命令之前,先要知道怎樣撤銷(xiāo)之前一次 錯(cuò)誤的 編輯動(dòng)作! 命令英文功能 u undo 撤銷(xiāo)上次命令 CTRL + r redo 恢復(fù)撤銷(xiāo)的命令
4.5 刪除文本 命令英文功能 x cut 刪除光標(biāo)所在字符,或者選中文字 d(移動(dòng)命令) delete 刪除移動(dòng)命令對(duì)應(yīng)的內(nèi)容 dd delete 刪除光標(biāo)所在行,可以 ndd 復(fù)制多行 D delete 刪除至行尾
提示:如果使用 可視模式 已經(jīng)選中了一段文本,那么無(wú)論使用 d 還是 x,都可以刪除選中文本
刪除命令可以和 移動(dòng)命令 連用,以下是常見(jiàn)的組合命令: * dw # 從光標(biāo)位置刪除到單詞末尾
* d0 # 從光標(biāo)位置刪除到一行的起始位置
* d} # 從光標(biāo)位置刪除到段落結(jié)尾
* ndd # 從光標(biāo)位置向下連續(xù)刪除 n 行
* d代碼行G # 從光標(biāo)所在行 刪除到 指定代碼行 之間的所有代碼
* d'a # 從光標(biāo)所在行 刪除到 標(biāo)記a 之間的所有代碼
4.6 復(fù)制、粘貼 vi 中提供有一個(gè) 被復(fù)制文本的緩沖區(qū) 復(fù)制 命令會(huì)將選中的文字保存在緩沖區(qū) 刪除 命令刪除的文字會(huì)被保存在緩沖區(qū)在需要的位置,使用 粘貼 命令可以將緩沖區(qū)的文字插入到光標(biāo)所在位置 命令英文功能 y(移動(dòng)命令) copy 復(fù)制 yy copy 復(fù)制一行,可以 nyy 復(fù)制多行 p paste 粘貼
提示
命令 d、x 類(lèi)似于圖形界面的 剪切操作 —— CTRL + X 命令 y 類(lèi)似于圖形界面的 復(fù)制操作 —— CTRL + C 命令 p 類(lèi)似于圖形界面的 粘貼操作 —— CTRL + V vi 中的 文本緩沖區(qū)同樣只有一個(gè) ,如果后續(xù)做過(guò) 復(fù)制、剪切 操作,之前緩沖區(qū)中的內(nèi)容會(huì)被替換 注意
vi 中的 文本緩沖區(qū) 和系統(tǒng)的 剪貼板 不是同一個(gè) 所以在其他軟件中使用 CTRL + C 復(fù)制的內(nèi)容,不能在 vi 中通過(guò) P 命令粘貼 可以在 編輯模式 下使用 鼠標(biāo)右鍵粘貼 4.7 替換 命令英文功能工作模式 r replace 替換當(dāng)前字符 命令模式 R replace 替換當(dāng)前行光標(biāo)后的字符 替換模式
R 命令可以進(jìn)入 替換模式 ,替換完成后,按下 ESC 可以回到 命令模式 替換命令 的作用就是不用進(jìn)入 編輯模式 ,對(duì)文件進(jìn)行 輕量級(jí)的修改 4.8 縮排和重復(fù)執(zhí)行 命令功能 >> 向右增加縮進(jìn) << 向左減少縮進(jìn) . 重復(fù)上次命令
縮排命令 在開(kāi)發(fā)程序時(shí),統(tǒng)一增加代碼的縮進(jìn) 比較有用! 一次性 在選中代碼前增加 4 個(gè)空格 ,就叫做 增加縮進(jìn) 一次性 在選中代碼前刪除 4 個(gè)空格 ,就叫做 減少縮進(jìn) 在 可視模式 下,縮排命令只需要使用 一個(gè) > 或者 < 在程序中,縮進(jìn) 通常用來(lái)表示代碼的歸屬關(guān)系
前面空格越少,代碼的級(jí)別越高 前面空格越多,代碼的級(jí)別越低 4.9 查找 常規(guī)查找 查找到指定內(nèi)容之后,使用 Next 查找下一個(gè)出現(xiàn)的位置: 如果不想看到高亮顯示,可以隨便查找一個(gè)文件中不存在的內(nèi)容即可 單詞快速匹配 命令功能 * 向后查找當(dāng)前光標(biāo)所在單詞 # 向前查找當(dāng)前光標(biāo)所在單詞
在開(kāi)發(fā)中,通過(guò)單詞快速匹配,可以快速看到這個(gè)單詞在其他什么位置使用過(guò) 4.10 查找并替換 在 vi 中查找和替換命令需要在 末行模式 下執(zhí)行 記憶命令格式: :%s///g
1) 全局替換 一次性 替換文件中的 所有出現(xiàn)的舊文本 命令格式如下: :%s/舊文本/新文本/g
2) 可視區(qū)域替換 :s/舊文本/新文本/g
3) 確認(rèn)替換 如果把末尾的 g 改成 gc 在替換的時(shí)候,會(huì)有提示!推薦使用! :%s/舊文本/新文本/gc
y - yes 替換 n - no 不替換 a - all 替換所有 q - quit 退出替換 l - last 最后一個(gè),并把光標(biāo)移動(dòng)到行首 ^E 向下滾屏 ^Y 向上滾屏 4.11 插入命令 在 vi 中除了常用的 i 進(jìn)入 編輯模式 外,還提供了以下命令同樣可以進(jìn)入編輯模式: 命令英文功能常用 i insert 在當(dāng)前字符前插入文本 常用 I insert 在行首插入文本 較常用 a append 在當(dāng)前字符后添加文本 A append 在行末添加文本 較常用 o 在當(dāng)前行后面插入一空行 常用 O 在當(dāng)前行前面插入一空行 常用
演練 1 —— 編輯命令和數(shù)字連用 在開(kāi)發(fā)中,可能會(huì)遇到連續(xù)輸入 N 個(gè)同樣的字符 在 Python 中有簡(jiǎn)單的方法,但是其他語(yǔ)言中通常需要自己輸入
例如:********** 連續(xù) 10 個(gè)星號(hào) 要實(shí)現(xiàn)這個(gè)效果可以在 命令模式 下
輸入 10,表示要重復(fù) 10 次 輸入 i 進(jìn)入 編輯模式 輸入 * 也就是重復(fù)的文字 按下 ESC 返回到 命令模式 ,返回之后 vi 就會(huì)把第 2、3 兩步的操作重復(fù) 10 次 提示:正常開(kāi)發(fā)時(shí),在 進(jìn)入編輯模式之前,不要按數(shù)字
演練 2 —— 利用 可視塊 給多行代碼增加注釋 在開(kāi)發(fā)中,可能會(huì)遇到一次性給多行代碼 增加注釋 的情況 在 Python 中,要給代碼增加注釋,可以在代碼前增加一個(gè) #
要實(shí)現(xiàn)這個(gè)效果可以在 命令模式 下
移動(dòng)到要添加注釋的 第 1 行代碼 ,按 ^ 來(lái)到行首 按 CTRL + v 進(jìn)入 可視塊 模式 使用 j 向下連續(xù)選中要添加的代碼行 輸入 I 進(jìn)入 編輯模式 ,并在 行首插入 ,注意:一定要使用 I 輸入 # 也就是注釋符號(hào) 按下 ESC 返回到 命令模式 ,返回之后 vi 會(huì)在之前選中的每一行代碼 前 插入 # 05. 分屏命令 屬于 vi 的高級(jí)命令 —— 可以 同時(shí)編輯和查看多個(gè)文件 5.1 末行命令擴(kuò)展 末行命令 主要是針對(duì)文件進(jìn)行操作的:保存 、退出 、保存&退出 、搜索&替換 、另存 、新建 、瀏覽文件
命令英文功能 :e . edit 會(huì)打開(kāi)內(nèi)置的文件瀏覽器,瀏覽要當(dāng)前目錄下的文件 :n 文件名 new 新建文件 :w 文件名 write 另存為,但是仍然編輯當(dāng)前文件,并不會(huì)切換文件
提示:切換文件之前,必須保證當(dāng)前這個(gè)文件已經(jīng)被保存!
已經(jīng)學(xué)習(xí)過(guò)的 末行命令 : 命令英文功能 :w write 保存 :q quit 退出,如果沒(méi)有保存,不允許退出 :q! quit 強(qiáng)行退出,不保存退出 :wq write & quit 保存并退出 :x 保存并退出 :%s///gc 確認(rèn)搜索并替換
在實(shí)際開(kāi)發(fā)中,可以使用 w 命令 階段性的備份代碼
5.2 分屏命令 使用 分屏命令 ,可以 同時(shí)編輯和查看多個(gè)文件 命令英文功能 :sp [文件名] split 橫向增加分屏 :vsp [文件名] vertical split 縱向增加分屏
1) 切換分屏窗口 分屏窗口都是基于 CTRL + W 這個(gè)快捷鍵的,w 對(duì)應(yīng)的英文單詞是 window
命令英文功能 w window 切換到下一個(gè)窗口 r reverse 互換窗口 c close 關(guān)閉當(dāng)前窗口,但是不能關(guān)閉最后一個(gè)窗口 q quit 退出當(dāng)前窗口,如果是最后一個(gè)窗口,則關(guān)閉 vi o other 關(guān)閉其他窗口
2) 調(diào)整窗口大小 分屏窗口都是基于 CTRL + W 這個(gè)快捷鍵的,w 對(duì)應(yīng)的英文單詞是 window
命令英文功能 + 增加窗口高度 - 減少窗口高度 > 增加窗口寬度 < 減少窗口寬度 = 等分窗口大小
調(diào)整窗口寬高的命令可以和數(shù)字連用,例如:5 CTRL + W + 連續(xù) 5 次增加高度
06. 常用命令速查圖
vimrc vimrc 是 vim 的配置文件,可以設(shè)置 vim 的配置,包括:熱鍵 、配色 、語(yǔ)法高亮 、插件 等 Linux 中 vimrc 有兩個(gè)位置,家目錄下的配置文件優(yōu)先級(jí)更高 /etc/vim/vimrc
~/.vimrc
常用的插件有: 網(wǎng)上有很多高手已經(jīng)配置好的針對(duì) python 開(kāi)發(fā)的 vimrc 文件,可以下載過(guò)來(lái)直接使用,或者等大家多 Linux 比較熟悉后,再行學(xué)習(xí)!
轉(zhuǎn)載于:https://blog.51cto.com/9925386/2383967
總結(jié)
以上是生活随笔 為你收集整理的【Linux基础 11】vi和vim编辑器的使用 的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。