bashsupport插件_如何用 bash-support 插件将 Vim 编辑器打造成编写 Bash 脚本的 IDE

IDE(集成开发环境)就是这样一个软件,它为了最大化程序员生产效率,提供了很多编程所需的设施和组件。 IDE 将所有开发工作集中到一个程序中,使得程序员可以编写、修改、编译、部署以及调试程序。

在这篇文章中,我们会介绍如何通过使用 bash-support vim 插件将 Vim 编辑器安装和配置 为一个编写 Bash 脚本的 IDE。

什么是 bash-support.vim 插件?

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

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

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

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

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

$cdDownloads

$ 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-inon

setnumber#可选,增加这行以在vim中显示行号

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

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

重要:

所有映射(\+字符 组合)都是针对特定文件类型的:为了避免和其它插件的映射冲突,它们只适用于sh 文件。

使用键映射的时候打字速度也有关系,引导符 \ 和后面字符的组合要在特定短时间内才能识别出来(很可能少于 3 秒 - 基于假设)。

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

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

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

脚本示例文件头选项

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

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

$vitest.sh

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

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

设置个性化文件路径

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

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

在脚本文件头添加信息

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

$vitest2.sh

自动添加文件头到脚本

添加 Bash-support 插件帮助信息

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

:helptags $HOME/.vim/doc/

在 Vi 编辑器添加插件帮助

如何在 Shell 脚本中插入注释

要插入一个块注释,在普通模式下输入 \cfr:

添加注释到脚本

如何在 Shell 脚本中插入语句

下面是一些用于插入语句的键映射(n – 普通模式, i – 插入模式,v 可视模式):

\sc – case in … esac (n, i)

\sei – elif then (n, i)

\sf – for in do done (n, i, v)

\sfo – for ((…)) do done (n, i, v)

\si – if then fi (n, i, v)

\sie – if then else fi (n, i, v)

\ss – select in do done (n, i, v)

\su – until do done (n, i, v)

\sw – while do done (n, i, v)

\sfu – function (n, i, v)

\se – echo -e "…" (n, i, v)

\sp – printf "…" (n, i, v)

\sa – 数组元素, ${.[.]} (n, i, v) 和其它更多的数组功能。

插入一个函数和函数头

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

在脚本中插入新函数

为了给上面的函数创建函数头,输入 \cfu,输入函数名称,按回车键并填入合适的值(名称、介绍、参数、返回值):

在脚本中创建函数头

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

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

在脚本中插入语句

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

在脚本中添加 echo 语句

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

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

\rr – 更新文件,运行脚本(n, i)

\ra – 设置脚本命令行参数 (n, i)

\rc – 更新文件,检查语法 (n, i)

\rco – 语法检查选项 (n, i)

\rd – 启动调试器(n, i)

\re – 使脚本可/不可执行(*) (n, i)

使脚本可执行

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

使脚本可执行

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

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

$.vim/bash-support/codesnippets/

代码段列表

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

添加代码段到脚本

创建自定义预定义代码段

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

选择你想作为代码段的部分代码,然后输入  \nw 并给它一个相近的文件名。

要读入它,只需要输入  \nr 然后使用文件名就可以添加你自定义的代码段。

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

要显示帮助,在普通模式下输入:

\hh – 内建帮助

\hm – 命令帮助

查看内建命令帮助

更多参考资料,可以查看文件:

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

~/.vim/doc/tags

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

原文发布时间为:2017-05-02

本文来自云栖社区合作伙伴“Linux中国”

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

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

相关文章

java--自动装箱,拆箱

