UE5 C++ Rider 编程指南 1.编辑器基础

0. 前言

首先要修正上一篇的问题,Unreal GenProj这个插件已经被Rider实现了,安装之后再使用就会报错,所以这个插件要卸载掉,那么生成VS文件如何操作呢?就是Rider上面的一个刷新按钮,产生新文件后点击刷新,就会自动生成VS文件,其实是调用的UE功能,只是更快捷方便了,如下图所示:
刷新按钮
另外找到了一篇Rider 使用技巧 总结,还要一篇Rider官方和VS的对比:JetBrains Rider vs Visual Studio,知乎的大佬Tanzq说Rider可以独立运行,笔者这边的确在卸载VS后出问题了,无法Build编译,重新安装VS的一些基础模块后才恢复正常,个人认为Rider还是依赖VS的,至少是依赖那些基础工具链的,希望可以独立出来.
另外发现了Rider官方账号:JetBrains中国官方,上面有一些教程和新闻.
至于官方文档:JetBrains Rider Documents,和编辑器一样不支持中文,希望官方尽早完成对中文的支持吧.

1. 快捷键配置

Rider的快捷键设置有两个入口,一是上一篇中的配置按钮,二是在进入编辑器后,右上角有个设置按钮,点击之后可以进行配置
配置按钮
在下拉菜单中可以找到Keymap,如下图所示:
快捷键设置
熟悉快捷键后,编辑器的所有操作都可以通过快捷键进行设置,所以提升效率的关键在于快捷键.下图所示的是右上角区域的关键按钮:
编辑器按钮
点击右上角下拉菜单的Keymap后会弹出一个设置窗口,如下图所示:
快捷键配置选项
这个菜单中可以选择一套自己熟悉的快捷键,笔者选择的是VS,因为这个IDE用的时间非常久,对于VS的快捷键很熟悉,大家可以根据自己的情况进行预置.当然,更多还是需要自己配置,这里选择0 配置快捷键,打开配置窗口,如下图所示:
快捷键映射

1.1 书签快捷键

这个快捷键是怎么好记就怎么配置,这里举个例子,大家如果有经常添加书签的习惯,就会使用添加书签的快捷键.顺便说一下,添加书签有助于快速找到自己的目标代码,所以推荐在关键代码的地方使用书签.
书签快捷键配置
上图是笔者自己的配置,非常好记忆:

  1. 切换书签,触发的时候可以快速添加和删除书签,这里使用Ctrl+B,Ctrl+M,这个组合就是Book Mark的首字母,所以很容易记忆;
  2. 要给已经添加的书签再弄一个快捷键,就需要这个,Ctrl+B,N,这个是Bookmark Note的缩写,可以打开一个设置书签快捷键的小窗口;
  3. 快速找到上一个书签,Ctrl+B,P,这个B就是Bookmark的缩写,P是Previous的首字母,这个也很好记忆;
  4. 这个可能和第二条有点混淆,建议修改一下第二条Ctrl+B,Ctrl+N,然后这一个使用Ctrl+B,N,这里的N代表Next.
    其他的,书签的工具窗口是Alt+2,这个很好记忆,所以没有变更.大家可以根据自己的习惯来设置,这个纯属便捷性操作,怎么方便就怎么设置,熟练之后操作就特别便利.
    快捷键鼠标右键菜单
    上图所示的是一些操作,如果要设置新的快捷键,最好移除原来的,避免过多的快捷键导致冲突.最好使用1+1的组合触发方式,因为系统上已经有很多快捷键了,一键触发的方式大多数都被占用了,根据实际情况来设置.

纠错,上图中的第三条Add Abbreviation不是废除,而是添加缩写,具体还没有使用过,大家可以尝试下.

其他的快捷键根据个人需求修改,这里就不多写自己的快捷键方式了,之后的教程中的所有快捷键都是个人便捷性的方式,大家可以使用,也可以自行设置,有了这个前提,后文就好写了,不再给不熟悉快捷键的朋友造成困惑.

2. Rider编辑器基础

