插入: i 从光标当前位置开始插入 a 从光标当前位置的下一个字符开始插入 o 在光标位置的下行插入一个空行,再进行插入 O 在光标位置的上一行插入一个空行,再进行插入 I 从光标所在行的开头开始插入正文 A 从光标所在行的末尾开始插入正文 esc=(ctrl+[) 文件保存与退出: :w 保存文件 :w <filename> : 另存为 :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 查找以xxx开头的字符串 /xxx\> 查找以xxx结尾的字符串 /\<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,询问 fd 查找本行第一个d字符 ; 下一个 , 上一个 vi: 打开或新建: vi <filename> #命令行 :ed <filename> #最后一行模式 :fin[d] <path/file> #在路径path中查找文件,然后编辑它 new <file> # 在新窗口中编辑文件 窗口操作: :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。 "在新窗口中打开光标所在位置的tag :l "展开tag :+ "展开tag := "展开所有tag :- "折叠tag(不用shift) :* "折叠所有tag 6. MiniBufExplorer 此插件会使窗口上显示一个buff清单,可以在该窗口上来选择打开某个buf文件 <Tab> :跳到下一个buffer名上 <shift+Tab>:跳到上一个buffer名上 - N6 ] i8 H& b( ?0 N. Y
|