自动装箱:把基本类型转换为包装类类型 自动拆箱:把包装类类型转换为基本类型 之前无法自动装箱时: public static void main(String[] args) { int x 100; Integer i1 new Integer(x); //将基本数据类型包装成对象,装箱 int…

数字孪生:如何撑起一个万亿市场的产业变革?

来源: 脑极体 今天我们介绍一个在产业界如火如荼,但大众还非常陌生的概念:数字孪生(Digital Twin)。在解释这一晦涩难懂的概念前,我首先想到了一个人,前苏联著名的昆虫学家、数学家和哲学家——…

二、python框架相关知识体系

Django框架 1、django框架、flask框架和Tornado框架的区别? django框架,内置组件多,自身功能强大,是一个大而全的框架,ORM、Admin、中间件、Form、ModelFrom、信号、缓存、csrf等flask框架,内置组件少&…

Android跟web哪个好,比系统自带的WebView更好用 | AgentWeb

名称AgentWeb语言Android平台GitHub作者Justson在混合化开发大行其道的今天,安卓开发经常会用到WebView,用于加载网页。系统自带的WebView性能和流畅度都一般,今天给大家推荐一款第三方WebView,性能比系统自带的要好,功…

牛客网--2019校招--瞌睡

题目描述 小易觉得高数课太无聊了,决定睡觉。不过他对课上的一些内容挺感兴趣,所以希望你在老师讲到有趣的部分的时候叫醒他一下。你知道了小易对一堂课每分钟知识点的感兴趣程度,并以分数量化,以及他在这堂课上每分钟是否会睡着…

preview窗口 unity_Unity3D在Preview中打印日志的方法

Preview窗口除了可以预览模型之外,我们还可以做别的操作。今天我们来写个小工具在Preview窗口中显示调试信息。可以看下面的图,同样是打印 health 和 power 的日志,在 Preview 中显示比在 Console 中显示舒服多了。左边是Console中显示,右边是…

神经科学如何影响人工智能?看DeepMind在NeurIPS2020最新《神经科学人工智能》报告,126页ppt...

来源:专知Jane Wang是DeepMind神经科学团队的一名研究科学家,研究元强化学习和受神经科学启发的人工智能代理。她的背景是物理、复杂系统、计算和认知神经科学。Kevin Miller是DeepMind神经科学团队的研究科学家,也是伦敦大学学院的博士后。他…

android 6.0 x86 64,安卓x86 6.0 iso下载|android x86 6.0 iso系统下载RC1 版_64位/32位IT猫扑网...

android x86 6.0 iso系统镜像最新发布,rc1版修复了之前的问题,android-x86 6.0-rc1(marshmallow-x86)这是android-x86 6.0的第一个候选版本(marshmallow-x86)稳定释放。小编已将32位和64位的安卓6.0 x86系统分网盘,欢迎下载使用。主要特点6.0…

牛客网--2019校招--丰收

题目描述 又到了丰收的季节,恰逢小易去牛牛的果园里游玩。 牛牛常说他对整个果园的每个地方都了如指掌,小易不太相信,所以他想考考牛牛。 在果园里有N堆苹果,每堆苹果的数量为ai,小易希望知道从左往右数第x个苹果是属…

flash写保护原理_一种基于flash写保护的防止flash被意外篡改的方法与流程

本发明属linux嵌入式芯片安全技术领域于领域,尤其是涉及一种nandflash写保护应用方法。背景技术:目前很多公司都纷纷尝试智能设备(sd,smartdevice)领域,sd设备功能越来越多,使用的flash(闪存)大多为spinor、spinand、emmc等等。sd…

科普长文揭秘生命为何会具有主观能动性

来源:混沌巡洋舰动物的免疫系统依赖于被称为巨噬细胞的白细胞吞噬并吞噬入侵者。这些细胞有着坚定的决心和热情: 在显微镜下,你可以看到一个像球状的巨噬细胞在玻璃片上追逐一个细菌,它的猎物试图通过红细胞的障碍物逃跑时,而在它…

牛客网--19校招--获得最多的奖金

题目描述 小明在越南旅游,参加了当地的娱乐活动。小明运气很好,拿到了大奖, 到了最后的拿奖金环节。小明发现桌子上放着一列红包,每个红包上写着奖金数额。 现在主持人给要求小明在这一列红包之间“切”2刀,将这一列…

Linux——Centos7网络配置1ens33文件

解决的是 Name or service not known 的问题 [rootwww ~]# ping www.baidu.comping: www.baidu.com: Name or service not known [rootwww ~]# 1、网络配置查看 记住NAT设置中的子网IP、子网掩码、网关IP三项,接下来配置文件主要是这三项。网关一般就是.2,ip设置为…

daz模型导入marvelous_传世工坊自制Daz Studio 4.10 系列入门教程

课程目录如何安装如何导入官方素材如何导入第三方素材视图操作快捷键设置如何捏脸如何捏身体如何使角色成长,大人变小孩或者小孩变大人如何使角色变老如何开车(18内容)如何制作头发随风飘动效果如何制作面部表情动画陆续更新,敬请留意。B站在线观看入门教…

科技垄断正在朝着纵向发展

来源:CSDN译者:弯月以下为译文:科技垄断有关的话题,相信大家都不陌生,而纵向垄断指的是通过技术栈深入到硬件的纵向集成。在本文中,我们来讨论一下为什么当下科技垄断开始朝着纵向发展,这种垄断…

android10全局黑暗,传Android 11或加入自动切换全局黑暗模式功能

日前有外媒援引消息人士爆料称,谷歌曾在Android 10系统中带来了全局黑暗模式功能,但自动切换黑暗模式的功能却在Android 10系统的早期测试阶段意外遭砍!而据最新消息显示,Android 11系统有望上线自动切换全局黑暗模式功能。按照An…

ParserError: Error tokenizing data. C error: Expected 1 fields in line 122, saw 2

数据分析和挖掘实战第15章的一段读取.txt文件报错 import pandas as pdinputfile data/meidi_jd.txt outputfile data/meidi_jd_process_1.txt data pd.read_csv(inputfile,encoding utf-8,header None) File "pandas/_libs/parsers.pyx", line 965, in pandas._…

动态规划--牛客网19校招--魔法深渊

题目描述 前几个月放映的头号玩家简直火得不能再火了,作为一个探索终极AI的研究人员,月神自然去看了此神剧。 由于太过兴奋,晚上月神做了一个奇怪的梦,月神梦见自己掉入了一个被施放了魔法的深渊,月神想要爬上此深渊…

python离线安装pip.whl_20180903 - Python Pip 工具下载whl包与离线安装

20180903 - Python Pip 工具下载whl包与离线安装1. 我的Blog2. 简介信息摘要:Linux下,python,pip工具离线安装包Author: andy_yhmyeah.netDate: 20180903关键字:python,python3,pip,pip3,requirements.txt,freeze3. 查…

android 运行jquery,Android端JQueryMobile使用教程(一)

一、 通过Javascript访问Android的Java代码1.其实WebApp这个版块已经放置一段时间了,但是一直没有写文章,那是因为我还在学习中。iscrollview下载地址:https://github.com/watusi/jquery-mobile-iscrollview iscroll 下载地址:http://cubiq.org/iscroll-…