Help? Mentally abusive boyfriend(LONG)

So I've been with my boyfriend for almost 3 years now. Over all of those 3 years, we had a baby. We had our son in September of last year. Now I don't know why I continued to stay with him but I'm a sucker for him. Well now I'm starting to get really sick of him. Since my son was born, he hasn't helped me one bit. Yes he buys the baby whatever he needs, whenever he needs it. I want to do that. I want to give my son everything I can. He can't be alone with our son for more than an hour. He will go insane. I don't allow him to be with him for more than 30 minutes so I don't have to hear his mouth. I'm ready to grab my balls and tell him to leave. I've been ready but I'm ready now, more than ever. He quit his job so he could smoke weed. He doesn't help me with my son besides buy him stuff which I do consider helping though. I don't care to take care of my baby because he's my baby, ya know? He yells and calls me names constantly. I didnt antagonis him at first but I stand up for myself now because I'm completely fed up. He has punched holes in my walls from getting mad at me or me wanting him to take a turn with the baby. He goes and does stuff and leaves me at home just to have an excuse to not watch his son. I just don't want to hurt his feelings. I want to leave. Not for me but for my son. He is mentally abusing. He has hit me before multiple times but not in a really mean way. I sound terrible for trying to stick up for him... I just want to leave him. I'm tired of being unhappy. I'm tired of him not helping. I feel like I got robbed of my son being little because I was always stressed and couldn't enjoy him being little. How do I go about getting full custody of my son? I don't want to take his baby from him but I also don't want my baby to stay with him overnight. He would be going to his Moms house and she is terrible. She's the type of woman who drinks wine, smokes a cigarette all while breastfeeding her baby (true story). I don't want him to keep him all night because of that and because I have really bad separation anxiety. I haven't been away from him in almost 6 months for less than 50 minutes. I'd go insane. I know if I tell him to leave, he'd threaten to take my baby. He'd threaten to get him taken away. He would do everything he could to get me to stay with him. I just want it to be done and over with. We argue every single day. I love him, I'll always love him but I don't want my son to grow up seeing us fight and argue to think it's okay. I'd rather us be apart and know both of us as being happy. Please someone help me. I have the money right now to do everything I need to get him gone. If you have any insight, please help me. Thanks in advance