vim快捷键
发布时间:2020-12-15 17:07:37 所属栏目:安全 来源:网络整理
导读:vim快捷键 vim模式 正常模式: 可以使用快捷键命令,或按:输入命令行。 插入模式: 可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。 可视模式 正常模式下按v可以进入可视模式,在可视模式下,移动光标可以选择文本。按V进入可视行模式,总是整
vim快捷键vim模式
启动vimvim-ccmdfile在打开文件前,先执行指定的命令 vim-rfile恢复上次异常退出的文件 vim-Rfile以只读的方式打开文件,但可以强制保存 vim-Mfile以只读的方式打开文件,不可以强制保存 vim-ynumfile将编辑窗口的大小设为num行 vim+file从文件的末尾开始 vim+numfile从第num行开始 vim+/stringfile打开file,并将光标停留在第一个找到的string上 vim--remotefile用已有的vim进程打开指定的文件。如果你不想启用多个vim会话,这个很有用。但要注意,如果你用vim,会寻找名叫VIM的服务器;如果你已经有一个gvim在运行了,你可以用gvim--remotefile在已有的gvim中打开文件 文档操作:efile关闭当前编辑的文件,并开启新的文件如果对当前文件的修改未保存,vi会警告 :e!file放弃对当前文件的修改,编辑新的文件 :e+file开始新的文件,并从文件尾开始编辑 :e+nfile开始新的文件,并从第n行开始编辑 :enew编译一个未命名的新文档。(CTRL-Wn) :e重新加载当前文档 :e!重新加载当前文档,并丢弃已做的改动 :e#或ctrl+^回到刚才编辑的文件,很实用 :f或ctrl+g显示文档名,是否修改,和光标位置 :ffilename改变编辑的文件名,这时再保存相当于另存为。 gf打开以光标所在字符串为文件名的文件。 :w保存修改 :n1,n2wfilename选择性保存从某n1行到另n2行的内容 :wq保存并退出 ZZ保存并退出 :x保存并退出 :q[uit]退出当前窗口(CTRL-Wq或CTRL-WCTRL-Q) :saveasnewfilename另存为 :Sex水平分割一个窗口,浏览文件系统 :Vex垂直分割一个窗口,浏览文件系统 光标的移动基本移动在normal模式下 h或退格左移一个字符 l或空格右移一个字符 j下移一行 k上移一行 gj移动到一段内的下一行 gk移动到一段内的上一行 +或Enter把光标移至下一行第一个非空白字符 -把光标移至上一行第一个非空白字符 w前移一个单词,光标停在下一个单词开头 W移动下一个单词开头,但忽略一些标点 e前移一个单词,光标停在下一个单词末尾 E移动到下一个单词末尾,如果词尾有标点,则移动到标点 b后移一个单词,光标停在上一个单词开头 B移动到上一个单词开头,忽略一些标点 ge后移一个单词,光标停在上一个单词末尾 gE同ge,不过‘单词’包含单词相邻的标点 (前移1句 )后移1句 {前移1段 }后移1段 fc把光标移到同一行的下一个c字符处 Fc把光标移到同一行的上一个c字符处 tc把光标移到同一行的下一个c字符前 Tc把光标移到同一行的上一个c字符后 ;配合f&t使用,重复一次,配合f&t使用,反向重复一次 0移动到行首 g0移到光标所在屏幕行行首 ^移动到本行第一个非空白字符 g^同^,但是移动到当前屏幕行第一个非空字符处 $移动到行尾 g$移动光标所在屏幕行行尾 n|把光标移到递n列上 nG到文件第n行 :n<cr>移动到第n行 :$<cr>移动到最后一行 H把光标移到屏幕最顶端一行 M把光标移到屏幕中间一行 L把光标移到屏幕最底端一行 gg到文件头部 G到文件尾部 翻屏操作ctrl+f下翻一屏 ctrl+b上翻一屏 ctrl+d下翻半屏 ctrl+u上翻半屏 ctrl+e向下滚动一行 ctrl+y向上滚动一行 n%到文件n%的位置 zz将当前行移动到屏幕中央 zt将当前行移动到屏幕顶端 zb将当前行移动到屏幕底端 标记m{a-z}标记光标所在位置,局部标记,只用于当前文件 m{A-Z}标记光标所在位置,全局标记。标记之后,退出Vim,重新启动,标记仍然有效 `{a-z}移动到标记位置 '{a-z}移动到标记行的行首 `{0-9}回到上[2-10]次关闭vim时最后离开的位置 ``移动到上次编辑的位置。''也可以,不过``精确到列,而''精确到行。如果想跳转到更老的位置,可以按C-o,跳转到更新的位置用C-i `"移动到上次离开的地方 `.移动到最后改动的地方 :marks显示所有标记 :delmarksab删除标记a和b :delmarksa-c删除标记a、b和c :delmarksac-f删除标记a、c、d、e、f :delmarks!删除当前缓冲区的所有标记 :helpmark-motions查看更多关于mark的知识 插入文本基本插入i在光标前插入;一个小技巧:按8,再按i,进入插入模式,输入=,按esc进入命令模式,就会出现8个=。这在插入分割线时非常有用,如30i+<esc>就插入了36个+组成的分割线 I在当前行第一个非空字符前插入 gI在当前行第一列插入 a在光标后插入 A在当前行最后插入 o在下面新建一行插入 O在上面新建一行插入 :rfilename在当前位置插入另一个文件的内容 :[n]rfilename在第n行插入另一个文件的内容 :r!date在光标处插入当前日期与时间。同理,:r!command可以将其它shell命令的输出插入当前文档 改写插入c[n]w改写光标后1(n)个词。 c[n]l改写光标后n个字母。 c[n]h改写光标前n个字母。 [n]cc修改当前[n]行。 [n]s以输入的文本替代光标之后1(n)个字符,相当于c[n]l。 [n]S删除指定数目的行,并以所输入文本代替之。 剪切复制和寄存器剪切和复制、粘贴[n]x剪切光标右边n个字符,相当于d[n]l [n]X剪切光标左边n个字符,相当于d[n]h y复制在可视模式下选中的文本 yyorY复制整行文本 y[n]w复制一(n)个词 y[n]l复制光标右边1(n)个字符 y[n]h复制光标左边1(n)个字符 y$从光标当前位置复制到行尾 y0从光标当前位置复制到行首 :m,ny<cr>复制m行到n行的内容 y1G或ygg复制光标以上的所有行 yG复制光标以下的所有行 yaw和yas复制一个词和复制一个句子,即使光标不在词首和句首也没关系 d删除(剪切)在可视模式下选中的文本 d$orD删除(剪切)当前位置到行尾的内容 d[n]w删除(剪切)1(n)个单词 d[n]l删除(剪切)光标右边1(n)个字符 d[n]h删除(剪切)光标左边1(n)个字符 d0删除(剪切)当前位置到行首的内容 [n]dd删除(剪切)1(n)行 :m,nd<cr>剪切m行到n行的内容 d1G或dgg剪切光标以上的所有行 dG剪切光标以下的所有行 daw和das剪切一个词和剪切一个句子,即使光标不在词首和句首也没关系 d/f<cr>这是一个比较高级的组合命令,它将删除当前位置到下一个f之间的内容 p在光标之后粘贴 P在光标之前粘贴 文本对象aw一个词 as一句 ap一段 ab一块(包含在圆括号中的) 寄存器a-z都可以用作寄存器名。"ayy把当前行的内容放入a寄存器 A-Z用大写字母索引寄存器,可以在寄存器中追加内容。如"Ayy把当前行的内容追加到a寄存器中 :reg显示所有寄存器的内容 ""不加寄存器索引时,默认使用的寄存器 "*当前选择缓冲区,"*yy把当前行的内容放入当前选择缓冲区 "+系统剪贴板。"+yy把当前行的内容放入系统剪贴板 查找和替换查找/something在后面的文本中查找something ?something在前面的文本中查找something /pattern/+number将光标停在包含pattern的行后面第number行上 /pattern/-number将光标停在包含pattern的行前面第number行上 n向后查找下一个 N向前查找下一个 替换:s/old/new用new替换当前行第一个old :s/old/new/g用new替换当前行所有的old :n1,n2s/old/new/g用new替换文件n1行到n2行所有的old :%s/old/new/g用new替换文件中所有的old :%s/^/xxx/g在每一行的行首插入xxx,^表示行首 :%s/$/xxx/g在每一行的行尾插入xxx,$表示行尾所有替换命令末尾加上c,每个替换都将需要用户确认。如:%s/old/new/gc,加上i则忽略大小写(ignore)如果不指定range,则表示当前行。 m,n从m行到n行。 0最开始一行(可能是这样)。 $最后一行 .当前行 %所有行 正则表达式d表示十进制数 s表示空格 S非空字符 a英文字母 |表示或 .表示. {m,n}表示m到n个字符。这要和s与a等连用,如a{m,n}表示m到n个英文字母 {m,}表示m到无限多个字符 **当前目录下的所有子目录 :helppattern得到更多帮助 排版基本排版<<向左缩进一个shiftwidth >>向右缩进一个shiftwidth :ce(nter)本行文字居中 :le(ft)本行文字靠左 :ri(ght)本行文字靠右 gq对选中的文字重排,即对过长的文字进行断行 gqq重排当前行 gqnq重排n行 gqap重排当前段 gqnap重排n段 gqnj重排当前行和下面n行 gqQ重排当前段对文章末尾 J拼接当前行和下一行 gJ同J,不过合并后不留空格 拼写检查:setspell开启拼写检查功能 :setnospell关闭拼写检查功能 ]s移到下一个拼写错误的单词 [s作用与上一命令类似,但它是从相反方向进行搜索 z=显示一个有关拼写错误单词的列表,可从中选择 zg告诉拼写检查器该单词是拼写正确的 zw与上一命令相反,告诉拼写检查器该单词是拼写错误的 编辑多个文件一次编辑多个文件使用:next(:n)编辑下一个文件 :2n编辑下2个文件 使用:previous或:N编辑上一个文件 使用:wnext,保存当前文件,并编辑下一个文件 使用:wprevious,保存当前文件,并编辑上一个文件 使用:args显示文件列表 :nfilenames或:argsfilenames指定新的文件列表 vi-ofilenames在水平分割的多个窗口中编辑多个文件 vi-Ofilenames在垂直分割的多个窗口中编辑多个文件 多标签编辑vim-pfiles打开多个文件,每个文件占用一个标签页 :tabe,tabnew如果加文件名,就在新的标签中打开这个文件,否则打开一个空缓冲区 ^wgf在新的标签页里打开光标下路径指定的文件 :tabn切换到下一个标签。Control+PageDown,也可以 :tabp切换到上一个标签。Control+PageUp,也可以 [n]gt切换到下一个标签。如果前面加了n,就切换到第n个标签。第一个标签的序号就是1 :tabsplit将当前缓冲区的内容在新页签中打开 :tabc[lose]关闭当前的标签页 :tabo[nly]关闭其它的标签页 :tabs列出所有的标签页和它们包含的窗口 :tabm[ove][N]移动标签页,移动到第N个标签页之后。如tabm0当前标签页,就会变成第一个标签页 缓冲区:buffers或:ls或:files显示缓冲区列表 ctrl+^在最近两个缓冲区间切换 :bn下一个缓冲区 :bp上一个缓冲区 :bl最后一个缓冲区 :b[n]或:[n]b切换到第n个缓冲区 :nbw(ipeout)彻底删除第n个缓冲区 :nbd(elete)删除第n个缓冲区,并未真正删除,还在unlisted列表中 :ba[ll]把所有的缓冲区在当前页中打开,每个缓冲区占一个窗口 分屏编辑vim-ofile1file2水平分割窗口,同时打开file1和file2 vim-Ofile1file2垂直分割窗口,同时打开file1和file2 水平分割:split(:sp)把当前窗水平分割成两个窗口。(CTRL-Ws或CTRL-WCTRL-S)注意如果在终端下,CTRL-S可能会冻结终端,请按CTRL-Q继续 :splitfilename水平分割窗口,并在新窗口中显示另一个文件 :nsplit(:nsp)水平分割出一个n行高的窗口 :[N]new水平分割出一个N行高的窗口,并编辑一个新文件。(CTRL-Wn或CTRL-WCTRL-N) ctrl+wf水平分割出一个窗口,并在新窗口打开名称为光标所在词的文件 C-wC-^水平分割一个窗口,打开刚才编辑的文件 垂直分割:vsplit(:vsp)把当前窗口分割成水平分布的两个窗口(CTRL-Wv或CTRLCTRL-V) :[N]vne[w]垂直分割出一个新窗口 :vertical水平分割的命令:相应的垂直分割 关闭子窗口:qall关闭所有窗口,退出vim :wall保存所有修改过的窗口 :only只保留当前窗口,关闭其它窗口(CTRL-Wo) :close关闭当前窗口,CTRL-Wc能实现同样的功能(象:q:x同样工作) 调整窗口大小ctrl+w+当前窗口增高一行。也可以用n增高n行 ctrl+w-当前窗口减小一行。也可以用n减小n行 ctrl+w_当前窗口扩展到尽可能的大。也可以用n设定行数 :resizen当前窗口n行高 ctrl+w=所有窗口同样高度 nctrl+w_当前窗口的高度设定为n行 ctrl+w<当前窗口减少一列。也可以用n减少n列 ctrl+w>当前窗口增宽一列。也可以用n增宽n列 ctrl+w|当前窗口尽可能的宽。也可以用n设定列数 切换和移动窗口ctrl+wctrl+w切换到下一个窗口或者是ctrl+ww ctrl+wp切换到前一个窗口 ctrl+wh(l,j,k)切换到左(右,下,上)的窗口 ctrl+wt(b)切换到最上(下)面的窗口<BR> ctrl+wH(L,K,J)将当前窗口移动到最左(右、上、下)面 ctrl+wr旋转窗口的位置 ctrl+wT将当前的窗口移动到新的标签页上 快速编辑改变大小写~反转光标所在字符的大小写 可视模式下的U或u把选中的文本变为大写或小写 gu(U)接范围(如$,或G),可以把从光标当前位置到指定位置之间字母全部转换成小写或大写。如ggguG,就是把开头到最后一行之间的字母全部变为小写。再如gu5j,把当前行和下面四行全部变成小写 替换 (normal模式)r替换光标处的字符,同样支持汉字 R进入替换模式,按esc回到正常模式 撤销与重做(normal模式)[n]u取消一(n)个改动。 :undo5撤销5个改变。 :undolist你的撤销历史。 ctrl+r重做最后的改动。 U取消当前行中所有的改动。 :earlier4m回到4分钟前 :later55s前进55秒 宏.重复上一个编辑动作 qa开始录制宏a(键盘操作记录) q停止录制 @a播放宏a 编辑特殊文件文件加密vim-xfile开始编辑一个加密的文件 :X为当前文件设置密码 :setkey=去除文件的密码 文件的编码:e++enc=utf8filename让vim用utf-8的编码打开这个文件 :w++enc=gbk不管当前文件什么编码,把它转存成gbk编码 :setfenc或:setfileencoding查看当前文件的编码 fileencoding=ucs-bom,utf-8,cp936vim会根据要打开的文件选择合适的编码。注意:编码之间不要留空格。cp936对应于gbk编码。ucs-bom对应于windows下的文件格式 文件格式大致有三种文件格式:unix,dos,mac. 三种格式的区别主要在于回车键的编码:dos 下是回车加换行,unix 下只有 换行符,mac 下只有回车符。 :e++ff=dosfilename让vim用dos格式打开这个文件 :w++ff=macfilename以mac格式存储这个文件 :setff显示当前文件的格式 在vimrc中添加setfileformats=unix,mac,让vim自动识别文件格式 编辑辅助按键gd跳转到局部变量的定义处 gD跳转到全局变量的定义处,从当前文件开头开始搜索 g;上一个修改过的地方 g,下一个修改过的地方 [[跳转到上一个函数块开始,需要有单独一行的{ ]]跳转到下一个函数块开始,需要有单独一行的{ []跳转到上一个函数块结束,需要有单独一行的} ][跳转到下一个函数块结束,需要有单独一行的} [{跳转到当前块开始处 ]}跳转到当前块结束处 [/跳转到当前注释块开始处 ]/跳转到当前注释块结束处 %不仅能移动到匹配的(),{}或[]上,而且能在#if,#else,#endif之间跳跃 ci',di',yi'修改、剪切或复制'之间的内容 ca',da',ya'修改、剪切或复制'之间的内容,包含' ci",di",yi"修改、剪切或复制"之间的内容 ca",da",ya"修改、剪切或复制"之间的内容,包含" ci(,di(,yi(修改、剪切或复制()之间的内容 ca(,da(,ya(修改、剪切或复制()之间的内容,包含() ci[,di[,yi[修改、剪切或复制[]之间的内容 ca[,da[,ya[修改、剪切或复制[]之间的内容,包含[] ci{,di{,yi{修改、剪切或复制{}之间的内容 ca{,da{,ya{修改、剪切或复制{}之间的内容,包含{} ci<,di<,yi<修改、剪切或复制<>之间的内容 ca<,da<,ya<修改、剪切或复制<>之间的内容,包含<> ctagsctags-R生成tag文件,-R表示也为子目录中的文件生成tags :settags=path/tags告诉ctags使用哪个tag文件 :tagxyz跳到xyz的定义处,或者将光标放在xyz上按C-],返回用C-t :stagxyz用分割的窗口显示xyz的定义,或者C-w],如果用C-wn],就会打开一个n行高的窗口 :ptagxyz在预览窗口中打开xyz的定义,热键是C-w} :pclose关闭预览窗口。热键是C-wz :peditabc.h在预览窗口中编辑abc.h :psearchabc搜索当前文件和当前文件include的文件,显示包含abc的行 :[n]tnext下一[n]个匹配 :[n]tprev上一[n]个匹配 :tfirst第一个匹配 :tlast最后一个匹配 :tselecttagname打开选择列表 :tagxyz<tab>补齐以xyz开头的tag名,继续按tab键,会显示其他的 :tag/xyz<tab>会用名字中含有xyz的tag名补全 cscopecscope-Rbq生成cscope.out文件 csadd/path/to/cscope.out/your/work/dir :csfindcfunc查找func在哪些地方被调用 :cw打开quickfix窗口查看结果 gtagsGtags综合了ctags和cscope的功能。 使用Gtags之前,你需要安装GNU Gtags。 然后在工程目录运行 gtags 。 :Gtagsfuncname定位到funcname的定义处 :Gtags-rfuncname查询funcname被引用的地方 :Gtags-ssymbol定位symbol出现的地方 :Gtags-gstringGotostring出现的地方。:Gtags-gistring忽略大小写 :Gtags-ffilename显示filename中的函数列表。你可以用:Gtags-f%显示当前文件 :Gtags-Ppattern显示路径中包含特定模式的文件。如:Gtags-P.h$显示所有头文件,:Gtags-P/vm/显示vm目录下的文件 快速修改窗口:copen打开快速修改窗口 :cclose关闭快速修改窗口 快速修改窗口在make程序时非常有用,当make之后: :cl在快速修改窗口中列出错误 :cn定位到下一个错误 :cp定位到上一个错误 :cr定位到第一个错误 自动补全C-xC-s拼写建议 C-xC-v补全vim选项和命令 C-xC-l整行补全 C-xC-f自动补全文件路径。弹出菜单后,按C-f循环选择,当然也可以按C-n和C-p C-xC-p和C-xC-n用文档中出现过的单词补全当前的词。直接按C-p和C-n也可以 C-xC-o编程时可以补全关键字和函数名啊 C-xC-i根据头文件内关键字补全 C-xC-d补全宏定义 C-xC-n按缓冲区中出现过的关键字补全。直接按C-n或C-p即可 当弹出补全菜单后: C-p向前切换成员 C-n向后切换成员 C-e退出下拉菜单,并退回到原来录入的文字 C-y退出下拉菜单,并接受当前选项 多行缩进缩出正常模式下,按两下>;光标所在行会缩进 如果先按了n,再按两下>;,光标以下的n行会缩进 对应的,按两下<;,光标所在行会缩出 如果在编辑代码文件,可以用=进行调整 在可视模式下,选择要调整的代码块,按=,代码会按书写规则缩排好 或者n=,调整n行代码的缩排 折叠zf创建折叠的命令,可以在一个可视区域上使用该命令 zd删除当前行的折叠 zD删除当前行的折叠 zfap折叠光标所在的段 zo打开折叠的文本 zc收起折叠 za打开/关闭当前折叠 zr打开嵌套的折行 zm收起嵌套的折行 zR(zO)打开所有折行 zM(zC)收起所有折行 zj跳到下一个折叠处 zk跳到上一个折叠处 zienable/disablefold 命令行命令行模式下快捷键上下方向键上一条或者下一条命令。如果已经输入了部分命令,则找上一条或者下一条匹配的命令 左右方向键左/右移一个字符 C-w向前删除一个单词 -h向前删除一个字符,等同于Backspace C-u从当前位置移动到命令行开头 C-b移动到命令行开头 C-e移动到命令行末尾 Shift-Left左移一个单词 Shift-Right右移一个单词 @重复上一次的冒号命令 q正常模式下,q然后按':',打开命令行历史缓冲区,可以像编辑文件一样编辑命令 q/和q?可以打开查找历史记录 执行外部命令:!cmd执行外部命令 :!!执行上一次的外部命令 :sh调用shell,用exit返回vim :r!cmd将命令的返回结果插入文件当前位置 :m,nw!cmd将文件的m行到n行之间的内容做为命令输入执行命令 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |