# aardio 开发环境快捷键与小技巧  

> 本帖仅介绍一些容易被忽视的重要技巧，  
> 例如括号匹配、同词高亮这些一看就会用，你不知道他也会自己跑出来介绍自己的功能，本帖一律不介绍。

首先介绍最重要的一个快捷键 **Ctrl + K,**  
这个快捷键的作用是更新与**修复更新折叠、着色、智能提示这些数据**。  
  
我们在输入代码时 —— 代码的结构会不断地变动，aardio 为了优化性能，并不会在输入每一个字符时都会更新折叠、着色、智能提示这些数据，而且有时候只是做局部更新。但我们可**以按 `Ctrl + K` 快捷键主动更新或修复这些数据**。  
  
我们也可以在标准库库、扩展库、用户库目录上点击鼠标右键，  
在右键菜单中点击【刷新目录、智能提示】刷新对应支持库的智能提示数据。 

![刷新智能提示](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/refresh-lib.jpg)
  
一般代码的智能提示会自动出来，也可以按 `Ctrl + I` ( 或者 `Ctrl + J` )组合键显示。  
注意 aardio 显示代码提示时会跟踪输入名字空间的顺序，有部分提示 `Ctrl + I` 调不出来，只有输入时才会出来。  
  
## F1 键编码助手

aardio 代码编辑器中按 `F1` 键可运行 AI 编码助手。

> 打开 `aardio 工具 » 问 AI » 设置` 可选择 AI 接口并勾选 `设为 F1 键编码助手`

- 如果无选区则AI 编码助手将帮您续写或补全代码。建议在输入光标前用行注释说明需求，再按 F1 键。
- 如果已选中库、库函数、关键字、特殊符号则自动打开相关文档。
- 如果选中其他代码，则自动打开 `问 AI` 助手会话界面，自动生成的提示词内由「三重引号」包围的 `"""选中代码"""` 代表当前选区代码。

<img alt="F1 键编码助手" src="http://aardio.com/zh-cn/docs/images/fim.gif" width="500"> 

按 Ctrl + F1 可以显示、折叠工具栏。
  
##  其他一些常用快捷键

 
1. `F11` 切换全屏  

2. `Ctrl + B` 自动隐藏侧边栏  

3. `Ctrl + W` 关闭当前窗口（这个不是指文档，一个文档可以有多个视图窗口）  

4. 选中一段代码，按 `Tab` 键增加缩进，按 `Shift + Tab` 减少缩进。  

5. `Ctrl + /` 切换注释  

用于取消或添加注释。  
如果选区内包含注释，或光标位于注释内（或两侧）则移除注释，否则添加注释。  

添加注释时：  
无选区总是添加「行注释」，有选区则总是添加「段注释」  

6. `Ctrl + *` 自动输入段注释标记  
如果遇到热键冲突，同时按下 `Ctrl + Shift +  *`  作用是一样的。  

如果当前光标位置无选区：则自动输入 输入段注释标记 `/* ..... */`，  
如果当前光标位置有选区：则在选区首尾添加段注释标记，如果选区内已经包含其他段注释，则外层新加的段注释标记会自动增加首尾星号数目，以避免冲突。  

7. `Ctrl + Shift + <` 自动输入网页模板标记 `<?   ?>`	  


8. `Ctrl + {` 自动输入{}包含的语句块，并添加缩进，光标移动到语句块内部。  
        如果先选中一段代码，该段代码自动移入语句块内部，如果遇到热键冲突，同时按下Shift键也可以。  

9. `Ctrl + (` 自动输入()，光标移动到括号内部。  
        如果先选中一段代码，该段代码自动移入括号内部，如果遇到热键冲突，同时按下Shift键也可以。  

10. `Ctrl + "` 自动输入一对引号，光标移动到引号内部。  
        如果先选中一段文本，该段代码自动移入引号内部，并且文本中的所有双引号自动替换为一对双引号（因为在双引号内用一对双引号表示原来的双引号），如果遇到热键冲突，同时按下Shift键也可以。  

11. Ctrl + &#96; 自动输入一对反引号，光标移动到反引号内部。  
        如果先选中一段文本，该段代码自动移入反引号内部，并且文本中的所有反引号自动替换为一对反引号（因为在反引号内用一对反引号表示原来的反引号），如果遇到热键冲突，同时按下Shift键也可以。  

12. `Ctrl + &` 自动输入2个 `&&`，如果遇到热键冲突，同时按下Shift键也可以。  

13. `Ctrl + |` 自动输入2个 `||`，如果遇到热键冲突，同时按下Shift键也可以。

  
  
##  Tab,Shift+Tab 快捷键的用法
  

按 `Tab`,`Shift+Tab` 键时，  
如果有代码选区，但按Tab缩进、按`Shift+Tab`减少缩进逻辑。  
  
按`Shift+Tab` 键时如果无代码选区，  
则向右侧查找符合以下条件之一的位置，并移动输入光标到该位置：  
1. 右括号右侧，如果刚好跳到 `if(){}` 的语句块开始标记前，则继续向后跳到语句块内部。  
2. 字符串与注释内侧开始处  
3. 字符串与注释结束处。
  
##  其他快捷键
  
界面菜单或工具栏有说明的这里不列出，注意这些是很多编辑器都可以通用的快捷键。  
  
-  `Ctrl + N` 新建文件  
-  `Ctrl + Tab` 快速切换当前窗口   
-  `Ctrl + /` 切换注释   
-  `Ctrl + A` 全选  
-  `ctrl + C` 复制  
-  `ctrl + V` 粘贴  
-  `ctrl + X` 剪切  
-  `Ctrl + Z` 撤消  
-  `Ctrl + Y` 重做  
-  `Ctrl + F` 查找  
-  `Ctrl + H` 替换   
-  `Shift +  Up, Down, Left, Right)` 改变文本选区。   
-  `Enter` 在下方添加换行  
-  `Shift + Enter` 在当前行上方添加换行   
-  `Alt +  Up, Down` ,`Alt + Down`  将当前行向上，或向下移动   
-  `Ctrl + Shift + K` 删除当前行   
-  `ctrl + 退格键 `删除上一个单词（或符号）。  
-  `ctrl + Right` 移动到下一个单词（或符号）的开始处。  
-  `ctrl + Left` 移动到下一个单词（或符号）的开始处。  
-  `Ctrl + Up` ， `Ctrl+ Down`        向上/向下滚动   
-  `Home` 到行首  
-  `End` 到行尾  
-  `Shift + Home` 扩展文本选区到行首  
-  `Shift + End` 扩展文本选区到行尾   
-  `Ctrl + Home` 到文件开始  
-  `Ctrl + End` 到文件尾  
-  `Ctrl + Shift + Home` 扩展文本选区到文件开始  
-  `Ctrl + Shift+ End `扩展文本选区到文件尾   
-  按住 `Ctrl` 键，然后按 `+` 键放大，按 `-` 键缩小编辑器视图。  
-  按住 `Ctrl` 键，然后滚动鼠标滚轮可放大或缩小编辑器视图。
- 方向键( Arrow keys: Up, Down, Left, Right)  在代码视图移动光标，在窗体设计视图微调控件位置。
- Shift +  键盘上的方向键( Arrow keys: Up, Down, Left, Right)  在代码视图改变文本选区，在窗体设计视图微调控件大小。在窗体设计视图按住鼠标左键不放，然后再按键盘上的方向键( Arrow keys: Up, Down, Left, Right) 也可微调控件大小,等价于 Shift +  方向键( Arrow keys: Up, Down, Left, Right)  。



##  复制通用 HTML 高亮代码块
  
在 aardio 代码编辑器点右键，打开右键菜单。  
  
然后点击『复制全部到 HTML 代码块』就可以复制 HTML 格式的高亮代码块到剪贴板。  
在很多在线编辑器都可以直接粘贴此代码块，兼容公众号、头条号、百家号等图文编辑器。  
  
如果点击『复制全部到 HTML 代码块』的同时按住 Ctrl 键，  
则复制的代码块支持自动换行。  
  
如果点击『复制全部到 HTML 代码块』的同时按住 Shift 键，  
则以文本格式复制高亮代码块的 HTML 代码到剪贴板。   
  
##  快速选择代码段
  
按住 CTRL 用鼠标左键点击，可选择当前所属代码段。  
一个字符串、注释均被识别为一个代码段单位。  

![快速选择代码段](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/quick-selection.gif)
   
如果按住Ctrl 点击的是代码中的超链接 - 略有不同的是会调用系统默认浏览器打开该网址。


##  在窗体设计器中巧用 Shift 键对齐控件、统一控件大小

在窗体设计器中，选择多个控件，  
然后点击工具栏控件布局按钮，弹出菜单中可以对齐、统一控件大小等。

![锁定控件](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/align-controls.jpg)

