wKiom1MxdWaBwov9AABjS2JC5KY411.jpg大家好,前幾天有朋友問了我在Linux下編程選什么選什么編輯器好,所以我建議大家用Linux系統自帶的Vim編輯器,以下是VIm中的使用命令

常用Linux。


進入vim的命令:


vim filename :打開或新建文件,并將光標置于第一行首
vim +n filename :打開文件,并將光標置于第n行首
vim + filename :打開文件,并將光標置于最后一行首
vim +/pattern filename:打開文件,并將光標置于第一個與pattern匹配的串處
vim -r filename :在上次正用vim編輯時發生系統崩潰,恢復filename
vim filename….filename :打開多個文件,依次編輯

Vim配置
all:列出所有選項設置情況
term:設置終端類型
ignorance:在搜索中忽略大小寫
list:顯示制表位(Ctrl+I)和行尾標志($)
number:顯示行號
report:顯示由面向行的命令修改過的數目
terse:顯示簡短的警告信息
warn:在轉到別的文件時若沒保存當前文件則顯示NO write信息
nomagic:允許在搜索模式中,使用前面不帶“\”的特殊字符
nowrapscan:禁止vi在搜索到達文件兩端時,又從另一端開始
mesg:允許vi顯示其他用戶用write寫到自己終端上的信息
:set number / set nonumber :顯示/不顯示行號
:set ruler /set noruler:顯示/不顯示標尺
:set hlsearch 高亮顯示查找到的單詞
:set nohlsearch 關閉高亮顯示
:syntax on #語法高亮
:set nu #顯示行號
:set tabstop=4 #設置tab大小
:set softtabstop=4
:set autoindent #自動縮進
:set cindent #C語言格式里面的自動縮進

移動光標:
上:k nk:向上移動n行
下:j nj:向下移動n行
左:h nh:向左移動n列
右:l nl:向右移動n列
space:光標右移一個字符
Backspace:光標左移一個字符
Enter :光標下移一行
w或W :光標右移一個字至字首
b或B :光標左移一個字至字首
e或E :光標右移一個字至字尾
) :光標移至句尾
( :光標移至句首
}:光標移至段落開頭
{:光標移至段落結尾
n$:光標移至第n行尾
H :光標移至屏幕頂行
M :光標移至屏幕中間行
L :光標移至屏幕最后行
0:(注意是數字零)光標移至當前行首
^:移動光標到行首第一個非空字符上去
$:光標移至當前行尾
gg可以移到第一行
G移到最后一行
f<a>:移動光標到當前行的字符a上
F:相反
%:移動到與制匹配的括號上去(),{},[],<>等。
nG:移動到第n行上
G:到最后一行

屏幕翻滾類命令:
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b:向文件首翻一屏
nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部

插入文本類命令
i :在光標前
I :在當前行首
a:光標后
A:在當前行尾
o:在當前行之下新開一行
O:在當前行之上新開一行
r:替換當前字符
R:替換當前字符及其后的字符,直至按ESC鍵
s:從當前光標位置處開始,以輸入的文本替代指定數目的字符
S:刪除指定數目的行,并以所輸入文本代替之
ncw或nCW:修改指定數目的字
nCC:修改指定數目的行

刪除命令
x或X:刪除一個字符,x刪除光標后的,而X刪除光標前的
dw:刪除一個單詞
dnw:刪除n個單詞
dne:也可,只是刪除到單詞尾
do:刪至行首
d$:刪至行尾
dd:刪除一行
ndd:刪除當前行及其后n-1行
dnl:向右刪除n個字母
dnh:向左刪除n個字母
dnj:向下刪除n行
dnk:向上刪除n行
cnw[word]:將n個word改變為word
C$:改變到行尾
cc:改變整行
shift+j:刪除行尾的換行符,下一行接上來了.

復制粘貼:
p:粘貼用x或d刪除的文本
ynw:復制n個單詞
yy:復制一行
ynl:復制n個字符
y$:復制當前光標至行尾處
nyy:拷貝n行

撤銷:
u: 撤銷前一次的操作
shif+u(U):撤銷對該行的所有操作。

搜索及替換命令 :
/pattern:從光標開始處向文件尾搜索pattern
?pattern:從光標開始處向文件首搜索pattern
n:在同一方向重復上一次搜索命令
N:在反方向上重復上一次搜索命令
cw【newword】:替換為newword
n: 繼續查找
.: 執行替換
:s/p1/p2/g:將當前行中所有p1均用p2替代,g表示執行 用c表示需要確認
:n1,n2 s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將文件中所有p1均用p2替換
:1,$ s/string1/string2/g:在全文中將string1替換為string2

書簽:
m[a-z]:在文中做標記,標記號可為a-z的26個字母
`a:移動到標記a處

visual 模式:
v:進入visual 模式
V:進入行的visual 模式
ctrl+v:進如塊操作模式用o和O改變選擇的邊的大小
在所有行插入相同的內容如include<,操作方法如下:
將光標移到開始插入的位置,按CTRL+V進入VISUAL模式,選擇好模塊后按I(shift+i),后插入要插入的文本,按[ESC]完成

行方式命令:
:n1,n2 co n3:將n1行到n2行之間的內容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內容刪除
:n1,n2 w!command:將文件中n1行至n2行的內容作為command的輸入并執行之
若不指定n1,n2,則表示將整個文件內容作為command的輸入

宏:
q[a-z]:開始記錄但前開始的操作為宏,名稱可為【a-z】,然后用q終止錄制宏
reg:顯示當前定義的所有的宏,用@[a-z]來在當前光標處執行宏[a-z]

窗口操作:
:split:分割一個窗口
:split file.c :為另一個文件file.c分隔窗口
:nsplit file.c: 為另一個文件file.c分隔窗口,并指定其行數
ctrl+w在窗口中切換
:close:關閉當前窗口

文件及其他:
:q:退出vi
:q!:不保存文件并退出vi
:e filename:打開文件filename進行編輯
:e! :放棄修改文件內容,重新載入該文件編輯
:w :保存當前文件
:wq :存盤退出
:ZZ:保存當前文檔并退出VIM
:!command:執行shell命令command
:r!command:將命令command的輸出結果放到當前行
:n1,n2 write temp.c 將本文件中的n1,到n2行寫入temp.c這個文件中去
:read file.c 將文件file.c的內容插入到當前光標所在的下面