進入插入模式shell
i/a 在光標字符處/後 I/A 在光標行首/尾 O/o 在光標上/下行新建一行vim
s 刪除當前字符後插入 與xi功能相同 cw 刪除當前單詞後插入 與dwi功能相同code
文件退出與保存ip
:wq, ZZ, :x[若是內容和源文件一致 則不保存] 保存退出 :q! 不保存退出ci
:w 保存 :w! 保存只讀文件(root) :saveas FILE 另存爲rem
將當前文件中部份內容另存爲另一個文件 :ADDR1,ADDR2w PATH字符串
將另一個文件填充到當前文件中 :r PATHast
光標移動sed
逐字符移動配置
h, l ,j ,k --- left, right, up, down <iMode>
逐單詞移動
w移至下一個單詞詞首 e移至當前單詞/下一個單詞詞尾
b移至當前單詞/前一個單詞詞首 B與b相似
shift+left/right 單詞詞首移動 <iMode>
翻屏操做
ctrl+b/f 上/下翻一屏 ctrl+u/d 上/下翻半屏
shift+up/down 上/下翻一屏 <iMode>
行內跳轉
0, ^[非空白字符]行首 $, g_[非空白字符]行尾
#G 第#行 G 最後一行 gg 第一行
#f& 第#個&字符 #t& 第#個&字符前 F/T 功能相同 方向相反
% 匹配括號移動 m& 標記 '& 標記跳轉 ''回到上一次位置
{/} 上/下一段開頭 (/)光標處/下一個句子開頭
編輯命令
x 刪除單個字符 dd 刪除整行 yy 複製整行
P/p 粘貼至所在行上方/下方|字符前/後
d, x, yy與組合 #[d/x/yy] #表明數字 de dw ye 等等也能夠組合
替換模式
r 替換單個字符 用法同x R 替換多個字符 需ESC
u 撤銷前一次編輯操做 #u 撤銷#次編輯操做
撤銷最近一次撤銷操做 Ctrl+r 重複最近一次操做 .
選取模式
v 按字符選取 V 按行選取 Ctrl+V 按塊選取
查找和替換
/PATTERN 從前日後查找 ?PATTERN 從後往前查找 n 查找下一個 N 查找上一個
用法同sed :{sed_script} 例子-> :.,$s/hello/HELLO/g
打開文件時操做
光標自動處於 vim +N FILE N行 vim + FILE 最後一行 vim +/PATTERN FILE 符合PATTERN的行
vim FILE... :next :prev 來切換上/下一個文件 :first :last 切換到最前/後一個文件
vim -o/O FILE...水平/垂直分窗口編輯多個文件 :qa 退出全部文件/窗口
打開多個文件和分屏
:e FILE :bn :bp來切換上/下一個文件 若是使用:wq則所有保存 [臨時打開多個文件]
Ctrl+w, s 水平拆分窗口 Ctrl+w, v 垂直拆分窗口 Ctrl+w, ARROW 窗口間切換光標
:sp 水平拆分窗口 :vsp 垂直拆分窗口 :qa 退出全部文件/窗口
其餘
配置文件 全局 /etc/vimrc 我的 ~/.vimrc 行爲 ~/.viminfo
和shell交互 不用退出vim也能執行命令 :! CMD
vim出錯的應對狀況 刪除對應文件.swp後綴名的文件
一個vim高級操做例子
0<Ctrl-v>[選取行數]I[輸入字符串]<ESC> 批量在行首添加字符串
<Ctrl-v>[選取行數]$A[輸入字符串]<ESC> 批量在行尾添加字符串
一些vim設置
顯示/隱藏行號 :set nu/nonu
忽略/區分大小寫 :set ic/noic
設定自動縮進/不縮進 :set ai/noai
查找單詞時高亮 :set hlsearch/nohlsearch
語法高亮 :syntax on/off
C/C++縮進方式:set cindent
用其餘命令以及map鍵位映射等高級設置配置VIM
本身的vim簡易設置[shell腳本]
set nu set tabstop=4 set ai inoremap ( ()<ESC>i inoremap [ []<ESC>i inoremap { {}<ESC>i<cr><cr><UP><TAB> inoremap < <><ESC>i inoremap " ""<ESC>i inoremap ' ''<ESC>i imap if<TAB> if [ <RIGHT>; then<cr>fi<ESC>O<TAB><UP><RIGHT> imap for<TAB> for in ; do<cr>done<ESC>O<TAB><UP> imap case<TAB> case in<cr>*)<cr><TAB><cr>;;<cr><bs>esac<ESC>4k2li imap func<TAB> (<RIGHT> {