Vim編輯器使用

全屏編輯器:nano、vi(Visual Interface)、vim(Vi IMproved)

行編輯器: sed


Vim模式:命令模式、編輯模式、輸入模式、末行模式


獲取幫助:

1、vimtutor

2、vim下輸入help


223642643.png


模式轉換(默認爲編輯模式):

i[nsert]當前光標所在字符處前轉換爲輸入模式
a[ppend]當前光標所在字符處後轉換爲輸入模式
o當前光標所在行的下一新行轉換爲輸入模式
I當前光標所有行的行首轉換爲輸入模式
A當前光標所有行的行尾轉換爲輸入模式
O當前光標所在行的上一新行轉換爲輸入模式
Esc由輸入模式轉換爲編輯模式
由編輯模式轉換爲末行模式(可查看歷史命令)
Esc,Esc由末行模式轉換爲編輯模式


光標跳轉:

h向左移動一個字符
l向右移動一個字符
j向下移動一個字符
k向上移動一個字符
#h向左移動#個字符
w跳到後一個單詞的詞首
e跳到當前或下一個單詞的詞尾
b跳到當前或下一個單詞的詞首
)跳到下一句的句首
(跳到上一句的句首
跳到下一段的段首
跳到上一段的段首
1G 或 gg跳到首行
G跳到尾行
#G跳到第#行
^跳到行首的第一個非空白字符
$跳到絕對行尾
0跳到絕對行首

文件關閉:

w保存
q退出
!強制
x保存並退出
ZZ(編輯模式)保存並退出
qall退出所有
only閉關除當前窗口外的文件

打開文件:

vim +#打開文件並將光標移到第#行首
vim +打開文件並將光標移動最後一行
next顯示下一個文件
prev顯示上一個文件
first顯示第一個文件
last顯示最後一個文件
new|edit FILENAME在VIM中打開新的文件,new不加文件名錶示新建文件


地址定界:

1,7第1行到7行
%全文
1,$第1行到最後行
1,+6第1行及以下6行
1,$-2第1行到倒數第3行
.,+3當前行及以下3行

編輯命令:

u[ndo]撤消操作(默認記錄50次操作)
Ctrl+r取消此前的撤消
x刪除當前光標所在字符
#x刪除當前光標所在字符至第#個字符
dw刪除當前光標所在處,至單詞尾部
db刪除當前光標所在處前一字符,至單詞首部
de刪除當前光標所在處,至單詞尾部
d^刪除當前光標所在處前一字符,至行首
d$ 或 D 或 C刪除當前光標所在處,至行尾
cc刪除當前行,並轉換到輸入模式
#cc刪除當前行至以下#行,並轉換爲輸入模式
yy複製當前行
#yy複製光標當前行至第#行
y$複製光標所在處至行尾
y^複製光標所在處前一字符至行首
p[aste|ut]粘貼至光標所在處之後,或下方
P貼至光標所在處之前,或上方
Ctrl+f向文件尾部翻一屏
Ctrl+b向文件首部翻一屏
Ctrl+d向文件尾部翻半屏
Ctrl+u向文件首部翻半屏
/keyword當前光標所在處向文件尾部查找
?keyword當前光標所在處向文件首部查找
n下一個,跟查找命令相同的方向
N上一個,跟查找命令相反的方向

>

向右縮進
<向左縮進

可視化模式:

v選中光標劃過的字符
V選中光標劃過的行
Ctrl+w,s 或 split水平分割窗口
Ctrl+w,v 或 vsplit垂直分割窗口
Ctrl+w,s 或 30s水平分割窗口,窗口高度爲30
Ctrl+w,s 或 30vs垂直分割窗口,窗口寬度爲30
Ctrl+w,+/-調整窗口高度(默認每次調整1)
Ctrl+w,</>調整窗口寬度(默認每次調整1)
res[ize] N調整窗口高度爲N
vert[ical] res[ize] N調整窗口寬度爲N
-o水平分割窗口(一次打開多個文件時)
-O垂直分割窗口(一次打開多個文件時)
Ctrl+ww多個窗口間切換
Ctrl+w,l|方向鍵切換到右側窗口
Ctrl+w,h|方向鍵切換到左側窗口
Ctrl+w,k|方向鍵切換到上方窗口
Ctrl+w,j|方向鍵切換到下方窗口
Ctrl+w,L將當前窗口移動到右側窗口
Ctrl+w,H將當前窗口移動到左側窗口
Ctrl+w,K將當前窗口移動到上方窗口
Ctrl+w,J將當前窗口移動到下方窗口

文件對比:

vim -d FILE1 FILE2比較模式打開兩個文件
vimdiff FILE1 FILE2
diffsplit FILE2當前文件與新文件對比,並水平分割窗口
vert[ical] diffsplit FILE2當前文件與新文件對比,並垂直分割窗口
diffthis對比已打開的2個窗口內容
diffupdate文本內容修改後,更新對比檢查
[c跳到前一個不同點
]c跳到後一個不同點
set diffopt=context:N只顯示不同點的行,及前後N行(也是摺疊)
zo (fold open)展開摺疊(配合diffopt)
zc (fold close)重新摺疊(配合diffopt)
set noscrollbind取消兩個窗口聯動
set scrollbind綁定兩個窗口聯動(默認爲聯動)
set scrollopt ver,hor,jump

ver:啓用垂直同步滾動

hor:啓用水平同步滾動

jump:切換窗口時,使垂直滾動始終同步

syncbind同步兩上窗口的光標位置

環境設置:

vim的配置文件:

全局:/etc/vimrc

個人:~/.vimrc


set all查看所有set選項(顯示所有的vi環境變量可能取值及其當前設置值)
set顯示當前所有的vi環境變量設置
syntax on/enable/off自動語法高亮
set hl/nohl(hlsearch)高亮顯示搜索結果
set hidden沒有保存的緩衝區可以自動被隱藏
set sm/nosm(showmatch)顯示括號配對,當鍵入“]”“)”"}"時,高亮度顯示匹配的括號/缺省不高亮
set showmode/shownomode處於文本輸入方式時加亮按鈕條中的模式指示器/缺省不指示當前模式
set ruler打開狀態欄標尺
set scrolloff=5設定光標離窗口上下邊界 5 行時窗口自動滾動
set ai/noai(autoindent)自動縮進,新行與前面的行保持—致的自動空格/不自動空格(缺省)
set aw/noaw自動寫,轉入shell或使用:n編輯其他文件時,當前的緩衝區被寫入/不寫
set cindent以C/C++的模式縮進(在C編碼時,用戶常常想要indent縮進內嵌代碼塊)
set smartindent爲C程序提供自動縮進
set flash/noflash在出錯處閃爍但不嗚叫(缺省)/使用嗚叫而不閃爍
set ic/noic(ignorecase)在查詢及模式匹配時忽賂大小寫/不忽略大小寫(默認區分大小寫)
set nu/nonu(number)屏幕左邊顯示行號/不顯示行號(缺省)
set showcmd在狀態欄顯示目前所執行的指令,未完成的指令片段亦會顯示出來
set warn/nowarn對文本進行了新的修改後,離開shell時系統給出顯示(缺省)
set ws/nows在搜索時如到達文件尾則繞回文件頭繼續搜索
set wrap/nowrap長行顯示自動折行
colorscheme evening設定背景爲夜間模式
filetype on通過$VIMRUNTIME/filetype.vim.打開文件類型檢測
filetype plugin on自動識別文件類型,自動匹配對應的, “文件類型Plugin.vim”文件,使用縮進定義文件
set shiftwidth=4設定 << 和 >> 命令移動時的寬度爲 4
set softtabstop=4使得按退格鍵時可以一次刪掉 4 個空格,不足 4 個時刪掉所有剩下的空格)
set tabstop=4 shiftwidth=4設定 tab 長度爲 4,移動(shift)命令時移動的字符數
set list/nolist顯示不可視字符
set listchars = tab:>-,trail:-將製表符顯示爲'>---',將行尾空格顯示爲'-'
set listchars=tab:.\ ,trail:.將製表符顯示爲'. '
set autochdir自動設置目錄爲正在編輯的文件所在的目錄


