vi常用命令

2016年08月20日 16:38    发布者:huangedu
插入:i             从光标当前位置开始插入a     从光标当前位置的下一个字符开始插入 o            在光标位置的下行插入一个空行,再进行插入O           在光标位置的上一行插入一个空行,再进行插入I             从光标所在行的开头开始插入正文A            从光标所在行的末尾开始插入正文esc=(ctrl+[)         文件保存与退出::w          保存文件:w : 另存为 :w!          强制保存文件:q           退出:q!          强制退出:x           = :wq 文件写入与打开::wfilename  保存文件为给出的文件名:w!filename 强制保存文件为给出的文件名 :ffilename    将当前文件重命名为filename :rfilename   插入文件内容到光标指定的位置:efilename   编辑新文件(打开另一个文件进行编辑):e!放弃对文件的修改,并加裁原始的文件内容 复制粘贴:x               删除从光标开始的连续n个字符dd            删除从光标开发的n行yy             复制从光标开始的n行y$          从光标位置复制在行尾p            粘贴gp 粘贴 u 撤消U 撤消对一行的全部操作ctrl+r重做(反撤消). 重复上次操作 yw 复制一个worddw 剪贴一个wordcw 修改一个wordD 剪贴光标到行尾C 修改光标到行尾 选择:v 按字符选择V 按行选择ctrl+v 按块选择 光标跳转:h、j、k、l    左、下、上、右H、M、L             屏幕最上边、屏幕中间位置、屏幕最下边gg 跳到文件第一行G   跳到文件最后一行$     跳到行末0(数字0)跳到行首 gg(或G)    跳到文件第n行H              跳到屏幕第n行fx 光标移动到本行之后第一此出现“x”的位置;如:fa ,移动到下一次a出现的位置Fx 光标移动到本行之前一此出现“x”的位置;如:fa ,移动到上一次a出现的位置%  在前后括号({}() )位置之间移动 :n           跳到第n行(同G)w           光标向右移动一个字W  光标移动到下的个空格之后b            光标向左移动一个字B  光标移动到上一个空格之后num% 跳到文件num%处 , 如50% 编辑模式下按v     进入可视状态进行内容选择shift+ >  所选内容向右移动一个tabshift+ <  所选内容向左移动一个tab         查找替换:/string          查找字符串 ,配合n(next)使用* 向后搜索光标所在位置的一个word# 向前搜索光标所在位置的一个word /\ 查找以xxx结尾的字符串/\完全匹配查找 d/intmain  从光标所在位置开始删除,直到遇到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,询问 fd    查找本行第一个d字符;    下一个,    上一个 vi:打开或新建: vi          #命令行 :ed         #最后一行模式 :fin    #在路径path中查找文件,然后编辑它 new             # 在新窗口中编辑文件 窗口操作: :sp(或ctrl+w+s): 打开一个新窗口,编辑相同的内容。 :new(或ctrl+W+n): 打开一个空的北新窗口。 ctrl+w+w: 在多个窗口间切换 J 删除行末的换行符,将下行与本行合并为一行滚屏:ctrl+u   向下滚半屏ctrl+d 向上滚半屏ctrl+f向下滚一屏ctrl+b 向上滚一屏 ctrl+e 向下滚一行ctrl+y 向上滚一行 zz   将光标所在的行放在屏幕中间zt   将光标所在的行放在屏幕第一行 topzb   将光标所在的行放在屏幕最后一行 botton Go 跳到文件尾部去插入 标签: :tabe 打开新标签并在新标签中编辑file所指的文件 : gt 在不同的标签之间切换 num指的是第几个标签 :tabo 关闭所有其它的标签页 :tabs 列出标签页和它们包含的窗口 :tabfir 跳转到第一个标签 :tabl   跳转到最后一个标签  vim比较文件内容: vimdiff main.c main2.c  vim设置: setnumbersetnonumber setignorecase    #忽略大小写 (查找字符串时)setnoignorecase setruler         #显示当前光标所在位置setnuruler sethlsearch      #高亮显示 (查找字符串是,找到后高亮显示)setnohlsearch setincsearch     #在输入字符串时就开发查找setnoincsearch synon #高亮显示setbackspace=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. 自动补齐:                           ListCTRL-XCTRL-F                   文件名CTRL-XCTRL-L                 整行内容CTRL-XCTRL-D                   宏定义(也包括那些在include文件里定义的宏)CTRL-XCTRL-I                   当前文件和被当前文件include的文件CTRL-XCTRL-K                  来自一个字典文件的wordCTRL-XCTRL-T                  来自一个thesaurus的wordCTRL-XCTRL-]           tagsCTRL-XCTRL-V          Vim的命令行CTRL-XCTRL-N                根据当前文件里关键字补全 CTRL-XCTRL-U                 用户自定义补全方式    CTRL-XCTRL-S                 拼写建议          6.C编程常用命令:       *    查找光标所在处的单词       %    括号之间跳() {}     #if...#enfif 之间       gd   中转到局部变量的定义处       gf    跳到光标所在的头文件处,ctrl+o 跳回来              cw   删除一个单词并进入插入模式       dw  删除一个单词并              7.c-support命令: 1.注释:       \cc       \c       \co 7. 习惯:       1.留意一下你经常要重复进行的操作是什么。或者你花大部分时间都在干些什么。想一想有没有一个编辑命令可以替你做最让你头痛的事。       2.不要重复做相同的事。想咨询更多嵌入式可以添加群277686564   QQ2905283896