전라남도 보성 출신으로, 호는 오봉(晤峰)이다. 보성 중·고등학교와 고려대학교 경제학과를 졸업하였다. 그 후 민주국민당에 입당하였고, 한국전쟁 중 1952년 부산 피난시절 우익의 대부인 부통령 인촌 김성수의 개인 비서로 정계에 입문하여 군사정권 시절 야당에서 활동하였다.
1963년 6대 국회에서 민정당 소속 전국구 비례대표로 출마하여 당선되었고, 이후 선전국장과 대변인을 지냈다. 7대부터 9대까지 전남 보성의 지역구 국회의원이 되었고, 이후 12대에 서울 강남 지역구와 15대는 전국구 국회의원을 끝으로 의정활동을 마쳤다.
1960년대 김영삼이 신민당 원내총무가 되자 그 밑에서 신민당 대변인을 지냈고, 신민당 정책심의위원회 의장과 부총재를 지냈다. 1980년대, 5공화국을 출범시킨 신군부에 의해 정치활동이 금지되자 그는 민주화추진협의회 운영위원, 민주인권연구회 회장 등으로 활동하고, 야당의 통합을 위해 야당통합추진위원회를 조직하여 추진위원회 위원장 등으로 활동하며 민주화 운동에 기여했다. 그 뒤 민주화추진협의회 상임운영위원을 지냈으며 평화민주당, 민주당에 있다가 민주당의 부총재를 지내기도 했다.
김영삼의 3당 합당에 반대하여 평화민주당과 민주당 등에서 활동했으나, 1995년 새정치국민회의의 창당에 참여하지 않고 민주당에 남아 있다가, 1997년 대통령 선거 직전 민주당 대통령 후보로 추대된 조순과 신한국당의 후보였던 이회창의 단일화 협상으로 한나라당이 탄생하면서 한나라당으로 합류했다.
국회 의정활동 기간 중 국회 재무위원회에서만 활동하며 다른 곳에서는 활동하지 않았고, 12대 국회 당시, 야당의 예산안 투쟁을 주도하였다. 현역 국회의원에서 물러난 뒤에는 한나라당 상임고문을 맡았으며, 1999년에는 ‘자랑스런 고대인상’을 수상하였다. 2008년 12월 18일 숙환으로 별세했다.