您可以拖动鼠标，拖选多个控件。  
也可以单按 Ctrl 键不放用鼠标左键点击并切换一个控件的选择、取消选择状态。  
或者单按 Shift 键不放用鼠标左键点击并多选控件。  
如果同时按住 Ctrl + Shift 不放用鼠标左键点击控件会移动控件到最前面。  
按住 Ctrl + Shift 连续点击所有控件会重排 Z 序（ 也是Tab 键顺序 ）。  
  
【重要】**当你单按 Shift 键不放，最后一次用鼠标点击的控件会被设置为【参考控件】**，  
【参考控件】的选区控制点显示为黑色小方块，而其他选中控件显示为空心小方块。  
当对齐位置或统一大小时，以【参考控件】所在的位置或大小为标准 - 并调整到与【参考控件】相同。  
  
##  使用对齐辅助线
  
aardio 有显示对齐辅助线的功能，可以非常方便的实现手动对齐。  
使用这个功能之前，要首先设置控件自动对齐到网格（在aardio设计器上方的工具栏点击【自动对齐到网格】按钮）。   

![锁定控件](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/ctrl-guide-lines.gif)
  
##  锁定控件
 
可以在右键菜单中临时锁定控件（切换到代码视图、或关闭文件时自动解锁），  
如果一个控件被锁定以后就不能再调整大小（避免被无意拖动），如果被锁定控件与其他控件重叠，鼠标点击时将穿透重叠区域 -优先选择未被锁定的控件。  
  
另外，我们也可以在控件属性中设置“**临时锁定**”属性。  

![锁定控件](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/lock-ctrl.jpg)
  
##  九宫格自动缩放布局
  
aardio 中的窗口、控件自带窗口缩放自适应功能。  
每一个控件都可以在控件属性中设置自适应缩放、固定边距等属性。 
  
而且我们可以一键为所有控件自设置这些参数，  
方法很简单，右键点窗体，然后在弹出菜单中点击「九宫格缩放布局」即可。  

![九宫格缩放布局](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/grid-layout.gif)
 
##  跳转到定义 / 文件   
在代码中右键点击变量（或函数名等），  
在弹出的右键菜单中点击【 跳转到定义 / 文件 】，或直接按F12快捷键，  
可以快速跳转到该变量定义位置，如果选择的是标准库函数，则打开标准库定位到函数所在位置。  

![跳转到定义](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/f12.gif)
 
注意不需要设置选区，直接鼠标右键点击就行了。  
  
也可以在代码中的文件路径上右键点击，使用【 跳转到定义 / 文件 】功能打开文件， 如果点选的不是aardio文件 - 将调用外部编辑器打开。如果点选的是目录 - 调用资源管理器打开。  

![跳转到定义](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/f12-filepath.gif)
  
##  `$` 包含指令符

可以直接从桌面拖动一个文件放到代码编辑器里，  
将文件内容包含进一个普通字符串变量,编译发布后不再需要原文件(已经编译到程序的变量里面了)  

![包含操作符](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/$.gif)

这个符号挺有意思，只要在文件路径前面加上这个符号, 就会将该文件编译为一个普通的字符串对象. 例如  `var str = $"e:/我的图像/x.jpg"` 如果编译或发布以后, 你就不需要这个图像文件了，即使别人电脑上没有这个E盘也没有关系，因为文件已经编译成一个普通的二进制字符串了。在aardio编辑器里，只要将资源管理器里的文件直接往编辑器里一拖就行了，会自动加上这个包含指令符。

##  可以直接从资源管理器拖动外部文件到 aardio 工程目录中

可以直接从资源管理器拖动外部文件到 aardio 工程目录中。

![拖放文件](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/dnd.gif)
  
也可以复制文件以后，在工程目录上点右键，在弹出菜单点击“**粘贴文件...**”即可。  
如果是 \*.ttf 格式的图标字体文件，请粘贴到标准库（或用户库）的 fonts 目录，如下图：  

![粘贴文件](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/paste.jpg)
  
