You can use Vim's autocomplete feature in insert mode. Just edit the vimrc file and add lines:
iab <key> <expansion> <key> is the letter which should be expanded to <expansion>
Example (add your own words):
iab #i #include (typing "#i" and space will be expanded to "#include") iab #d #define (typing "#d" and space will be expanded to "#define") iab s struct (typing "s" and space will be expanded to "struct") iab t typedef ( typing "t" and space will be expanded to "typedef")
In some cases Vim expands a letter automatically that you don't want. You have to watch out for that.
Similarly, in insert mode you can hit Ctrl+P or Ctrl+N to autocomplete. Ctrl+P searches upward in your text for what your trying to complete to, Ctrl+N searches forward in your text. After exhausting the current buffer, both of these commands will begin searching other open buffers. I'm not sure, but I believe that there is also a search path you can specify in the .vimrc if you wish.
Use a dictionary file:
set complete+=k set dictionary+=/your/dict/file
Ctrl+N, Ctr+P will now search for completions from that dict file.
You can put your common typos as abbreviations, for auto correction:
iab teh the iab seperate separate
> How cut the space from the resulted substitution?
From :help abbreviations: An exception to this is the character <C-]>, which is used to expand an abbreviation without inserting any extra characters.
:ab hh hello "hh<Space>" is expanded to "hello<Space>" "hh<C-]>" is expanded to "hello"
Use getchar() to eat up that space, for example:
iab <t <target name="%"></target><Esc>F%s<c-o>:call getchar()<CR>
Regarding how to eat the last typed character (when it is a space): Use :Iabbr and :Inoreabbr from script#50.
See the SuperTab plugin. It does almost all of this without the need for programming.
To eat the last space, for example, with:
iab did <div id="
In insert mode, type
did then press Ctrl-]
Result: The abbreviation is expanded with no extra characters, and you are still in insert mode and can continue typing.