vim 编程常用的指令和快捷键

文章目录

  • 移动光标
  • 修改、剪切或复制配对符之间的内容
  • ctags
  • cscope
  • gtags
  • 编译
  • 快速修改窗口
  • 自动补全
  • 多行缩进缩出
  • 折叠

移动光标

命令说明
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<修改、剪切或复制 <> 之间的内容,包含 <>

注:上述命令是在普通命令模式输入

ctags

命令说明
ctags -R这不是 ex 命令,而是 shell 命令,生成 tag 文件,-R 表示也为子目录中的文件生成 tags
命令说明
set tags=path/tags告诉 ctags 使用哪个 tag 文件
tag xyz跳到xyz 的定义处,或者将光标放在 xyz 上按 C-],返回用 C-t
stag xyz用分割的窗口显示 xyz 的定义,或者 C-w ], 如果用 C-w n ],就会打开一个 n 行高的窗口
ptag xyz在预览窗口中打开 xyz 的定义,热键是 C-w }
pclose关闭预览窗口。热键是 C-w z
pedit abc.h在预览窗口中编辑 abc.h
psearch abc搜索当前文件和当前文件 include 的文件,显示包含 abc 的行

注:以上命令是在底行命令模式下输入。

有时一个 tag 可能有多个匹配,如函数重载,一个函数名就会有多个匹配。 这种情况会先跳转到第一个匹配处。

命令说明
[n]tnext下一 [n] 个匹配
[n]tprev上一 [n] 个匹配
tfirst第一个匹配
tlast最后一个匹配
tselect tagname打开选择列表

注:以上命令是在底行命令模式下输入。

tab 键补齐:

命令说明
tag xyz<tab>补齐以 xyz 开头的 tag 名,继续按 tab 键,会显示其他的。
tag /xyz<tab>会用名字中含有 xyztag 名补全。

注:以上命令是在底行命令模式下输入。

cscope

命令说明
cscope -Rbq此命令不是 ex 命令,而是 shell 指令。生成 cscope.out 文件
命令说明
cs add /path/to/cscope.out /your/work/dir
cs find c func查找 func 在哪些地方被调用
cw打开 quickfix 窗口查看结果

注:以上命令是在底行命令模式下输入。

gtags

Gtags 综合了 ctags 和 cscope 的功能。 使用 Gtags 之前,你需要安装 GNU Gtags。 然后在工程目录运行 gtags 。

命令说明
Gtags funcname定位到 funcname 的定义处
Gtags -r funcname查询 funcname被引用的地方
Gtags -s symbol定位 symbol 出现的地方
Gtags -g string Goto string出现的地方。
Gtags -gi string忽略大小写
Gtags -f filename显示 filename 中的函数列表。
Gtags -f %显示当前文件
Gtags -P pattern显示路径中包含特定模式的文件。 如 Gtags -P .h$ 显示所有头文件,Gtags -P /vm/ 显示 vm 目录下的文件

注:以上命令是在底行命令模式下输入。

编译

vim 提供了 make 来编译程序,默认调用的是 make, 如果你当前目录下有 makefile,在底行命令模式直接输入 make 即可。

如果你没有 make 程序,你可以通过配置 makeprg 选项来更改 make 调用的程序。 如果你只有一个 abc.java 文件,你可以在底行命令模式下输入以下命令:

set makeprg=javac\ abc.java

然后在底行命令模式下输入 make 即可。如果程序有错,可以通过 quickfix 窗口查看错误。 不过如果要正确定位错误,需要设置好errorformat,让 vim 识别错误信息。 在底行命令模式下输入:

setl efm=%A%f:%l:\ %m、%-Z%p^、%-C%.%#

%f 表示文件名,%l 表示行号, %m 表示错误信息,其它的还不能理解。 请在底行命令模式下输入 help errorformat 查看帮助文档。

快速修改窗口

其实是 quickfix 插件提供的功能, 对编译调试程序非常有用。

命令说明
copen打开快速修改窗口
cclose关闭快速修改窗口

注:上述命令是在底行命令模式下输入。

快速修改窗口在 make 程序时非常有用,当 make 之后:

命令说明
cl在快速修改窗口中列出错误
cn定位到下一个错误
cp定位到上一个错误
cr定位到第一个错误

注:上述命令是在底行命令模式下输入。

自动补全

命令说明
C-x C-s拼写建议。
C-x C-v补全vim选项和命令。
C-x C-l整行补全。
C-x C-f自动补全文件路径。弹出菜单后,按C-f循环选择,当然也可以按 C-n和C-p。
C-x C-p 和C-x C-n用文档中出现过的单词补全当前的词。 直接按C-p和C-n也可以。
C-x C-o编程时可以补全关键字和函数名啊。
C-x C-i根据头文件内关键字补全。
C-x C-d补全宏定义。
C-x C-n按缓冲区中出现过的关键字补全。 直接按C-n或C-p即可。

