vim仿source insight工程管理

使用说明

vimobj [name] [todo]
	name 工程名
	todo 动作:update clean config
		update 更新工程符号表并打开vim
		clean 清理工程
		config 创建/配置工程
配置
	name		工程名
	runPath		vim启动路径
	fileDir		工程文件路径,注意:每一条后面加空格

	例子
		name="ngnix"
		runPath="/home/jczhang/src/nginx/nginx-1.14.2/src"
		filePath="/home/jczhang/src/nginx/nginx-1.14.2/src"
		filePath+=" "
	注意:filePath每一条后面都要添加空格
例子
	vimobj					打开上一次配置的工程
	vimobj ngnix			打开指定工程
	vimobj ngnix update 	指定工程更新符号表并打开
	vimobj ngnix clean  	清理指定工程
	vimobj ngnix config 	创建/配置指定工程

依赖插件:sed、cscope、ctags

脚本实现
1、创建工程目录,进入

mdkdir VimObject
cd VimObject

2、创建vimobj文件,添加可执行权限

touch vimobj
chomd +x vimobj

3、创建配置模板文件.configure

touch .configure

4、创建固定模板文件.template

touch .template

5、添加当前目录到环境变量,这句仅当前终端有效

export PATH=$PATH:/home/jczhang/VimObject 

6、分别加入以下代码就可以根据使用说明使用了
vimobj代码

#!/bin/bash

##################初始化全局变量区#################

#获取文件绝对路径

if [ $(echo $0 | grep '^/') ]; then
	    g_rootPath=$(dirname $0)
	else
		g_rootPath=$(pwd)/$(dirname $0)
fi
g_paramNum=$#
g_name=$1
g_todo=$2

##################函数定义区###########################

CheckParameters()
{
	paramNum=$1
	name=$2
	todo=$3
	
	if [ $paramNum -eq 0 ]; then
		echo "please input object name. like:"
		echo "    vimobj name"
		exit
	fi

#	grep "name=" .configure | grep $name > /dev/null
#	if [ $? -eq 1 ]; then # 为1表示没有这个name	
#		if [ ! -d $name ]; then
#			echo "input error"
#			exit
#		fi
#	fi

	if [ $paramNum -gt 1 ]; then
		if [[ "$todo" != "update" && "$todo" != "clean" && "$todo" != "config" ]]; then
			echo "input todo error"
			exit
		fi
	fi
}

CreateObject()
{	
	name=$1

	if [ ! -d $name ]; then
		mkdir -p $name
		touch $name/run.sh
		chmod +x $name/run.sh

		sed -i  "s/name=\".*\"/name=\"${name}\"/g" .configure

		cp .configure $name/configure	
		return
	fi

}

ObjectConfig()
{
	name=$1
	vim $name/configure
	

	echo "name=\"$name\"" > $name/run.sh
	cat $name/configure >> $name/run.sh
	echo "g_rootPath=$g_rootPath" >> $name/run.sh
	cat .template >> $name/run.sh
	
	exit
}

RunOldObject()
{	
		name=`grep "name=\"" .configure`
		if [ "$name" == "name=\"\"" ]; then
			echo "nothing object"
		fi
		name=${name#*\"}
		name=${name%*\"}
		if [ ! -d $name  ]; then
			echo "nothing object"
		fi
		$name/run.sh
		exit
}
Clean()
{
	name=$1
	rm -rf $name
	exit
}

main()
{
	paramNum=$1
	name=$2
	todo=$3

	cd $g_rootPath
	if [ $paramNum -eq 0 ]; then
		RunOldObject
	fi
	CheckParameters $paramNum $name $todo
	

	if [ "$todo" == "clean" ]; then
		Clean $name	
	fi
	
	CreateObject $name

	if [ "$todo" == "config" ]; then
		ObjectConfig $name	
	fi 
	
	$name/run.sh $todo

}

################函数调用区###################
main $g_paramNum $g_name $g_todo

.configure代码


name="ngnix"

runPath="/home/jczhang/src/nginx/nginx-1.14.2/src"

filePath="/home/jczhang/src/nginx/nginx-1.14.2/src"
filePath+=" "

.template代码

g_todo=$1

cd $g_rootPath/$name

CscopeInit()
{
	if [ "$g_todo" != "update" ]; then
		return
	fi
	ctags -R $filePath
	find $filePath -name "*.[ch]" -o -name "*.cpp" > cscope.files
	cscope -Rbq
}
CscopeInit

vim $runPath
exit 0 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值