vim 是 “vimsual interface IMproved”的簡稱,它可以執行輸出、刪除、查找、替換、塊操作等衆多文本操作,而且用戶可以根據自己的需要對其進行定製,這是其他編輯程序所沒有的。vim 不是一個排版程序,它不像MS Word 或 WPS 那樣可以對字體、格式、段落等其他屬性進行編排,它只是一個文本編輯程序。vim 是全屏幕文本編輯器,它沒有菜單,只有命令。
文本編輯器的模式
1)命令行模式
2)輸入模式、編輯模式
3)末行模式
4)替換模式
命令行模式
存盤 ZZ 保存退出
光標移動:
移動光標 h j k l 左 下 上 右
光標移到本行開頭home
移到本行末尾 end
光標移到末尾 G
光標移到開頭gg
光標移動一個單詞w
粘貼複製
複製一行 yy 複製 n行 nyy
粘貼 p
刪除
刪除字符 x 向後刪除 X 向前刪除
刪除一行 dd ndd
刪除一個單詞 dw
撤銷
撤銷操作 u 向上一步 . 重複上一次操作
查找
查找/string define \ 轉義字符 查找“/bin/bash” /\/bin\/bash
刪除與修改
“編輯”是指文字的添加、修改以及刪除,甚至包括文字區塊的移動、複製等。
在vim 中一般認爲輸入與編輯是兩個概念。
編輯是在命令模式下進行的,先利用命令移動光標來定位到要進行編輯的地方,然後再使用相應的命令進行編輯;而輸入是在插入模式下進行的。
在命令模式下常用的編輯命令:
x 刪除光標所在字符。
dd 刪除光標所在的行。
r 修改光標所在字符,r 後是要修正的字符。
R 進入替換狀態,輸入的文本會覆蓋原先的資料。
s 刪除光標所在字符,並進入輸入模式。
S 刪除光標所在的行,並進入輸入模式。
cc 修改整行文字。
u 撤消上一次操作。
. 重複上一次操作。
編輯模式
輸入模式
在輸入模式下,屏幕的左下方會出現INSERT 字樣。
在輸入狀態下,用戶可以輸入文本的內容
在插入模式下也可以刪除字符,而標準的vim 編輯器在編輯狀態下不能刪除字符,只能插入字符
如何從命令行模式進入輸入模式
a 從光標所在位置後面開始輸入資料,光標後的資料隨增加的資料向後移動。
A 從光標所在行最後面的位置開始輸入資料。
插入(insert)
i 從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。
I 從光標所在行的第一個非空白字符前面開始插入資料。
開始(open)
o 在光標所在行下新增一行並進入輸入模式。
O 在光標所在行上方新增一行並進入輸入模式。
如何退出輸入模式
esc
末行模式
末行模式
只要在命令模式下輸入命令“:”即可進入末行模式。
在末行模式下,可以進行保存文件、退出vim、進行查找和替換等操作。
:
當同時編輯多個文件時 因爲同一時間只能顯示一個文件,所以在VI中切換打開的文件可以使用N或n來切換打開的文件
:n 切換下一個文件
:N 切換上一個文件
:q 退出
:q! 強制退出不保存
:w
:wq
替換
:s/old/new 只替換光標所在行的第一個old string
:s/old/new/g 將本行(光標)的所有old string替換爲new string g global n代表一個行號
:%s/old/new/g 將本文中所有的old string替換爲new string
:1,2s/old/new/g 替換1到2行中的old string爲new string
:.,2s/old/new/g .代表光標所在行 當前行到第二行的
:2,$s/old/new/g 替換2到最後一行中的old string爲new string
:set nu 顯示行號
:set nonu
:!command 在vim編輯器中執行一條命令(不許要退出當前的編輯,可以在編輯器中執行命令,類似退出編輯器執行命令)
查找
/string 將光標定位到string 所在的行。
?string 將光標移動到最近的一個包含 string 字符串的行
:n 把光標定位到文件的第n 行。
保存文檔
可以用:n,mw filename 命令將第n 行到第m 行的文字存放的所指定的filename 文件中。
替換模式
命令行下按R鍵進入替換模式
退出
esc
相關配置文件
~/.viminfo vim 歷史編輯文檔
~/.vimrc vim 個性設置文檔
自定義文件頭註釋 ~/.vimrc
autocmd BufNewFile *.py,*.sh,*.c exec ":call SetTitle()"
func SetTitle()
if &filetype == 'python'
call setline(1,"\#!/usr/bin/env python")
call append(line("."),"\#enconding=utf-8")
call append(line(".")+1, "\#Author: Bai Shuming")
call append(line(".")+2, "\#Created Time: ".strftime("%Y/%m/%d %H:%M"))
call append(line(".")+3, "")
elseif &filetype == 'sh'
call setline(1,"\#!/usr/bin/env bash")
call append(line("."),"\#enconding=utf-8")
call append(line(".")+1, "\#Author: Bai Shuming")
call append(line(".")+2, "\#Created Time: ".strftime("%Y/%m/%d %H:%M"))
call append(line(".")+3, "")
elseif &filetype == 'c'
call setline(1,"#include <stdio.h>")
call append(line("."), "")
endif
endfunc