下面开始正文,这一篇教程主要是讲Editor Essentials,这个原文可以在Rider中找到,只不过是英文版本的,这里把这个教程重述一遍,一方面是复习,另一方面是给大家做个预习,大家看了之后再去操作就更顺畅了.
Rider教程
如上图所示,可以在打开Rider后的首页找到这个教程,大家如果没有语言障碍的话可以直接去Rider学习,这一篇也是试验性质的,看看大家对Rider中文教程的需求高不高,点赞/收藏破百再写下一篇.
打开教程后,出现下图的界面,左侧是教程使用的项目,右侧是教程提示,需要按照提示进行实操.
教程界面
这里翻译一下右侧的教程简介,当然,希望Rider尽快出中文支持.

2.1 教程简介

Rider编辑器基础
欢迎来到第一个互动教程!这个教程会帮助你入门最重要的Rider代码编辑器的特色功能,在开始教程前请先阅读下面这些要点.

重要提示:

  • 必须在电脑上安装.NET6.0版本;
  • 如果你正在使用IdeaVim或者其他修改键盘输入的插件,请禁用;
  • 教程使用自带的案例项目,不会影响你的配置;
  • 教程是交互式的:包含一系列的操作,这些操作是需要我们执行的,你的进度会被自动检查.如果想要退出教程,关闭教程项目即可.
  • 请遵循教程的操作提示,避免提示之外的其他操作,这可能会影响进度检查.

这个教程还是做得比较好的,可以看出官方很用心,点击Start按钮就可以正式开始了.

2.2 Alt + Enter

这是目前Rider最重要的快捷键了,几乎可以说是万金油.
Alt+Enter
Rider会根据输入光标所在的位置智能的给出一些可用操作,比如快速修复,补全,跳转等等,根据代码的实际情况就会有适用于这个快捷键的触发动作.笔者怀疑以后会有深度学习的AI加入进来,这个AI就像钢铁侠里面的AI助理贾维斯,就是后来得到智慧宝石变成超级英雄的Vision幻视,后来又被灭霸强行剥夺智慧宝石而扑街了.
跑题了,总之AI协助编程应该是IDE的一个发展方向,现目前使用的几乎全是索引来提升效率.
Rider总是会在可以通过Alt+Enter的快捷键方式触发操作的时候给出提示:

  • 代码元素下面的下划线;
  • 在编辑器左侧间隔区域的图标提示;
  • 黄色灯泡:修复一个警告;
  • 红色灯泡:修复一个错误;
  • 锤子:上下文动作;
  • 更多的后文讲.

点击Next下一步.

2.2 应用快速修复

注意,Rider所有的操作都需输入光标在目标代码元素区域闪动,这样才能定位目标代码,这个在后文中作为默认前提,所以这里前置讲一下,后文就不赘述了.
应用快速修复
这个UnusedClass类没有在我们的代码中被使用过,我们来移除它:

  1. 输入光标必须在UnusedClass代码元素上,注意左侧间隔中有一个黄色灯泡的提示;
  2. 按下Alt + Enter的快捷键;
  3. 选择Remove unused class(移除无用类)选项,点击Next(下一步)在打开的窗口来应用修复.

具体的操作大家按照这个提示去做就行,系统检查我们操作了才可以进行下一步教程.
移除无用类
记住,上面图中这些操作不要使用鼠标,全部用键盘,这样才可以确保操作被正确检查.

2.3 应用上下文动作

上一步操作无误后会自动跳转到这一步,如果误操作了,可以通过Ctrl + Z来回退,然后重新操作.
应用上下文
上下文动作是一样的,如果有可以执行的上下文动作,Rider将用下划线标记代码,左侧的间隔中有一个锤子图标提示.
举个例子,我们想要对ReturnMessage方法的参数msgnull检查:

  1. 输入光标(后文会重复将这个前置条件,全部省略成"光标"),注意锤子图标;
  2. 按下Alt + Enter的快捷键;
  3. 选择Check expression for null,这个可以避免空值导致的致命错误崩溃.

正确操作后,Rider会自动添加对参数msgnull检查代码,如下图所示:

null检查
这个是不是非常便捷,说白了可以帮我们写一部分代码,提升编程效率.当然,这部分代码都是非常简单的重复操作.

2.4 查找并应用操作

大家的教程可能和笔者的不一致,没有关系,这个教程就是做个引导,笔者尽量抽时间来补充.
查找和应用
你还可以使用Alt + Enter来运行Rider命令.例如,我们可以使用它来重命名一个类:

  1. 输入光标;
  2. 按下Alt + Enter的快捷键;
  3. 直接输入"rename"重命名;
  4. 在列表中选择Rename...;
  5. 把这个类重命名为Renamed.