当弹出补全菜单后:

命令说明
C-p向前切换成员
C-n向后切换成员
C-e退出下拉菜单,并退回到原来录入的文字
C-y退出下拉菜单,并接受当前选项

多行缩进缩出

命令说明
>>将光标所在行右移 8 个空格。如果在 >> 命令之前给出一个数字 n,例如 4,则表示光标当前行及其下面的 3 行(共 4 行)都右移 8 个空格
<<其使用与>>命令相同,只是移动方向相反

注:以上命令在普通命令模式下输入。

命令说明
>被选中的行向右移动 8 个空格,并返回到“普通命令模式”下
<被选中的行向左移动 8 个空格,并返回到“普通命令模式”下
=如果在编辑代码文件,选择要调整的代码块,按 =,代码会按书写规则缩排好。或者 n =,调整 n 行代码的缩排

注:以上命令在可视模式下输入。

折叠

命令说明
zf创建折叠的命令,可以在一个可视区域上使用该命令
zd删除当前行的折叠
zD删除当前行的折叠
zfap折叠光标所在的段
zo打开折叠的文本
zc收起折叠
za打开/关闭当前折叠
zr打开嵌套的折行
zm收起嵌套的折行
zR (zO)打开所有折行
zM (zC)收起所有折行
zj跳到下一个折叠处
zk跳到上一个折叠处
zienable/disable fold

注:以上命令在“普通命令模式”下输入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css 获取屏幕宽度_设备像素、设备独立像素、CSS像素、分辨率、PPI、devicePixelRatio 的区别...

设备像素 (device pixels)也称为物理像素&#xff0c;显示器的最小物理单位。这里需要注意&#xff0c;一个像素并不一定是一个小正方形区块&#xff0c;也没有标准的宽高&#xff0c;只是用于显示丰富色彩的一个“点”而已。可以参考公园里的景观变色彩灯&#xff0c;一个彩灯…

shell 脚本中特殊变量

特殊变量含义$0这个程式的执行名字$n这个程式的第n个参数值&#xff0c;n1…9$*这个程式的所有参数$#这个程式的参数个数$$这个程式的PID&#xff08;脚本运行的当前进程ID号&#xff09;$!执行上一个背景指令的PID&#xff08;后台运行的最后一个进程的进程ID号&#xff09;$?…

netbeans调试_从NetBeans运行和调试WildFly Swarm应用程序

netbeans调试使用NetBeans的Java EE开发人员习惯于直接在NetBeans所选择的应用程序服务器中运行和调试其瘦战应用程序。 在开发打包为ber或镂空jars的微服务时&#xff0c;您期望使用相同的轻松方式进行运行和调试。 好消息是您可以。 在本文中&#xff0c;我将逐步介绍如何在N…

怎么更换默认路径_更改电脑桌面路径

电脑默认的桌面路径一般都在C盘&#xff0c;而我们又特别喜欢把文件都放在桌面&#xff0c;因为桌面既方便又好找。可时间久了&#xff0c;桌面文件会越来越多&#xff0c;C盘空间会越来越小&#xff0c;会拖慢系统速度。怎么把系统桌面路径设置在非C盘呢?本期教程将为大家讲解…

Linux 命令之 wc -- 统计文件中的字节数、字数、行数

文章目录命令介绍选项参数示例&#xff08;一&#xff09;统计当前目录下的所有文件的行数&#xff08;二&#xff09;统计当前目录下的文件总数&#xff08;三&#xff09;显示某个文件的行数&#xff08;四&#xff09;显示某个文件的行数、单词数、字节数&#xff08;五&…

JSON合并补丁程序:JSON-P 1.1概述系列

Java EE 8包括对JSON处理API的更新&#xff0c;并使其与JSON的最新IEFT标准保持同步。 他们是&#xff1a; JSON指针 RFC 6901 JSON补丁 RFC 6902 JSON合并修补程序 RFC 7396 我将在这个迷你系列中涵盖这些主题。 入门 要开始使用JSON-P&#xff0c;您将需要Maven中央存储…

连接相机无法识别_春节用相机拍照,如何快速发朋友圈?

春节期间很多人都会用相机拍照相机照片在画质上有优势但分享比较麻烦如何快速发朋友圈&#xff1f;最快最方便的方式还是试用U盘直接把存储卡的照片拷贝到手机上操作简单方便&#xff0c;下面提供几种方式下面的读卡器推荐每款实用对象不一样&#xff0c;在选择时&#xff0c;根…

Linux 命令之 sh -- Shell 命令语言解释器

文章目录一、命令介绍二、选项参数三、命令示例&#xff08;一&#xff09;命令从字符串中读取一、命令介绍 sh命令是shell命令语言解释器&#xff0c;执行命令从标准输入读取或从一个文件中读取。通过用户输入命令&#xff0c;和内核进行沟通&#xff01; Bourne Again Shel…