可以直接拖动工程目录下的文件到代码内，  会自动生成相对工程目录的短路径（ aardio中路径首字符为`/`或`\`表示应用程序根目录）  如果被拖动的文件是一个窗体文件，将自动生成加载窗体的代码（ 如上图 ）  

![拖放工程文件](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/dnd-project-file.gif)

## 拖动选项卡排序

aardio 编辑器打开多个代码文件时，可拖动选项卡排序，如图：

![拖动排序 MDI 选项卡](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/drag-tabs.gif)

##  状态栏查看文件路径

如果你在 aardio 中打开了太多的 aardio 文件，  
可以在 aardio 状态栏查看文件路径，如果状态栏显示的是其他信息，  
试试点击不同文件的选项卡来回切换一下 - 就可以看到路径了。  
 
也可以在编辑器选项卡上右键菜单上点击 `浏览此文件...`   
  
注意 aardio 菜单项的标题后面带  `...`   省略号，通常表示此操作与系统资源管理器有关。 `浏览此文件...` 指的也是调用资源管理器中查看文件位置。
 
## 自定义发布（ build ）

打开 aardio工程，首次点击【发布】按钮生成EXE文件，  
会在工程下生成 “/.build/” 目录， 双击打开“/.build/” 目录，可以看到生成了以下文件：  
  
`/.build/default.init.aardio`
`/.build/default.main.aardio`
`.build/default.Manifest.xml`

注意上面所有文件名第一个"."前面的部分应当与工程名相同，例如上面的几个文件对应的是 default.aproj 工程文件。  
  
`/.build/default.Manifest.xml` 为EXE文件的配置信息，Manifest一般不建议修改，详细了解该文件的作用请查阅MSDN以及相关资料，这里不多讲。  
  
其中`/.build/default.main.aardio` 是一个触发器，在生成EXE以后会被自动调用，例如用aardio写安装向导程序，就可以在这里调用7z等支持库把其他文件压缩到EXE文件尾部了。  
  
另外一个`/.build/default.init.aardio`在发布以前被调用，例如我们在服务器上写fastcgi程序，因为cgi.exe在测试运行时一直是在占用状态，可以在此文件中添加下面的代码自动退出cgi进程。

```aardio
 //发布前触发  
 import ide;import process.file;  
 process.file.terminate( ide.getPublishPath() );
