如何用 bash-support 插件将 Vim 编辑器打造成编写 Bash 脚本的 IDE
在这篇文章中，我们会介绍如何通过使用 bash-support vim 插件将 Vim 编辑器安装和配置 为一个编写 Bash 脚本的 IDE。
vim IDE bash
117.152.72.20
反斜杠是指&lt;leader&gt;吧，这样可能误导某些直接用别人配置的小白
来自117.152.72.20的 Chrome 57.0|Windows 10 用户
2017-05-02T11:02:26.000
36.251.248.186
这种&quot;把VIM 打造成xxxx IDE&quot;的文章隔段时间就会有人发一次... ,&nbsp;&nbsp;VIM是一款优秀的文本编辑器, 不是IDE, 整天折腾这些闲的蛋疼
来自福建泉州的 Firefox 52.0|Windows 7 用户
2017-05-02T12:33:12.000
在这篇文章中，我们会介绍如何通过使用 bash-support vim 插件将 Vim 编辑器安装和配置 为一个编写 Bash 脚本的 IDE。
IDE（[集成开发环境](http://www.tecmint.com/best-linux-ide-editors-source-code-editors/)）就是这样一个软件，它为了最大化程序员生产效率，提供了很多编程所需的设施和组件。 IDE 将所有开发工作集中到一个程序中，使得程序员可以编写、修改、编译、部署以及调试程序。


在这篇文章中，我们会介绍如何通过使用 bash-support vim 插件将 [Vim 编辑器安装和配置](http://www.tecmint.com/vi-editor-usage/) 为一个编写 Bash 脚本的 IDE。


![](/data/attachment/album/201705/02/005103ywxjjexnf8e3ip3l.jpg)


### 什么是 bash-support.vim 插件？


bash-support 是一个高度定制化的 vim 插件，它允许你插入：文件头、补全语句、注释、函数、以及代码块。它也使你可以进行语法检查、使脚本可执行、一键启动调试器；而完成所有的这些而不需要关闭编辑器。


它使用快捷键（映射），通过有组织地、一致的文件内容编写/插入，使得 bash 脚本编程变得有趣和愉快。


插件当前版本是 4.3，4.0 版本 重写了之前的 3.12.1 版本，4.0 及之后的版本基于一个全新的、更强大的、和之前版本模板语法不同的模板系统。


### 如何在 Linux 中安装 Bash-support 插件


用下面的命令下载最新版本的 bash-support 插件：



```
$ cd Downloads
$ curl http://www.vim.org/scripts/download_script.php?src_id=24452 >bash-support.zip

```

按照如下步骤安装；在你的主目录创建 `.vim` 目录（如果它不存在的话），进入该目录并提取 bash-support.zip 内容：



```
$ mkdir ~/.vim
$ cd .vim
$ unzip ~/Downloads/bash-support.zip

```

下一步，在 `.vimrc` 文件中激活它：



```
$ vi ~/.vimrc

```

并插入下面一行：



```
filetype plug-in on   
set number   # 可选，增加这行以在 vim 中显示行号

```

### 如何在 Vim 编辑器中使用 Bash-support 插件


为了简化使用，通常使用的结构和特定操作可以分别通过键映射来插入/执行。 `~/.vim/doc/bashsupport.txt` 和 `~/.vim/bash-support/doc/bash-hotkeys.pdf` 或者 `~/.vim/bash-support/doc/bash-hotkeys.tex` 文件中介绍了映射。


**重要：**


1. 所有映射（`\+字符` 组合）都是针对特定文件类型的：为了避免和其它插件的映射冲突，它们只适用于 `sh` 文件。
2. 使用键映射的时候打字速度也有关系，引导符 `\` 和后面字符的组合要在特定短时间内才能识别出来（很可能少于 3 秒 - 基于假设）。


下面我们会介绍和学习使用这个插件一些显著的功能：


#### 如何为新脚本自动生成文件头


看下面的示例文件头，为了要在你所有的新脚本中自动创建该文件头，请按照以下步骤操作。


![脚本示例文件头选项](/data/attachment/album/201705/02/005111cw2zxty9yd2ww3ow.png)


*脚本示例文件头选项*


首先设置你的个人信息（作者名称、作者参考、组织、公司等）。在一个 Bash 缓冲区（像下面这样打开一个测试脚本）中使用映射 `\ntw` 启动模板设置向导。


选中选项 1 设置个性化文件，然后按回车键。



```
$ vi test.sh

```

![在脚本文件中设置个性化信息](/data/attachment/album/201705/02/005111c6kdizyg4ie16k70.png)


*在脚本文件中设置个性化信息*


之后，再次输入回车键。然后再一次选中选项 1 设置个性化文件的路径并输入回车。


![设置个性化文件路径](/data/attachment/album/201705/02/005112cpp9l6w922g0nu9j.png)


*设置个性化文件路径*


设置向导会把目标文件 `.vim/bash-support/rc/personal.templates` 拷贝到 `.vim/templates/personal.templates`，打开并编辑它，在这里你可以输入你的信息。


按 `i` 键像截图那样在单引号中插入合适的值。


![在脚本文件头添加信息](/data/attachment/album/201705/02/005112x12kbb66z6gnxxgg.png)


*在脚本文件头添加信息*


一旦你设置了正确的值，输入 `:wq` 保存并退出文件。关闭 Bash 测试脚本，打开另一个脚本来测试新的配置。现在文件头中应该有和下面截图类似的你的个人信息：



```
$ vi test2.sh

```

![自动添加文件头到脚本](/data/attachment/album/201705/02/005113cv0myl26mbn1h370.png)


*自动添加文件头到脚本*


#### 添加 Bash-support 插件帮助信息


为此，在 Vim 命令行输入下面的命令并按回车键，它会创建 `.vim/doc/tags` 文件：



```
:helptags $HOME/.vim/doc/

```

![在 Vi 编辑器添加插件帮助](/data/attachment/album/201705/02/005113gixlnxzsxe58i8n8.png)


*在 Vi 编辑器添加插件帮助*


#### 如何在 Shell 脚本中插入注释


要插入一个块注释，在普通模式下输入 `\cfr`：


![添加注释到脚本](/data/attachment/album/201705/02/005113hr1vsvdih7iy7d1s.png)


*添加注释到脚本*


#### 如何在 Shell 脚本中插入语句


下面是一些用于插入语句的键映射（`n` – 普通模式, `i` – 插入模式，`v` 可视模式）：


1. `\sc` – `case in … esac` （n, i）
2. `\sei` – `elif then` （n, i）
3. `\sf` – `for in do done` （n, i, v）
4. `\sfo` – `for ((…)) do done` （n, i, v）
5. `\si` – `if then fi` （n, i, v）
6. `\sie` – `if then else fi` （n, i, v）
7. `\ss` – `select in do done` （n, i, v）
8. `\su` – `until do done` （n, i, v）
9. `\sw` – `while do done` （n, i, v）
10. `\sfu` – `function` （n, i, v）
11. `\se` – `echo -e "…"` （n, i, v）
12. `\sp` – `printf "…"` （n, i, v）
13. `\sa` – 数组元素, `${.[.]}` （n, i, v） 和其它更多的数组功能。


#### 插入一个函数和函数头


输入 `\sfu` 添加一个新的空函数，然后添加函数名并按回车键创建它。之后，添加你的函数代码。


![在脚本中插入新函数](/data/attachment/album/201705/02/005114jz0iplcmz10imi7j.png)


*在脚本中插入新函数*


为了给上面的函数创建函数头，输入 `\cfu`，输入函数名称，按回车键并填入合适的值（名称、介绍、参数、返回值）：


![在脚本中创建函数头](/data/attachment/album/201705/02/005114jz0iplcmz10imi7j.png)


*在脚本中创建函数头*


#### 更多关于添加 Bash 语句的例子


下面是一个使用 `\si` 插入一条 `if` 语句的例子：


![在脚本中插入语句](/data/attachment/album/201705/02/005114bd11zhj3b338ej33.png)


*在脚本中插入语句*


下面的例子显示使用 `\se` 添加一条 `echo` 语句：


![在脚本中添加 echo 语句](/data/attachment/album/201705/02/005115i2rh71k7rz3c88xh.png)


*在脚本中添加 echo 语句*


#### 如何在 Vi 编辑器中使用运行操作


下面是一些运行操作键映射的列表：


1. `\rr` – 更新文件，运行脚本（n, i）
2. `\ra` – 设置脚本命令行参数 （n, i）
3. `\rc` – 更新文件，检查语法 （n, i）
4. `\rco` – 语法检查选项 （n, i）
5. `\rd` – 启动调试器（n, i）
6. `\re` – 使脚本可/不可执行(\*) （n, i）


#### 使脚本可执行


编写完脚本后，保存它然后输入 `\re` 和回车键使它可执行。


![使脚本可执行](/data/attachment/album/201705/02/005115ezuvseyjvkksyosn.png)


*使脚本可执行*


#### 如何在 Bash 脚本中使用预定义代码片段


预定义代码片段是为了特定目的包含了已写好代码的文件。为了添加代码段，输入 `\nr` 和 `\nw` 读/写预定义代码段。输入下面的命令列出默认的代码段：



```
$ .vim/bash-support/codesnippets/

```

![代码段列表](/data/attachment/album/201705/02/005115vgjeagjassxxkzk6.png)


*代码段列表*


为了使用代码段，例如 free-software-comment，输入 `\nr` 并使用自动补全功能选择它的名称，然后输入回车键：


![添加代码段到脚本](/data/attachment/album/201705/02/005116e9ouzri0iyaghr5h.png)


*添加代码段到脚本*


#### 创建自定义预定义代码段


可以在 `~/.vim/bash-support/codesnippets/` 目录下编写你自己的代码段。另外，你还可以从你正常的脚本代码中创建你自己的代码段：


1. 选择你想作为代码段的部分代码，然后输入 `\nw` 并给它一个相近的文件名。
2. 要读入它，只需要输入 `\nr` 然后使用文件名就可以添加你自定义的代码段。


#### 在当前光标处查看内建和命令帮助


要显示帮助，在普通模式下输入：


1. `\hh` – 内建帮助
2. `\hm` – 命令帮助


![查看内建命令帮助](/data/attachment/album/201705/02/005116v16e1vnarxovx1x9.png)


*查看内建命令帮助*


更多参考资料，可以查看文件：



```
~/.vim/doc/bashsupport.txt  #在线文档的副本
~/.vim/doc/tags

```

* 访问 Bash-support 插件 GitHub 仓库：<https://github.com/WolfgangMehner/bash-support>
* 在 Vim 网站访问 Bash-support 插件：<http://www.vim.org/scripts/script.php?script_id=365>


就是这些啦，在这篇文章中，我们介绍了在 Linux 中使用 Bash-support 插件安装和配置 Vim 为一个 Bash-IDE 的步骤。快去发现这个插件其它令人兴奋的功能吧，一定要在评论中和我们分享哦。




---


作者简介：


Aaron Kili 是一个 Linux 和 F.O.S.S 爱好者、Linux 系统管理员、网络开发人员，现在也是 TecMint 的内容创作者，她喜欢和电脑一起工作，坚信共享知识。




---


via: <http://www.tecmint.com/use-vim-as-bash-ide-using-bash-support-in-linux/>


作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[ictlyh](https://github.com/ictlyh) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

