Do you speak vi ? ================= Vi's grammar is its greatest strength. The grammar is what makes those awkwards commands "logical". Let's start with a simple example: This is a wrong elephant line. "elephant" has nothing to do here. We should delete this word. so bring your cursor at the beginning of the word (on the first 'e') and press "dw". The word is now deleted. What does this command mean though? You probably guessed: "dw" stands for (d)elete (w)ord. And all commands in vi follow the same pattern: [adjective] That's wah I call a "vi sentence". This syntax applies to _ALL_ vi commands in normal mode. No exception. What about those verbs/adjective/nouns now. Here is a (non-exhaustive) list: verbs ----- * d - delete * c - change * v - visualize (select) * r - replace * y - yank adjectives ---------- * i - inner * a - around nouns ----- * w - word (text, separated by special chars like space, dash, dot, comma, ...) * W - WORD (text, separated by space or tabulation ONLY) * _ - lines ('l' was already taken, unfortunately) * { - paragraphs * " - text in double quotes There is more, obviously. But let's play around with those at first, and find the meaning of these normal-mode commands: (c)hange (i)nner (w)ord this will delete the inner "word" your cursor is on, and enter in insert mode so you can change it. (v)isualize (a)round (")quotes this will select the text between the ", AND the quotes themselves (inner would not have selected them). (d)elete (_)line This would delete the entire line. Something worth noticing about this, is that Bill Joy decided to alias "repeating" verbs perform the action linewise, because developper mostly act on lines (copy/pasting bunch of code). So this is why "dd" will also delete the line, "yy" yank the whole line, and so on. I hope this will help you understand better how vi works. By understanding this, you'll be able to perform action, and create commands you've never used before in an easy way. :wq