vi 常用命令说明

插入:
i		从光标当前位置开始插入
a 	从光标当前位置的下一个字符开始插入 
o		在光标位置的下行插入一个空行,再进行插入
O		在光标位置的上一行插入一个空行,再进行插入
I		从光标所在行的开头开始插入正文
A		从光标所在行的末尾开始插入正文
esc=(ctrl+[) 	

文件保存与退出:
:w 		保存文件
:w  : 另存为 
:w!		强制保存文件
:q		退出
:q!		强制退出
:x 		= :wq

文件写入与打开:
:w filename	保存文件为给出的文件名
:w! filename	强制保存文件为给出的文件名

:f filename 	将当前文件重命名为filename

:r filename	插入文件内容到光标指定的位置
:e filename 	编辑新文件(打开另一个文件进行编辑)
:e! 放弃对文件的修改,并加裁原始的文件内容

复制粘贴:
[n]x 		删除从光标开始的连续n个字符
[n]dd 		删除从光标开发的n行
[n]yy		复制从光标开始的n行
y$		从光标位置复制在行尾
p		粘贴
gp 粘贴
 
u 撤消
U 撤消对一行的全部操作
ctrl+r 重做(反撤消)
.  重复上次操作

yw 复制一个word
dw 剪贴一个word
cw 修改一个word
D 剪贴光标到行尾
C 修改光标到行尾

选择:
v  按字符选择
V 按行选择
ctrl+v 按块选择



光标跳转:
h、j、k、l	左、下、上、右
H、M、L		屏幕最上边、屏幕中间位置、屏幕最下边
gg  跳到文件第一行
G    跳到文件最后一行
$	跳到行末
0(数字0)跳到行首

[num]gg(或[n]G)    跳到文件第n行
[n]H		跳到屏幕第n行
fx  光标移动到本行之后第一此出现“x”的位置;如:fa ,移动到下一次a出现的位置
Fx  光标移动到本行之前一此出现“x”的位置;如:fa ,移动到上一次a出现的位置
%   在前后括号({}() )位置之间移动


:n		跳到第n行(同[n]G)
w		光标向右移动一个字
W   光标移动到下的个空格之后
b		光标向左移动一个字
B   光标移动到上一个空格之后
num%  跳到文件num%处 , 如50%

编辑模式下按v	进入可视状态进行内容选择
[n]shift + >	所选内容向右移动一个tab
[n]shift + <	所选内容向左移动一个tab		




查找替换:
/string 		查找字符串 ,配合n(next)使用
*  向后搜索光标所在位置的一个word
#  向前搜索光标所在位置的一个word


/\  查找以xxx结尾的字符串
/\ 完全匹配查找

d/int main  从光标所在位置开始删除,直到遇到int main

:s/str1/str2		用str2替换行中首次出现的字符串str1
:s/str1/str2/g		用str2替换行中所有的字符串str1

:%s/str1/str2/g   用str2替换全文中所有的字符串str1,不询问,强制替换
:%s/str1/str2/gc  用str2替换全文中所有的字符串str1,询问

:noh		消除搜索后的高亮

fd	查找本行第一个d字符
;	下一个
,	上一个

vi:
打开或新建:
  vi          #命令行
  :ed         #最后一行模式
  :fin[d]    #在路径path中查找文件,然后编辑它
  new             # 在新窗口中编辑文件


窗口操作:
  :sp(或ctrl+w+s): 打开一个新窗口,编辑相同的内容。
  :new(或ctrl+W+n): 打开一个空的北新窗口。
  ctrl+w+w: 在多个窗口间切换
 
 
 
J 删除行末的换行符,将下行与本行合并为一行
 

滚屏:
ctrl+u[p]    向下滚半屏
ctrl+d[own]  向上滚半屏
ctrl+f[ront] 向下滚一屏
ctrl+b[ack]  向上滚一屏

ctrl+e  向下滚一行
ctrl+y  向上滚一行

zz    将光标所在的行放在屏幕中间
zt    将光标所在的行放在屏幕第一行 top
zb    将光标所在的行放在屏幕最后一行 botton


Go  跳到文件尾部去插入



标签:
  :tabe [file] 打开新标签并在新标签中编辑file所指的文件
  :[num] gt 在不同的标签之间切换 num指的是第几个标签
  :tabo 关闭所有其它的标签页
  :tabs 列出标签页和它们包含的窗口
  :tabfir[st] 跳转到第一个标签 
  :tabl[ast]   跳转到最后一个标签
  
vim比较文件内容:
  vimdiff main.c main2.c
  

vim设置:

set number
set nonumber

set ignorecase    #忽略大小写 (查找字符串时)
set noignorecase

set ruler         #显示当前光标所在位置
set nuruler

set hlsearch      #高亮显示 (查找字符串是,找到后高亮显示)
set nohlsearch

set incsearch     #在输入字符串时就开发查找
set noincsearch

 
syn on #高亮显示
set backspace=2  #backspace可用 


编程编:
1. 打开include 的文件:
  (1) 光标放在文件名上,按 ctrl+w  f ,在一个水平分割的窗口中打开。
  (2)	光标放在文件名上,按gf, 在同一个窗口中打开。
2. 通过find命令打开文件:
  (1)先通过set path设置查找的目录:
     set path=.,./**,/usr/include  表示在当前目录,当前目录下的所有子目录,和/usr/include目录下进行查找
   (2)设置好目录后在vi下用:find filename即可查找并打开文件。

3. ctags  
	(1).在项目目录下用“ctags -R .”产生tags文件。 可将ctags命令写入makefile文件中
	(2).在vim中设置tags文件“set tags=tags”
	(3).在vim中通过tag命令中转到函数:tag main
    :tag {ident} 	“中转到指定的标签
    :tags		"显示标签
    :Ctrl+]		“跳转到当前光标下的标签(函数声明处)
    :Ctrl+T		“跳转到标签栈中较早的标签(函数调用处)
	在taglist串口中将光标移动到某个tag上,按空格键会在状态栏上显示原型

4. taglist
	:TlistOpen 打开taglisg
	:p "预览taglist窗口中光标所在位置的tag。
	:o "在新窗口中打开光标所在位置的tag	
	:l "展开tag
	:+ "展开tag
	:= "展开所有tag
	:- "折叠tag(不用shift)
	:* "折叠所有tag

6. MiniBufExplorer
	此插件会使窗口上显示一个buff清单,可以在该窗口上来选择打开某个buf文件
	 :跳到下一个buffer名上
	:跳到上一个buffer名上
	:打开光标所在buffer
	d:	删除光标所在bufferbuffer



5. 自动补齐:
                   		List
CTRL-X CTRL-F              	文件名
CTRL-X CTRL-L			整行内容
CTRL-X CTRL-D             	宏定义(也包括那些在include文件里定义的宏)
CTRL-X CTRL-I              	当前文件和被当前文件include的文件
CTRL-X CTRL-K              	来自一个字典文件的word
CTRL-X CTRL-T              	来自一个thesaurus的word
CTRL-X CTRL-] 		tags
CTRL-X CTRL-V 		Vim的命令行
CTRL-X CTRL-N			根据当前文件里关键字补全 
CTRL-X CTRL-U			用户自定义补全方式    
CTRL-X CTRL-S			拼写建议         


6. C编程常用命令:
	*	查找光标所在处的单词
	%	括号之间跳() {}	#if...#enfif 之间
	gd	中转到局部变量的定义处
	gf 	跳到光标所在的头文件处,ctrl+o 跳回来
	
	cw	删除一个单词并进入插入模式
	dw	删除一个单词并
	[I	查看函数的声明:显示include文件中匹配这个函数名的一个清单


	
7. c-support命令:
 1.注释:
	\cc
	\c
	\co

7. 习惯:
	1.留意一下你经常要重复进行的操作是什么。或者你花大部分时间都在干些什么。想一想有没有一个编辑命令可以替你做最让你头痛的事。
	2.不要重复做相同的事。


 

你可能感兴趣的:(vi 常用命令说明)