There's no denying that vi has a great set of keybindings. For pure editing rather than writing I'll often use Evil mode - an extensible vi layer for Emacs (See below for installation). Vi key combinations are often easier on the fingers: hitting **dd** to kill a line is easier than **C-S-Backspace** any day. I also find navigating with **hjkl** preferable to **C-p**, **C-f** and so on.
That got me thinking. What is it about the vi commands that make them so good for editing? What's more, as I edit in a different way using vi, can any of those methods make my Emacs use more efficient?
I took a break a moment ago to reflect on what I'd just written and came to the conclusion that I really am as boring as my wife keeps telling me. But what the heck. I find it fun, and the fact that you're still reading shows that you think this is interesting too.
So here goes.
One vi feature I use a lot is **f .** to find the end of a sentence. Now I know that you can jump to the end of sentence using **M-e**, but this only works if there are two spaces after the full stop, and fewer and texts follow this convention nowadays. You can replicate this in Emacs using **C-s .** The thing is, I never thought of doing that until I stopped to think about my vi habits. That led me to using **M-z .** to delete to the end of the sentence (this is similar to **df .** in vi).
[[Searching|I've written elsewhere about using C-s more often]]. The fastest way I know to jump to a word I can see on the page is to **C-s (word)**.
Bearing that in mind, there's a nice trick in vi where you **c/pattern** to clear up to a pattern. So if I wanted to clear all the words from _here_ to this _34_ I'd hit **c/34** Thinking about that has led me to doing the following in Emacs
**C-Space C-s 34 Enter C-w**
In other words
**C-Space** to set the mark; **C-s 34** to jump to 34 and then **C-w** to clear. More keystrokes, true, but you're not constantly shifting between modes.
There are advantages to modes, of course. I love the fact that **\`\`** jumps back to the last edit in vi. You can partially replicate this in Emacs using **C-Space C-Space** to push a point to the mark ring, and then you can jump back using **C-u C-Space**. It's not the same, but it will do.
Putting
```
(setq set-mark-command-repeat-pop 't)
```
in your .emacs file allows you to just keep hitting `C-Space` after that initial `C-u C-Space`. The mark ring is set to 16 by default. With this setting you can go round and round your last 16 marks as many times as you care to hit `C-Space`
# Installing Evil
You can install Evil using the package manager. Placing the following in your .emacs file enables it by default, and replicates visual-line-mode type navigation.
```lisp
(require 'evil)
(evil-mode 1)
(define-key evil-normal-state-map (kbd "<remap> <evil-next-line>") 'evil-next-visual-line)
(define-key evil-normal-state-map (kbd "<remap> <evil-previous-line>") 'evil-previous-visual-line)
(setq-default evil-cross-lines t)
```