oidc auth2.0_使用Spring Security 5.0和OIDC轻松构建身份验证

oidc auth2.0“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 Spring Security不仅是一个功能强大且可高度自定义的身份验证和访问控制…

Linux 命令之 xargs -- 给其他命令传递参数的一个过滤器

文章目录一、命令介绍二、选项参数三、命令示例&#xff08;一&#xff09;批量重命名目录中的文件&#xff08;二&#xff09;给多个命令传递参数一、命令介绍 xargs命令是给其他命令传递参数的一个过滤器&#xff0c;也是组合多个命令的一个工具。它擅长将标准输入数据转换成…

40无法u盘启动_戴尔主板bios设置u盘启动 戴尔台式电脑如何bios设置U盘启动教程...

戴尔dell作为电脑十大品牌&#xff0c;开创于1984年美国&#xff0c;以生产/设计/销售家用及办公室电脑而闻名&#xff0c;随着使用戴尔电脑的用户越来越多&#xff0c;在使用过程中可能会遇到系统被错误操作或者是内部组件损坏导致无法正常使用的情况。对于这种问题我们可以使…

变色龙引导_Arquillian变色龙。 简化您的Arquillian测试

变色龙引导Arquillian Chameleon的诞生是为了简化Arquillian测试的配置。 我很自豪地宣布&#xff0c;使用1.0.0.CR2版本&#xff0c;我们不仅简化了Arquillian测试的配置方式&#xff0c;而且简化了编写方式。 在此新版本中&#xff0c;添加了三个新的简化&#xff1a; 您只…

Linux 命令之 eval -- 对参数执行两次解释

文章目录一、命令介绍二、选项参数三、命令示例&#xff08;一&#xff09;输出文件的内容&#xff08;二&#xff09;统计当前目录下的文件总数&#xff08;三&#xff09;输出变量的值及给变量赋值一、命令介绍 功能说明&#xff1a;重新运算求出参数的内容。 命令语法&…

设置图像的title_【HTML】2 图像标签和属性

1、图像标签和属性图像标签&#xff1a;<img>标签引入外部图片文件&#xff0c;并进行显示&#xff0c;单标签&#xff0c;不需要成对出现。属性&#xff1a;属于标签的特性。标签要通过属性来定义所希望的设置参数。2、应用案例<!DOCTYPE html> <html lang&quo…

jvm体系结构概述_JVM体系结构:JVM和JVM体系结构概述

jvm体系结构概述各位读者好&#xff01; 在本教程中&#xff0c;我们将了解和学习Java虚拟机&#xff08;JVM&#xff09;及其体系结构。 本教程将帮助您正确回答以下问题&#xff1a; Java中的JVM是什么&#xff1f; JVM的不同组件 JVM&#xff0c;JRE和JDK之间的区别 1.简…

Linux 命令之 declare -- 声明或显示 shell 变量

文章目录一、命令介绍二、命令格式三、命令选项四、命令示例&#xff08;一&#xff09;声明变量并赋值&#xff08;二&#xff09;将变量设置为环境变量&#xff08;三&#xff09;将变量设置为只读&#xff0c;不可修改&#xff08;四&#xff09;将变量声明为整数并进行计算…

mysql数据库应用_MySQL数据库应用 从入门到精通 学习笔记

以下内容是学习《MySQL数据库应用 从入门到精通》过程中总结的一些内容提要&#xff0c;供以后自己复现使用。一&#xff1a;数据库查看所有数据库:SHOW DATABASES创建数据库:CREATE DATABSE database_name切换数据库:USE database_name删除数据库:DROP DATABASE database_name…

Linux 命令之 env -- 显示系统的环境变量,定义执行命令时的环境变量

文章目录一、命令介绍二、选项参数三、命令示例&#xff08;一&#xff09;显示系统的环境变量&#xff08;二&#xff09;从当前环境中删除指定的变量&#xff08;三&#xff09;定义指定的环境变量&#xff08;四&#xff09;在一个修改后的环境下执行命令一、命令介绍 env命…

aws lambda_跑来跑去:假人与AWS Lambda的第一次接触

aws lambda这一切始于埃及人在一个木框上滑动几块大理石以简单的算术使其大脑放松的时候。 或许是希腊人发明了Antikythera机制来追踪行星的运动至每千年2度的精度 。 无论哪种方式&#xff0c;计算都已经走了很长一段路&#xff1a;查尔斯巴贝奇的分析引擎 &#xff0c;艾伦图…

Linux 命令之 set -- 显示或设置 shell 特性及 shell 变量

文章目录一、命令介绍二、选项参数三、命令示例&#xff08;一&#xff09;开启/关闭特性&#xff08;二&#xff09;将普通变量设为环境变量一、命令介绍 set 命令作用主要是显示系统中已经存在的 shell 变量&#xff0c;设置 shell 变量的新变量值&#xff0c;可以把已有的变…