Many of the events of the novel are narrated twice; first by the 'editor', who gives his account of the facts as he understands them to be, and then in the words of the 'sinner' himself.
The 'Editor's Narrative' starts in 1687 with the marriage of Rabina Orde to the much older George Colwan, Laird of Dalcastle. Rabina despises her new husband because he falls short of her extreme religious beliefs, his love of dancing and penchant for drinking alcohol. She initially flees him but her father forces her back, and they live separately in the one house. Rabina gives birth to two sons. The first, George, is indisputably the son of the Laird, but it is strongly implied – though never confirmed – that her second son, Robert, was fathered by the Reverend Wringhim, Rabina’s spiritual adviser and close confidante.
George, raised by the Laird, becomes a popular young man who enjoys sport and the company of his friends. Robert, educated by his mother and adoptive father Wringhim, is brought up to follow Wringhim’s radical antinomian sect of Calvinism, which holds that only certain elect people are predestined to be saved by God. These chosen few will have a heavenly reward regardless of how their lives are lived.
The two brothers meet, as young men, in Edinburgh where Robert starts following George through the town, mocking and provoking him and disrupting his life. He appears to have the ability of appearing wherever George is. When on a hill-top, George sees a vision of his brother in the sky and turns to find him behind him, preparing to throw him off a cliff. Robert rejects any friendly or placatory advances from his brother.
Finally, George is murdered by being stabbed in the back, apparently during a duel with one of his drinking acquaintances. The only witnesses to the murder were a prostitute and her despicable client, who claim that the culprit was Robert, aided by what appears to be the double of George’s friend. Before Robert can be arrested, he disappears.
The second part of the novel consists of Robert's account of his life. It purports to be a document, part-handwritten and part-printed, which was found after his death. It recounts his childhood, under the influence of the Rev Wringhim, and goes on to explain how he becomes in thrall to an enigmatic companion who says his name is Gil-Martin. This stranger, who could be seen to be the Devil, appears after Wringhim has declared Robert to be a member of 'the elect' and so predestined to eternal salvation. Gil-Martin, who is able to transform his appearance at will, soon directs all of Robert’s pre-existing tendencies and beliefs to evil purposes, convincing him that it is his mission to “cut sinners off with the sword”, and that murder can be the correct course of action. From Gil-Martin's boasting of the number of his adherents and size of his dominions, Robert falls into the delusion that he is Peter the Great of Russia, who visited England about that time.
The confession traces Robert's gradual decline into despair and madness, as his doubts about the righteousness of his cause are counteracted by Gil-Martin’s increasing domination over his life. Finally, Robert loses control over his own identity and even loses track of time. During these lost weeks and months, it is suggested that Gil-Martin assumes Robert’s appearance in order to commit further crimes. However, there are also suggestions in the text, that 'Gil-Martin' is a figment of Robert's imagination, and is simply an aspect of his own personality: as, for example when 'the sinner' writes, 'I feel as if I were the same person' (as Gil-Martin).
Robert flees, but is pursued and tormented by devils and can find refuge only as a shepherd. Finally he hangs himself with a grass rope – in which it is suggested that he is aided by devils.
The novel concludes with a return to the 'Editor's Narrative' which explains how the sinner's memoir was discovered in his grave. Hogg appears as himself in this section, expressing scorn of the project to open the grave.

Question: Who narrates the story?
Answer: The editor and the "sinner"