vi/vim有兩種模式,正常(命令行)模式 和編輯模式,在命令行模式下,任何鍵盤輸入都是命令,在編輯模式下,鍵盤輸入的才是字符。
啟動/關閉Vi/Vim
啟動:
vi 打開 Vi/Vim編輯器
vi 文件名 打開 Vi/Vim 並加載文件(如果文件不存在,就會新建文件)修改文件名:
mv 原文件名(加后綴) 要改成文件名
退出:
:w回車 存盤
:w!回車 強制存盤
:wq回車 存盤退出
:x回車 存盤退出
:q回車 不存盤退出
:q!回車 不存盤強制退出
ZQ回車 不存盤強制退出
(后面跟上 ! 就是強制)
快捷切換(很好用):
使用Ctrl-z和fg這兩個鍵來回切換(Ctrl-z將vi/vim進程放到后台執行,此時回到shell環境;fg則將位於后台的vi/vim進程放到前台執行,繼續擼代碼
)
還有一種方法,在 Vi/Vim 的正常模式下輸入:sh即可進入 Linux/Unix shell 環境。在要返回到 Vi/Vim 編輯環境時,輸入 exit 命令即可。
Esc 從vi/vim編輯模式切換到正常(命令行)模式
多窗口編輯
vim 文件1 文件2 同時打開或創建兩個文件
:n 切換到下個文件
:N 切換到上個文件
:sp 文件1 在vim內輸入,將在另外一個窗口打開文件1,可實現兩個文件上下屏編輯(文件名留空是分屏打開本文件)
Ctrl+w 按住Ctrl連點兩下w可實現上下編輯窗口光標切換
退出保存正常操作
移動光標
光標:
k 類似方向鍵上
j 類似方向鍵下
h 類似方向鍵左
l 類是方向鍵右
頁:
Ctrl+u 向上移動半頁
Ctrl+d 向下移動半頁
行:
gg 光標跳到文本的第一行
G 光標跳到文本最后一行
0 光標跳到所在行的行首
$ 光標跳動到所在行的行尾
:5回車 光標跳到第5行。
:n回車 光標跳到第n行。
單詞:
w 光標跳到下個單詞的開頭
b 光標回到上個單詞的開頭
e 光標回到本單詞的尾部
插入
i 從光標所在字符前插入
a 從光標所在的字符后面插入
o 從光標所在行的下面插入空白行
O 從光標所在行的上面插入空白行
I 從光標所在行的行首插入
A 從光標所在行的行末插入
編輯
刪除
x 每按一次,刪除光標所在位置的一個字符
nx 如"3x"表示刪除光標所在位置開始的3個字符
dw 刪除當前光標所在的單詞
dd 刪除光標所在行
ndd 如"3dd"表示刪除光標所在行開始的3行字符
復制
yy 將光標所在行復制到緩沖區
nyy 將光標所在n行復制到緩沖區
粘貼
p 將緩沖區里的內容寫到光標所在位置
>>右縮進;<<做縮進;(配合操作數使用,在編輯源碼的時候非常有用。相當於批量縮進)
u 撤銷命令,可多次撤銷
. 重復執行上一次執行的vi/vim命令。
Ctl+insert 復制鼠標選中的文本,相當於Ctl+c
Shift+insert 輸出鼠標選中的文本,相當於Ctl+v
(以上兩個命令在windows和UNIX中是通用的)
文本搜索替換
r 替換光標所在處的字符 replace
R 替換光標所在處的字符,直到按下"Esc"為止
cw 開始替換當前光標所在的單詞,直到按下"Esc"為止
J 把當前行的下一行接到當前行的尾部
Ctrl+g 列出文件一共有多少行
nG 表示移動光標到文件的第n行行首
/abcd 在當前打開的文件中查找“abcd”文本內容
n 查找下一個
N 查找上一下
:g/aaaaaaaaa/s//bbbbbb/g回車 把文件中全部的aaaaaaaaa替換成bbbbbb
~ 對光標當前所在的位置的字符進行大小寫轉換。
Vi/Vim設置
要使以下設置下次繼續生效需要修稿配置文件
我用的Linux:
1)用vim打開.vimrc文件:
個人用戶配置:vim ~/.vimrc
全局配置(由root賬戶,全部子賬戶都生效):vim /etc/vimrc 或 vim /etc/vim/vimrc
2)設置你需要的功能(可以直接復制文末給出的自用配置參數)
3)保存並關閉(:wq)
查看設置的當前值
:set all 查看 vi 或 Vim 中設置的所有選項的當前值
:set <option>? 查看特定選項 <option> 的當前值設置行號顯示與否
:set number 顯示行號
:set no number 取消行號顯示
命令的簡寫形式:
:set nu
:set no nu設置自動縮進
:set autoindent 設置自動縮進
:set no autoindent 取消自動縮進設置
命令的簡寫形式:
:set ai
:set no ai設置縮進寬度
:set shiftwidth=4 設置縮進寬度為 4
命令的簡寫形式:
:set sw=4(Linux可能修改Tab鍵寬度更合適 :set tabstop=4)
設置大小寫忽略與否
:set ignorecase 設置忽略大小
:set no ignorecase 取消忽略大小設置
命令的簡寫形式:
:set ic
:set no ic設置不可見字符顯示與否
:set list 顯示不可見字符
:set nolist 取消顯示不可見字符設置
在顯示不可見字符的情況下,TAB 鍵顯示為 ^I,而 $ 顯示在每行的結尾。修改自動換行字符上限
:set textwidth=200 或者:
:set tw=200(默認是72)