查找替換:

:地址定界s/查找模式/替換成的內容/gi

:地址定界s@查找模式@替換成的內容@gi

:g/查找模式/s/查找模式/替換成的內容/gi


1) g:global (全局,沒有選項g則只替換每行每一次匹配到的模式)

2) i:ignorecase (忽略大小寫)

3) /|@:分割符


e.g.

1、將所有/de/null替換爲/tmp/log.txt

%s/\/dev\/null/\/tmp\/log.txt/g

%s@/dev/null@/tmp/log.txt@/g


2、將所有w開頭,中間兩個字母,並以o結尾的單詞替換爲where

%s/\<w[[:alpha:]]\{2\}o\>/where/g


3、將所有d開頭,中間兩個字母,並以n結尾的單詞替換爲大寫字母

%s@\<d\([[:alpha:]]\{2\}\)n\>@D\1N@g


4、將所有game後加上over,忽略大小寫

%s/\([gG][aA][mM][eE]\)/\1over/g

%s/[gG][aA][mM][eE]/&over/g

注:&表示模式匹配的內容


5、將所有空格開頭的行前添加#號

%s/^[[:space:]]/#&/

%s@^[[:space:]]@#&@


6、刪除空白行

:g/^$/d

:%s/^\n//g

:g/^\n/s///g


7、刪除多行空白行,保留一行空白行

:%s/^\n$//g


8、將以path開頭行中的GE替換爲ge

:g/^path/s/GE/ge/g


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章