본관은 남양(南陽). 1918년 12월 3일 전라북도(현, 전북특별자치도) 순창에서 출생했다. 본적은 전북 순창군 복흥면 어은리이다. 부인 백수임(白秀任)과의 사이에 1남4녀를 두었다. 5·6·8·13·14대 국회의원을 역임했다.
고창고등보통학교를 졸업하고 1943년일본 도호쿠대학교(東北大學校) 법문학부를 졸업했다. 1943년 동아연맹 사건으로 일본 히로시마(慶島) 형무소에서 2년간 복역 후 1945년 출옥했다.
1948년 육군 법무관(중위)으로 임관하였으며, 1950년 육군본부 법무감실 법무차감(중령)을 역임하였다. 1952년 군법무관 전형시험에 합격(대령)하여 육군본부 병무차감을 역임하였고, 이듬해에는 육군대학교를 졸업했다.
1954년 서울에서 변호사 개업을 했으며, 이듬해 숙명여대와 건국대 상법 강사를 역임했다. 재야법조인으로서 1955년 민의원 국방위원회 전문위원을 역임하면서 정치에 입문하여 1960년 전북 순창에서 민주당 소속으로 제5대 민의원에 당선되었다.
민주당 신파의 소장파 의원이었으며, 1965년 제6대 민의원 서대문 을구 보궐선거에서 민중당으로 당선되었다. 1970년에는 신진자동차 법률고문을 역임했다. 1971년 신민당 소속으로 성동을지역에서 제8대 국회의원에 당선되었다. 1971년부터 1973년까지 신민당 정무위원을 역임했고, 1979년에도 신민당 정무위원을 지냈다. 유신에 반대하여 보안사에 구금되었다.
1984년 민주화추진협의회(민추협) 상임운영위원회 위원을 지내다가 1985년 부의장에 선임되었다. 그 뒤 통일민주당 정무위원에 선임되었으며, 동당의 헌법개정심의위원으로 전문과 사법부편을 기초했다.
1988년 김대중(金大中)이 이끄는 평화민주당 소속으로 전북 임실 · 순창 지역에서 13대 국회의원에 당선되었다. 1990년 12월부터 1991년 4월까지 평민당 원내부총재를 역임했다. 이듬해 4월부터 9월까지는 신민주연합당(약칭 신민당) 국회의원으로 당무위원과 전당대회 의장 등을 역임하였고, 1991년 9월부터 1992월 5월까지 민주당국회의원을 지냈다.
1991년 11월부터 1992년까지 당무위원을 역임하였고, 1992년 5월에는 민주당 소속으로 임실순창 지역에서 제14대 국회의원에 당선(6선)되었다. 1992년 6부터 1993년 3월까지 민주당 당무위원을 역임하였고, 국회 재무위원이었다. 1993년 3월 민주당 당무위원에 선임되었고, 9월에는 민주당 상임고문이 되었다. 같은 해 11월에는 국회 예산결산특별위원회 위원을 지냈고, 1994년 1월 민주당우루과이라운드대책위원회 위원장을 역임했다. 1994년 6월에는 제14대 국회 부의장에 선출되었고, 국회 법제사법위원회 위원을 지냈다. 이듬해 8월 민주당 공동대표 겸 당무위원에 선임되었다. 1995년에 건국훈장 애족장을 받았다. 1999년 2월 10일 별세했다.