程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> vim常用命令,vim

vim常用命令,vim

編輯:關於.NET

vim常用命令,vim


VIM一般分幾種模式,通過不同模式來區分輸入的到底是文字還是命令:
1. Normal mode(common mode,以下簡稱 c-mode):
一進入 VIM 就是處於 c-mode,只能輸入指令,不能輸入文字。這些指令可能是光標移動的指令,也可能是編輯指令或尋找替換指令。
2. Insert mode(i-mode):
按 i/a/o 會進入 i-mode,此時可以在編輯區輸入文字,按 Esc 會回到 c-mode。
3. Ed mode(common-line mode,e-mode):
按:進入 e-mode,VIM命令提示區(編輯區最下方)會有一個冒號:出現,可以輸入命令行命令,按 Esc 回 c-mode。
4.replace mode
按R進入替換模式,Esc返回c-mode

tips:在vim中Esc鍵需要經常使用,可以通過修改注冊表將Esc鍵和Caps鍵的功能換一下。


光標在字符間移動
k    上移 
h    左移 (Backspace )
l     右移 (空格鍵 )
j    下移

光標在單詞間移動(光標可以跨行,默認一個單詞由字母,數字和下劃線組成)
E e(end) 先移動到當前單詞結尾,若已經在結尾,則移動到下一個單詞結尾
B b(begin) 倒退到當前單詞的開頭,若已經在開頭,則移動到上一個單詞開頭
W w(word) 移動到下一個單詞開頭,標點符號也算一個單詞,空格不算(等於eb)
注意:大寫的命令會忽略標點符號。


整行移動
0    移動到當前行首
^   移動到當前行的第一個非blank處
$    移動到當前行行尾
+    移動到下一行開頭(主鍵盤區shift + ”=鍵”,Enter也可以)
-    移動到上一行開頭
n|    移動到當前行的第n列

滾屏(光標跟著代碼走)
Ctrl+f(forward)      往前滾動一整屏
Ctrl+b(backward)      往回滾動一整屏
Ctrl+d(down)        往上滾動半屏
Ctrl+u(up)         往下滾動半屏
Ctrl+e           往後滾動一行
Ctrl+y           往前滾動一行

用z調整行
z<Enter>      將光標所在行移動到屏幕頂端
z.         將光標所在行移動到屏幕中間
z-         將光標所在行移動到屏幕低端

在屏幕范圍移動光標(不會滾屏)
H(hight)     將光標移動到屏幕頂端的行
M(middle)    移動到屏幕中央的行
L(low)      移動到屏幕底端的行
nH        移動到屏幕頂端往下的第n行
nL        移動到屏幕頂端往上的第n行

