vim:(visual interface improved),是一款全屏的純文本ASSCII的編輯器,是 vi 的加強版,相比較 vi 來講,vim支持語法高亮等特色。正則表達式
vim是一種模式化的編輯器,常見的模式有編輯模式(命令模式),輸入模式,末行模式,可視化模式,多文件模式,多窗口模式等。
vim
Usage: vim [option]... [FILE]...編輯器
vim 選項+
ide
vim + file 打開文件時光標處在最後一行的行首
spa
vim +3 file 打開文件時光標處在第三行的行首命令行
1、各個模式的介紹orm
編輯模式(命令模式):這個模式下鍵盤操做一般被理解爲編輯命令接口
輸入模式:此模式下用戶能夠輸入文本內容ci
末行模式:vim內置命令行接口,執行vim內置變量字符串
可視化模式:此模式下用戶能夠高亮選擇文本的內容
多文件模式:此模式下用戶一次能夠打開多個文件
多窗口模式:此模式下在全屏下可顯示多個窗口來編輯文件
2、各個模式之間的切換
模式切換類型 | 切換方法 | |
編輯模式 -> 輸入模式 | i,a | 在光標所在處的前方,後方轉換爲輸入模式 |
I,A | 在光標所在處的行首,行尾轉換爲輸入模式 | |
o,O | 在光標所在行的上一行,下一行轉換爲輸入模式 | |
輸入模式 -> 編輯模式 | ESC |
|
編輯模式 -> 末行模式 | : | |
末行模式-->編輯模式 | ESC |
3、編輯模式(命令模式)下的文本操做
操做分類 | 具體方法及意義 | ||
光標移動 | 字符間移動 | j,k | j:向下移動光標 k:向下移動光標 |
h,l | h:向左移動光標 l:向右移動光標 | ||
#{h|j|k|l} | 3h:向左跳躍光標3個字符 4j:向下跳躍光標4行 | ||
單詞間移動 | w | w:光標移動到下一個單詞詞尾 | |
e,b | e:光標跳躍到當前或下一個單詞詞尾 b:光標跳躍到當前或上一個單詞詞首 |
||
#{w|e|b} | 3w:光標跳躍到下3個單詞的詞尾 4b:光標跳躍到上3或4(光標剛好在詞首)個單詞的詞首 |
||
行內移動 | 0,$ | 0:光標跳躍到絕對行首 $:光標跳躍到絕對行尾 |
|
^ | ^:光標跳躍到行首第一個非空白字符開頭處 | ||
Ctrl+f Ctrl+b Ctrl+u Ctrl+d |
向文件尾部翻一屏 向文件首部翻一屏 向文件尾部翻半屏 向文件首部翻半屏 |
||
行間移動 | #G | 5G:將光標跳躍到第5行行首第一個非空白字符開頭處 | |
G,gg | G:將光標跳躍到行尾第一個非空白字符開頭處 gg:將光標跳躍到行首第一個非空白字符開頭處 |
||
編輯命令 | x類 | x,#x | x:刪除光標所在處的字符 4x:刪除光標所在處以及以後的共4個字符 |
d類 | dd D #dd d#d | dd:刪除光標所在處的一整行 D:同 d$ 同樣,刪除光標所在處行向後的全部內容 |
|
d結合w,e,b,^,$,0,G,gg一塊兒使用 | dgg:刪除光標處以及光標處到行首的全部內容 db:刪除光標處到光標處前單詞的單詞首部的內容 |
||
y類 | yy,Y,y#y,#yy | yy Y:複製光標所在處的整行 y3y 3yy:複製光標所在處的及如下共3行 |
|
結合w,e,b,^,$,0,G,gg一塊兒使用 | yw:複製光標所在處向後一個單詞首部的的字符 y$:複製光標所在處向後這行全部的的字符 yG:複製光標所在處向後文件尾部行全部的的字符 |
||
p類 | p P | 行級別: p: 粘貼於當前行下方 P: 粘貼於當前行上方 小於行級別: p: 粘貼於當前光標所在處的後方 P:粘貼於當前光標所在處的前方 |
|
c類 | cc,#c | cc C:刪除光標所在處的一整行,並進入輸入模式 | |
結合w,e,b,^,$,0,G,gg一塊兒使用 | cgg:刪除光標所在處到文件行首的全部內容,並進入輸入模式 c0:刪除光標所在處到行首的全部內容,並進入輸入模式 |
||
撤消編輯 | u,#u | u:撤銷上一次操做 3u:撤銷前3次操做 |
|
ctrl+r | 撤銷上一次撤銷操做 | ||
重複 | . | 重複上一條命令 |
4、末行模式
末行模式是執行一些vim的內置變量,以及問搜索、替換、刪除等操做。在這裏要引入內容定界。
內容定界的格式是:startpos,endpos。說明在末行模式下操做的範圍。
內容定界符 | 具體意義 |
# |
#:第#行 3:表示第三行 |
. | .:表示當前行 |
$ | $:表示最後一行 |
% | %:表示全文 等價於 1,$ |
$-# .+# | 支持像$-2, .+2等內容定界 .+1,$-1 表示當前行的下一行至倒數第二行 |
下面介紹末行模式的的操做方法以及意義,這些操做都是結合內容定界符一塊兒使用的。
種類 | 具體意義 |
c d y | :%y 複製整個文本內容 :.,30d 刪除當前行道30行的內容 100c:刪除100的內容,並變爲輸入模式,在100行的行首 |
w r | w /path/to/somefile: 將選定範圍內的內容保存至某文件 r /path/from/somefile: 將指定的文件中的內容讀取到指定位置中 `例如: :1,100w /tmp/test.txt 將1,100的內容保存到/tmp/test.txt文件中 :54r /etc/passwd 將/etc/passwd文件內容加入到54行的下面 |
s///gi | s/要查找內容的模式/要替換的字符串或者引用/gi 其中g: global, 全行替換 i: 不區分字符大小寫 :%s@^[[:space:]]\{1,\}@@g 刪除整個文本的空白行 |
/ ? | / ? 是命令行搜索,支持正則表達式 /pattern 向下搜索 ?pattern 向上搜索 N n 使用n,N上下查看 |
命令 | :set nu 顯示行號 :set nonu 取消顯示行號 :set ai 自動縮進 :set noai 取消自動縮進 :set ic 設置忽略大小寫 :set noic 取消設置忽略大小寫 :set sm 設置括號匹配 :set nosm 取消設置括號匹配 :syntax on|off 設置語法高亮 :set hlsearch 設置搜索高亮 :set nohlsearch 取消設置搜索高亮 |
5、可視化模式,多文件模式,多窗口模式
1)可視化
v:指的是國標所走過的字符
V:指的是國標所走過的行
例如:在某些連續的行首加入#號。編輯模式下:V-->選中行--->I--->#---->ESC就可完成此功能。
2)多文件模式
vi file1 file2 file3... 在末行模式下可使用next,previous,last,first關鍵字打開下一個,上一個,最後一個,第一個文件。使用wqall能夠保存所有文件。
3)多窗口模式
多文件模式:vim -o:水平分割窗口
-O:垂直分割窗口
單文件模式:
Ctrl+w, s: 水平分割
Ctrl+w, v: 垂直分割
6、配置文件
/etc/vimrc:全局的
~/.vimrc:用戶模式下的配置文件
補充:
1.設置製表符寬度
:set tabstop=4
:set softtabstop=4
2.設置縮進的空格數
:set shiftwidth=4
3.每行的縮進值與上一行相等
:set autoindent
4.使用 C/C++ 語言的自動縮進方式
:set cindent
5.顯示行號
:set nu
6.將搜索內容反白
:set hlsearch
7.能夠刪除任意值
:set backspace=2
本文側重介紹的是vim文本編輯器的使用。