```

另外支持库**如果是库目录下面的默认库**，也可以**在同一库目录**添加 \\.build\\main.aardio 自定义一些发布操作，

很多库下面有这个文件，大家可以自己看一下。

## 自定义控件

打开窗口设计器，在控件工具箱中的最后一个控件是自定义控件。  

![自定义控件](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/custom.jpg)
 
自定义控件可以修改类名 - 这里可以使用所有 win.ui.ctrl 名字空间下的类名。  
所以，你可以通过自定义控件创建所有其他的控件。  

![自定义控件 - 修改类名](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/custom2.gif)
 
自己写自定义控件也很简单，  
只要在 win.ui.ctrl 名字空间下建立库文件，然后创建窗口就可以。  
可参考  win.ui.ctrl 下面的其他控件源码，以及 win.ui.ctrl.custom 控件源码

## 窗口特殊坐标

在窗口属性中，left, top 属性默认为相对于左上角的坐标，  
如果为-2表示显示在右下角，如果为 -1 就是屏幕居中。

![窗体位置属性](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/form-ltrb.jpg)
  
对于窗体对象，还可以调用 winform.center() 函数居中显示，  
这个函数可以指定一个计算居中位置的父窗口，如果不指定就取自己的当前父窗口。  
这个函数会首先计算居中显示以后如果在可见范围内 - 就居中显示，否则自动调整到屏幕可见范围内显示。

## 调整控件 Z 序的技巧

Z 序指的是控件在 Z 轴上的排序，  
X 轴表示横坐标，Y 轴表示纵坐标，而 Z 轴表示的是窗口在屏幕上的前后叠加顺序，  
  
当你打开 aardio，从工具箱里往窗体上拖放控件，先放上去的 Z 序较小，后放上去的 Z 序较大。  
在运行时默认的控件会从Z序较小的开始创建、先创建的控件 Z 序较小。  
  
可以理解为：  
窗口内部有一个数组维护了所有子窗口的句柄，按 Z 序从小到大依次排列。  

如果为-2表示显示在右下角，如果为 -1 就是屏幕居中。

![窗口 Z 序](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/z.jpg)
  
在窗口设计器中，可以在控件上使用鼠标右键点击，  
在弹出的右键菜单中点击【前置】【后置】【最前面】【最后面】等菜单项调整Z序。  
  
移动控件到【最前面】的快捷键是：Ctrl + Shift + 鼠标左键。  
如果按住 Ctrl + Shift + 鼠标左键 依次点击所有控件，就是重排全部 Z 序。  
注意 Tab 键切换焦点顺序等于 Z 序。

## 设置代码编辑器字体与配色

设置代码编辑器字体与配色：  
点击"aardio 工具 » 开发环境 » 编辑器外观" 就可以设置代码编辑器的配色方案了。

![设置码编辑器外观](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/editor-theme.jpg)
  
调整编辑器字体大小有三种方式.  
  
1. 在顶部功能区点击"放大","缩小"。  
  
2. 在底部状态栏右侧 - 字体滚动选框上点击向上,或向下箭头, 也可以用鼠标滚轮快速设定。  
  
3. 按住键盘上的 Ctrl 键, 然后在代码编辑器上用鼠标滚轮向上或向下滚动调整字体大小。  
  
## 快速选中代码行

点击每一行代码最前面的空白处可以快速选中一行代码。

![选中代码行](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/line.gif)

另外按 `Ctrl + G` 可以直接跳转到指定行 - 代码比较多的时候这个快捷键比较有用。  
  
## 编辑器中鼠标双击选中单词

在代码编辑器中双击文字，可以快速选中一个中文短句或一个英文单词。  
  
## 快速缩进、撤消缩进

选中多行代码，按键盘上的 `Tab` 键可增加一个缩进，按 `Shift + Tab` 可撤消一个缩进。

## 自动折叠代码块

aardio 编辑器中下面格式的代码块会默认显示为折叠状态

```aardio 
/*折叠状态显示标题{{*/
//....
/*}}*/
```

可选中代码块，然后点击「aardio 窗口顶部的：语法 » 自动折叠选区」 快速转换为折叠代码块，如下图：

![转换为折叠代码块](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/auto-fold.gif)

## 快速注释

可以拖选一段代码，然后点击工具栏的【注释】按钮，  
如果当前没有任何选区，点【注释】按钮会注释输入光标所在的当前代码行。  
  
取消注释并不需要拖选代码，在任何一个注释块内点【取消注释】按钮就可以了，  
编辑器会自动检测出注释所在的开始位置、结束位置并取消注释。   

## 同一目录放多个工程文件

你知道吗？其同一工程文件目录下，其实可以放多个aardio工程文件，  
在新版工程管理器中可以方便的管理同一目录下的工程，aardio新版对于同一工程只会打开一个进程实例，所以任何地方双击打开工程 - 都会立即切换到已打开的实例。

![在多个工程文件间快速切换](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/multi-project.gif)
 
上图为方便截图使用了右键菜单操作，在工程管理器中也可以鼠标左键双击直接打开工程，开始页可直接鼠标左键单击打开工程。  
  
注意：

1. 同一个目录下的工程 可以共享同一用户库目录（即工程目录下的"/lib/"目录），但用户库可以按名字空间分类组织 - 这与标准库包含大量的库并不会混乱的道理是一样的。注意**在工程中删除用户库中的目录、或文件 - 会实际的删除硬盘文件**。  
  
2. 每个工程可以创建不同的虚拟目录，也可以包含相同的虚拟目录（ 允许添加不同的文件 ），**在工程中移除虚拟目录、或文件 - 不会删除硬盘文件**。  
   
3. 每个工程的启动文件文件名可以是 \*.main.aardio 格式，例如 default.aproj的启动文件就是 default.main.aardio。


## 代码首行注释的特殊用途

在 aardio 代码中，首行注释有一些特殊用途。  
  
在标准库、用户库中，首行注释可以更改显示在IDE中的标题（修改以后，需要在上层目录的右键菜单中点刷新目录）。  

![刷新目录与智能提示](https://www.aardio.com/zh-cn/docs/guide/ide/images/tips-and-tricks/refresh-lib.jpg)

其他的普通 aardio 文件，如果首行注释为

```aardio
 //RUNAS//
```

那么在 aardio 中点击【运行】运行该代码时将会请求系统管理权限。  
如果在工程的 main.aardio 启动文件首行添加 //RUNAS//，那么将会自动修改 "\\.build\\default.Manifest.xml" 文件设置生成的EXE文件启动时需要管理权限。  
  
如果当前进程已经有管理权限，则可执行以下代码设置为开机启动自动获取管理权限（无弹框）:  
  
```aardio
if(!_STUDIO_INVOKED){
    import sys.runAsTask;
   
    //创建开机任务
    var task = sys.runAsTask("WubiLex( 五笔助手 ) 启动任务","用于微软五笔的辅助工具。");
   
    //如果用户勾选开机启动
    if(winform.chkEnableSystemRun.checked){
        
        //设为开机以管理权限启动
        task.register("/tray");
    }
    else {
        //取消开机启动
        task.delete();
    }   
}
```

开机启动、或开机以管理权限启动 —— 都尽量在用户同意并勾选相关选项后再设置。