根據文本移動光標
% : 根據光標當前所在的括號移動到另一半對應的括號上,包括(, {, [

根據文本塊移動光標(編程時用得不多,編輯時使用)
文本塊也就是句子、段落、小節等
(  移動到當前句子開頭
)  移動到下一個句子開頭
{   移動到當前這一段開頭
}   移動到下一段開頭
[[  移動到當前這一節的開頭
]]  移動到下一節的開頭
其中,VIM以? . !等符號來標記一個句子,空白行來標記一個段落。

根據行號來移動
G    移動到文本末尾
gg   移動到文本開頭
nG    移動到第n行(同:n + enter命令一樣)
Ctrl+g  VIM顯示區顯示當前行的完整信息(從根盤符一直到當前行)
tips:``兩個單反引號可以返回到使用G之前的位置,只能記住一個

插入
字符位置插入
i  在光標之前插入
I  在一行的開頭處插入
a  在光標之後插入
A  在一行的結尾處追加
o  在光標所在位置的下一行打開新行插入
O  在光標所在位置的上一行打開新行插入
r  替換光標所在處一個字符

合並行
J  將下一行內容合並到當前行,中間空一個空格

字符刪除
x  剪切光標所在處字符,不會自動跨行
X  剪切光標前一個字符

單詞刪除
dw  從光標所在字符開始刪除到下一個單詞開頭
de  刪除到本單詞末尾(標點也算一個單詞)
dE  刪除到本單詞末尾(標點不算單詞)
db  刪除到前一個單詞
dB  刪除到前一個單詞包括標點在內

行刪除
dd  剪切本行所有內容
d$  剪切本行光標位置(含)之後的所有內容(同shift D)
d0  剪切本行光標位置(不含)之前的所有內容

搜索

*    往後匹配一個光標當前所在的單詞
#    往前匹配一個光標當前所在的單詞
/xyz  往光標下搜索xyz字符串
?xyz  往光標上搜索xyz字符串
n    下一個搜素目標
N    上一個搜索目標
:set hls    打開高亮
:set nohls   關閉高亮

復制(y)與粘貼
yw   復制從光標開始(含)到詞尾的字符
yb   復制從光標開始(不含)到詞首的字符
yy   將當前行復制到緩存區
nyy  將當前行向下n行復制到緩沖區
nyw  復制從光標開始的n個單詞(標點符號算一個單詞)
y^   復制從光標到行首的內容(y$到行尾)
p    在光標之後粘貼剪切板裡的內容
P    在光標之前粘貼剪切板裡的內容
tips:含後不含前(往前不含當前光標所在字符,往後含當前光標所在字符)
另外可以給緩存區做標記,方便以後引用,需要用到雙引號:
"ayy, "byy等,使用時"ap或"bp,粘貼不同的內容。

替換
:s/old/new     用new替換當前行中首次出現的old
:s/old/new/g    用new替換行中所有的old
:n,m s/old/new/g  用new替換從n到m行裡所有的old
:%s/old/new/gic   用new替換當前文件裡所有的old,c為confirm

修改(c):指先刪除,再進入編輯
通過c指令後面的參數,刪除相應的內容,然後進入編輯模式修改。
C或c$     對當前行光標後面的內容進行修改
c0或 c^   對從光標處到當前行行首的內容進行修改
cc 或S    對當前行進行修改
cw      對光標所在字符到該單詞結束部分進行修改(先刪除再進入編輯狀態)
cfx 或cFx  對從光標到下一個字符 x 之間的文本進行修改
cFx      對從光標到上一個字符 x 之間的文本進行修改
cG      表示對當前行至文本末行內容進行修改
tips:c 命令所刪除的數據都存在緩沖區, 可以粘貼使用。

重復
.      重復上一次的命令
N<command>  重復某個命令N次,esc鍵執行該組合命令,enter鍵表示光標換行。

  10I*<esc>:在一行開頭輸入十個*
  5o###<esc>:在下5行中每一行開頭插入###
  5h:左移5次
  n+:向下跳n行
  n-:向上跳n行
  nx:剪切從光標開始的n個字符
  3dd:刪除3行

撤銷
u  撤銷上一步操作,可執行多次
U  撤銷對當前行的所有操作

visual模式
在可視化模式下,通過高亮顯示,不但可以看到將要被操作的對象,而且可以對選中的文本塊整體進行操作。
v  進入字符可視化模式,文本選擇是以字符為單位。
V  進入行可視化模式,文本選擇是以行為單位。
ctrl-V或ctrl-Q  進入塊可視化模式
gv    再次選中前一次可視化模式時選擇的文本


可視模式下:

o光標移動到塊區的對角,O移動到水平的另一邊。
vi[或vi’或vi}  選中當前光標所在的整個[]或’’或{}內的內容
va[或va’或va}  同上,而且符號本身也會被選中
viw  選中一個單詞


打開/保存/退出/改變文件
:e <path/to/file>   打開一個文件
:w  保存文件
:saveas <path/to/file>  另存為 <path/to/file>
:wq  保存並退出
:q!  退出不保存
:qa!  強行退出所有的正在編輯的文件,就算別的文件有更改。
:bn 和 :bp  可以同時打開很多文件,使用這兩個命令來切換下一個或上一個文件。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved