Temba Bavuma has become the first black African to permanently captain a South Africa side after being appointed their limited-overs skipper.
Batsman Bavuma, 30, will lead the Proteas in the next two Twenty20 World Cups, later this year and in 2022, and the next 50-over World Cup in 2023.
Opener Dean Elgar, 33, has been named Test captain for the next cycle of the World Test Championship.
"This is one of the greatest honours of my life," said Bavuma.
"Captaining the Proteas has been a dream of mine for many years as those closest to me know."
Bavuma and Elgar replace wicketkeeper Quinton de Kock, who had held the T20 and one-day international captaincy roles since last January and was named temporary Test skipper in December.
De Kock had taken over all three roles from Faf du Plessis, who retired from Test cricket last month and said he will now focus on T20s.
Mixed-race players Ashwell Prince, JP Duminy and Justin Ontong have previously captained a South Africa cricket side on a temporary basis. Hashim Amla, the first Asian to play for South Africa, has also captained his country in matches in all three formats.
Prince was the first mixed-race player to captain South Africa when he led them for two Tests in Sri Lanka in 2006, while Graeme Smith was injured.
Bavuma became the first black African to score a Test century for South Africa, against England in Cape Town in 2016.
"The responsibility of captaining one's country is not one I take lightly, and I am looking forward to this new challenge and journey with Dean in the Test cricket format, as well as leading the team to not just one, but three World Cups in the very near future," he added.
Elgar, who has 67 Test caps, previously captained the Test side twice when Du Plessis was unavailable.
"I've always said that to captain your country in any form of the game is the biggest honour that a player can be fortunate to receive," he said.
"To captain my country's Test team, which I believe to be the pinnacle of the game, is the biggest highlight of my career and I'm grateful for the opportunity to represent my country in such an important way."
South Africa are currently ranked sixth in Test cricket and fifth in both ODIs and T20s.