这个就是在按下Alt + Enter的快捷键后可以进行命令动作进行搜索,当然,如果记得快捷键会更快速,例如重命名,笔者的快捷键是Ctrl+R和Ctrl+R的组合按键,这样比这步操作更高效,大家可以在Keymap中搜索Rename来进行快捷键配置.

总结
今日份的Alt + Enter快捷键教学就愉快的结束了,大家只需记住这个万金油快捷键就可以在Rider中横着走了,当然,越多的快捷键可以带来更多的效率提升.点击下一步可以进入下一个主题.

3.预设在线模板

Rider里面预置了很多模板,利用模板可以避免很多重复性的机械代码,非常便利.

3.1 创建类

在线模板是经常需要用到的代码片段,可以提供快速插入代码,包括:表达式,完整构造,整个类或函数方法.
创建一个类
要插入一个模板,首先输入一个缩写,然后将其扩展成完整的代码.一起来利用在线模板快速创建一个新类吧:

  1. 输入光标应该在空白的地方,足够可以创建一个新类的空间;
  2. 输入"class" 类;
  3. 在列表聚焦在class上后,按下TabEnter按键;
  4. 输入MyCircle作为类名,注意在MyCircle外围有个边框,表明是当前模板的参数;
  5. 按下Tab键来完成类创建.

3.2 创建属性

在完成类的创建后,我们一起来为这个类添加属性.由于这个类代表一个圆,它应该有int类型的Radius半径属性,当然大家可能更倾向使用floatdouble来作为半径属性的类型,总之这只是个编辑器教程,而不是编程教学.

创建属性

  1. 输入光标必须要要在这个类里面;
  2. 开始输入"prop"
  3. 在列表聚焦在prop上后,按下Tab或Enter.

下面需要为属性命名和指定类型:
属性类型
我们可以发现prop模板有两个可编辑的参数,即属性的类型和名称.红色边框的表明当前可编辑的参数.我们的Radius半径属性将使用int类型:

  1. 开始输入"int"
  2. 在列表聚焦到int上后,按Tab或Enter;
  3. 然后在输入光标移动到下一个参数上后按Tab键;
  4. 输入"Radius"
  5. 按Tab或Enter键.

3.2.1 创建圆心属性

在完成半径属性的编写后,在添加一个CenterCoordinates类型属性来作为圆心的坐标.

圆心坐标

  1. 输入光标必须在类里面;
  2. 输入"prop"
  3. 在列表聚焦在prop上后,按Tab或Enter;
  4. Rider支持驼峰命名规则,这个编程的老师应该会讲,简单的输入"ccoo"就有提示;
  5. 在提示的列表中选择CenterCoordinates类型,按Tab或Enter;
  6. 将输入按键移动到下一个属性模板参数,按Tab;
  7. 默认选择提示列表中的CenterCoordinates命名;
  8. 按Tab或Enter完成命名.

3.3 创建构造函数

我们的MyCircle类还缺一个构造函数,这里有更多的在线模板支持添加构造函数和初始化类属性.

创建构造

  1. 输入光标必须在类里面;
  2. 开始输入"ctor"
  3. 在弹出的列表中选择ctor,并按下Tab或Enter

然后Rider就会为我们创建好一个构造函数,是不是很高效?
Rider有更多预设模板来应对所有的编程需求:ifelse,forforeach,do...while,try...catch,using,等等.
预设模板
只需要简单地输入你需要的构造,按下Tab键,Rider会做剩下的事情.
完整的可用在线模板,接下来看看Rider提供的其他特性.

4.代码生成

你只需要知道代码生成的快捷键:Alt + Insert.
代码生成
这个快捷键会打开当下可选的所有代码生成选项.
比如,为了保障MyCircle类的值等式,我们想要基于RadiusCenterCoordinates属性实现Equals()GetHashCode()函数:

  1. 光标输入;
  2. 快捷键Alt+Insert;
  3. 选择Equality members
  4. 在对话框中,选择RadiusCenterCoordinates属性,点击OK.
        protected bool Equals(MyCircle other)
        {
    
    
            return Radius == other.Radius && Equals(CenterCoordinates, other.CenterCoordinates);
        }

        public override bool Equals(object obj)
        {
    
    
            if (ReferenceEquals(null, obj)) return false;
            if (ReferenceEquals(this, obj)) return true;
            if (obj.GetType() != this.GetType()) return false;
            return Equals((MyCircle)obj);
        }

        public override int GetHashCode()
        {
    
    
            return HashCode.Combine(Radius, CenterCoordinates);
        }

这就是代码生成.

5. 重构

重构的快捷键:Ctrl+Shift+R.
移动文件
R是Refactorings的缩写.
举个重构的例子,我们想要将新创建的MyCircle类移动到一个新文件:

  1. 输入光标要在MyCircle类的声明上;
  2. 快捷键:Ctrl+Shift+R;
  3. 选择Move to Another File并将类移动到MyCircle.cs

就是这么简单.

6.导航

使用Rider,你可以简单地找到一条通往源代码的方式.你可以导航到指定的声明,成员,方法调用,继承层次,错误,等等.
到声明
我们一起来看看这个是怎么操作的,我们想看看CenterCoordinates类的声明,那么可以快速导航到这个类声明:

  1. 快捷键:Ctrl+鼠标点击.

哪里不懂点哪里Orz.

6.1 查找引用

我们可能想知道CenterCoordinates类在别的什么地方都被用过.
查找引用

  1. 输入光标;
  2. 快捷键:Shift+ F12,觉得不方便,可以自定义;
  3. Find Result查找结果窗口,双击private CenterCoordinates _coordinates;就可以导航到该类的第一次使用.

6.2 万能导航

另外一个Rider万金油的功能就是:Shift,Shift.
这个连按两次Shift的操作在永劫无间里面叫做双闪,非常实用.
导航到任何

  1. 代码中的任意位置,双闪;
  2. 在打开的菜单中输入"mc"
  3. 在列表中选择MyCircle并导航到源码.

除了双闪这个万金油外,导航的另外一个基于上下文判断的智能导航快捷键是:Alt+`,和双闪的区别在于这个快捷键更智能,会基于输入光标的位置来判断我们可能想去的地方,弹出一个可能的列表供我们选择.
还有一个笔者喜欢的导航方式,就是Ctrl+Tab,这个快捷键可以快速切换编辑窗口.
还有一个,Alt+O,这个快捷键可以在头文件header和cpp实现之间快速切换.
这两个快捷键是笔者从VS那边继承过来的,所以并不算Rider独有的特性,只是顺带分享一下啊.

6.3 智能导航

我们来使用一下基于输入光标上下文的智能导航.
智能导航
导航到CenterCoordinates的声明,但是使用智能导航:

  1. 输入光标要在CenterCoordinates的属性声明上面;
  2. 快捷键:Alt+`
  3. 在导航列表中选择Declaration声明.

7.重新排列

我们想让你知道的下一件是:如何快速重排代码元素.四个简单的快捷方式:
重排
如上图所示,笔者偷懒一下,这四个快捷键可以快速重排表达式,声明,类型成员和其他的代码元素.

使用案例
这个案例就是将msg参数移动到右侧:

  1. 输入光标聚焦msg;
  2. 快捷键输入.

案例2
第二个案例是将ReturnMessage上移:

  1. 光标聚焦;
  2. 快捷键.

8. 格式化代码

我们在这里将向你展示的最后一个特色就是重新格式化代码,快捷键:Ctrl+Alt+Enter,笔者习惯用VS的Ctrl+K+D,大家可以自行配置.
格式化代码
编码风格不一样,格式化的效果就不一样,这个是编程常识哈,编程语言不同采用的形式也不一样,这些可以进行配置:如何配置代码风格?
使用方式就是在代码的任意位置按下快捷键,代码就会按照语言风格自动编排.

9.总结

以上这些功能只是Rider编辑器的基础,如果大家喜欢这个教程,可以给作者点个关注,这一篇的点赞/收藏达到100就写下一篇,如果大家没有这个需求,笔者也没有必要继续写这个系列.毕竟IDE的教程不是特别重要的,只能说提升大家编程效率,和编程本身比起来就不是重中之重,而是锦上添花.
所以,如果真的对大家有帮助,请大家动动金手指支持一下作者,非常感谢!
预祝各位程序员1024 Happy Coding!

猜你喜欢

转载自blog.csdn.net/qq_30137245/article/details/127473025