Since the 70's, Vi is one of the programmer's best friend. Nevermind you're new to Vi or not, here's a big list of 100 useful commands, organized by topic, which will make your coder life better.

Basics

:e filenameOpen filename for edition
:wSave file
:qExit Vim
:w!Exit Vim without saving

Search

/wordSearch word from top to bottom
?wordSearch word from bottom to top
/jo[ha]nSearch john or joan
/\< theSearch the, theatre or then
/the\>Search the or breathe
/\< the\>Search the
/\< ¦.\>Search all words of 4 letters
/\/Search fred but not alfred or frederick
/fred\|joeSearch fred or joe
/\<\d\d\d\d\>Search exactly 4 digits
/^\n\{3}Find 3 empty lines
:bufdo /searchstr/Search in all open files

Replace

:%s/old/new/gReplace all occurences of old by new in file
:%s/old/new/gwReplace all occurences with confirmation
:2,35s/old/new/gReplace all occurences between lines 2 and 35
:5,$s/old/new/gReplace all occurences from line 5 to EOF
:%s/^/hello/gReplace the begining of each line by hello
:%s/$/Harry/gReplace the end of each line by Harry
:%s/onward/forward/giReplace onward by forward, case unsensitive
:%s/ *$//gDelete all white spaces
:g/string/dDelete all lines containing string
:v/string/dDelete all lines containing which didn’t contain string
:s/Bill/Steve/Replace the first occurence of Bill by Steve in current line
:s/Bill/Steve/gReplace Bill by Steve in current line
:%s/Bill/Steve/gReplace Bill by Steve in all the file
:%s/\r//gDelete DOS carriage returns (^M)
:%s/\r/\r/gTransform DOS carriage returns in returns
:%s#<[^>]\+>##gDelete HTML tags but keeps text
:%s/^\(.*\)\n\1$/\1/Delete lines which appears twice
Ctrl+aIncrement number under the cursor
Ctrl+xDecrement number under cursor
ggVGg?Change text to Rot13

Case

VuLowercase line
VUUppercase line
g~~Invert case
vEUSwitch word to uppercase
vE~Modify word case
ggguGSet all text to lowercase
:set ignorecaseIgnore case in searches
:set smartcaseIgnore case in searches excepted if an uppercase letter is used
:%s/\<./\u&/gSets first letter of each word to uppercase
:%s/\<./\l&/gSets first letter of each word to lowercase
:%s/.*/\u&Sets first letter of each line to uppercase
:%s/.*/\l&Sets first letter of each line to lowercase

Read/Write files

:1,10 w outfileSaves lines 1 to 10 in outfile
:1,10 w >> outfileAppends lines 1 to 10 to outfile
:r infileInsert the content of infile
:23r infileInsert the content of infile under line 23

File explorer

:e .Open integrated file explorer
:SexSplit window and open integrated file explorer
:browse eGraphical file explorer
:lsList buffers
:cd ..Move to parent directory
:argsList files
:args *.phpOpen file list
:grep expression *.phpReturns a list of .php files contening expression
gfOpen file name under cursor

Interact with Unix

:!pwdExecute the pwd unix command, then returns to Vi
!!pwdExecute the pwd unix command and insert output in file
:shTemporary returns to Unix
$exitRetourns to Vi

Alignment

:%!fmtAlign all lines
!}fmtAlign all lines at the current position
5!!fmtAlign the next 5 lines

Tabs

:tabnewCreates a new tab
gtShow next tab
:tabfirstShow first tab
:tablastShow last tab
:tabm n(position)Rearrange tabs
:tabdo %s/foo/bar/gExecute a command in all tabs
:tab ballPuts all open files in tabs

Window spliting

:e filenameEdit filename in current window
:split filenameSplit the window and open filename
ctrl-w up arrowPuts cursor in top window
ctrl-w ctrl-wPuts cursor in next window
ctrl-w_Maximise current window
ctrl-w=Gives the same size to all windows
10 ctrl-w+Add 10 lines to current window
:vsplit fileSplit window vertically
:sview fileSame as :split in readonly mode
:hideClose current window
:­nlyClose all windows, excepted current
:b 2Open #2 in this window

Auto-completion

Ctrl+n Ctrl+p (in insert mode)Complete word
Ctrl+x Ctrl+lComplete line
:set dictionary=dictDefine dict as a dictionnary
Ctrl+x Ctrl+kComplete with dictionnary

Marks

mkMarks current position as k
˜kMoves cursor to mark k
d™kDelete all until mark k

Abbreviations

:ab mail mail@provider.orgDefine mail as abbreviation of mail@provider.org

Text indent

:set autoindentTurn on auto-indent
:set smartindentTurn on intelligent auto-indent
:set shiftwidth=4Defines 4 spaces as indent size
ctrl-t, ctrl-dIndent/un-indent in insert mode
>>Indent
<<Un-indent

Syntax highlighting

:syntax onTurn on syntax highlighting
:syntax offTurn off syntax highlighting
:set syntax=perlForce syntax highlighting

Related Posts

No related posts.
 

79 Comments

  1. YRU2L8
    Posted June 30, 2008 at 10:10 pm | Permalink

    /\/ Search “fred” but not “alfred” or “frederick” — huh?

    Search exactly 4 numbers — digits

  2. Posted June 30, 2008 at 10:20 pm | Permalink

    Thanks for correcting my mistakes!

  3. Sander
    Posted June 30, 2008 at 11:58 pm | Permalink

    Excellent! A very useful list. Thanks a lot.

  4. MarkL
    Posted July 1, 2008 at 12:08 am | Permalink

    I see a typo: Alignement >> Alignment

  5. Posted July 1, 2008 at 12:14 am | Permalink

    Corrected. Thanks, Mark!

  6. Posted July 1, 2008 at 2:39 am | Permalink

    In search…

    /\/ Search “fred” but not “alfred” or “frederick”

    There is no text here to indiciate a search for fred.

    In replace…

    :%s/old/new/gw Replace all occurences with confirmation

    There is no w flag, I believe you mean c. See help :s_flags

    In interact with unix…

    I think CTRL-Z and the fg command work better than :sh and exit. At least they are much easier to type.

    In text indenting…

    << Desindent … I believe “Un-indent” would be a better word. Or in fact, it is not indenting, it is shifting.

    Didn’t check all, but those are what stood out.

    Jon

  7. Posted July 1, 2008 at 6:49 am | Permalink

    Most important command ever:

    :q!
    cd /usr/ports/editors/nano
    make install

    I really don’t understand why people still use VI. At least Emacs has its own operating system :P

  8. Russia
    Posted July 1, 2008 at 7:41 am | Permalink

    Stupid american

  9. Posted July 1, 2008 at 8:19 am | Permalink

    @Jon Keating: Thanks :)
    @Russia: I may be stupid, but a sure thing is that I’m not American: I live in Belgium and come from France ;)

  10. Naveed
    Posted July 1, 2008 at 9:47 am | Permalink

    Great list. Here is one of my favorite tricks:

    map j
    map k
    map gt
    map gT

    This will let you switch between tabs and windows by using a combination of the control key and h,j,k, and l. For example, to move to the top window, you can press ctrl-k. To move to the tab on the right, you can press ctrl-l.

  11. Naveed
    Posted July 1, 2008 at 9:49 am | Permalink

    Ignore my previous comment, since it seems like the comment system mangled up my text because it had less-than and greater-than characters in it.

  12. Posted July 1, 2008 at 9:59 am | Permalink

    @Naveed: Yeah, sadly Wordpress comments system always break code and/or commands. I didn’t knew the tips you submitted, so I’m going to check it out.

  13. Anon
    Posted July 1, 2008 at 10:51 am | Permalink

    Interesting list but how can you not mention the awesome * or some of the tips on http://www.vim.org/tips/tip.php?tip_id=305 ? : )

  14. Posted July 1, 2008 at 11:11 am | Permalink

    @Anon: The vim.org tips are indeed very helpful, but for this list, I didn’t wanted to re-use 75% of these tips. Though, I should have gave the link just as you did. Thanks!

  15. Posted July 1, 2008 at 12:44 pm | Permalink

    Here’s the list I created when learning vim:

    http://www.pixelbeat.org/vim.tips.html

  16. Posted July 1, 2008 at 12:49 pm | Permalink

    Nice list Pádraig, thanks for sharing!

  17. Aaron
    Posted July 1, 2008 at 3:53 pm | Permalink

    @Bill – Nano over VIM?

    I love VIM, mostly because of the syntax highlighting on the myriad of different file types as they are being edited, I can quickly spot any syntax typos I may have fat-fingered in.

    Thanks for sharing this. =]

  18. dummy
    Posted July 1, 2008 at 4:12 pm | Permalink

    I liked the :Sex part. You’ll want if you’re trying to peek at some other files.

  19. Posted July 1, 2008 at 4:16 pm | Permalink

    s/Delete \zsall\ze white spaces/trailing/

    ;-)

  20. carl
    Posted July 1, 2008 at 4:36 pm | Permalink

    what no mention of dot? (repeats the last edit you made)
    It’s actually one of my favourite commands.

  21. Posted July 1, 2008 at 4:37 pm | Permalink

    I love it. > :Sex Split window and open integrated file explorer

  22. Posted July 1, 2008 at 4:45 pm | Permalink

    @carl: I didn’t know that one! thanks for sharing.

  23. stephen
    Posted July 1, 2008 at 5:10 pm | Permalink

    Really love the t + char pattern

    For instance
    “hi I am foo line” with the cursor on the first “, c+t+” gives you
    “” and leaves you in insert mode between the “”

  24. Posted July 1, 2008 at 5:56 pm | Permalink

    I would probably add next dozen of my favorites, but at least some esp. useful for programmers:
    % – jump to matching parenthesis
    =% – indent the code between parenthesis
    [[ – jump to function start
    [{ – jump to block start
    * – search the word under cursor
    :new abc.txt – edit abc.txt in new window

  25. Posted July 1, 2008 at 6:15 pm | Permalink

    @Jan: Great ones! I should think about creating a second list with all commands submitted by readers :)

  26. Posted July 1, 2008 at 6:21 pm | Permalink

    I have some more things that you might find useful on my VIM site.

  27. Posted July 1, 2008 at 7:24 pm | Permalink

    And what does:

    :emacs

    do? ;)

  28. Posted July 1, 2008 at 7:40 pm | Permalink

    @Raffy: Excellent website! I haven’t the time to check it all, but I really liked what I saw.

  29. Reid
    Posted July 1, 2008 at 8:51 pm | Permalink

    ggguG is wrong, that makes the file lowercase. gggUG makes the file uppercase. However, why you should know this command combo over the separate commands gg, gu/U, and G, I don’t know.

  30. Posted July 1, 2008 at 9:04 pm | Permalink

    Great list. Thanks. [:wq]

  31. Posted July 1, 2008 at 9:05 pm | Permalink

    @Reid: You’re right. Sorry for the mistake! I just corrected it, thanks for telling me.

  32. Alex
    Posted July 2, 2008 at 3:54 am | Permalink

    gg=G — indent all lines in the file
    shift-v curlybracket control-v shift i # escape — adds #’s in front of all of the lines in that chunk of code
    let @a=@* — copies the contents of register a to the systemwide paste bin
    bufdo %s/something/somethingelse/g — changes “something” to “somethingelse” in all the open buffers
    :tabnew — opens a new tab

    – Vim rocks.

  33. bobbydigital
    Posted July 2, 2008 at 7:14 am | Permalink

    I find :Hex more useful than :Sex, even though I like sex :p

  34. fiedor
    Posted July 2, 2008 at 10:33 am | Permalink

    :%s/\r/\r/g Transform DOS carriage returns in returns

    doesn’t miss anything here? It simply replaces all x0d with x0d …

  35. Posted July 3, 2008 at 8:49 am | Permalink

    Excellent list.. I have used vi.. but never realised it had so many commands. :)

  36. Posted July 3, 2008 at 9:13 am | Permalink

    Thanks, shoban. Vi have much more commands than only theses ones :)

  37. Bernhard
    Posted July 3, 2008 at 4:27 pm | Permalink

    The pattern to get rid of d part of DOS line-feeds in an entire document is
    :%s/^M//g
    Where you must input the “^M” pattern by holding down Ctrl while typing “vm”

    If you often exchange text files with Macs then this replacement comes in handy
    :%s/^M/\r/g

  38. Posted July 3, 2008 at 4:50 pm | Permalink

    @Bernhard: Thank you for theses useful contributions!

  39. Posted July 5, 2008 at 9:22 pm | Permalink

    Very nice

    I would add “set wrap” and “set nowrap” commands. With those commands you can enable and disable text wrapping on vi editor

    Great work man

  40. Posted July 5, 2008 at 10:08 pm | Permalink

    and what about copy/paste?

  41. Posted July 5, 2008 at 10:11 pm | Permalink

    Kiril, I’m glad you liked the list! And thanks for submiting more commands!

  42. Posted July 6, 2008 at 12:22 am | Permalink

    @barf: You’re right, I should have inclued at least basic copy/paste functions (y and p)

  43. Posted July 15, 2008 at 2:27 pm | Permalink

    Hi,

    That is really a very useful list.
    Thanks for the list.

  44. L'ineptocide
    Posted July 30, 2008 at 9:26 am | Permalink

    Thanks, that’s pretty usefull.

    But actually:

    ctrl-w_ maximize vertically and
    ctrl-w| maximize horizontally.

  45. Apurv
    Posted August 1, 2008 at 8:13 am | Permalink

    Wonderful list I must say specially the Explorer commands.
    I have been using vi for a long time but didn’t know.
    Thanks a lot.

  46. Posted August 13, 2008 at 4:09 pm | Permalink

    I have posted a customize vim guide which can be found here Customizing Vim . It goes the next step beyond usage, which is customizing VIM for a better experience.

  47. Posted August 26, 2008 at 5:31 pm | Permalink

    vim is the best editor I’ve ever used. Thanks for this really usefull list.

  48. Posted August 30, 2008 at 7:34 am | Permalink

    i can’t stand vi.. but one of the servers i manage doesn’t have anything else on it so it’s all i can use. Thanks for the list, would you mind if i re-blogged this over at my blog? (linking to the source natural)

  49. Posted August 30, 2008 at 8:34 am | Permalink

    @Jamie: No problem!

  50. sudha
    Posted September 1, 2008 at 8:16 am | Permalink

    Great BLog. I am taking a print of this. Thanks 4 sharing it on web.

  51. Posted September 5, 2008 at 8:16 am | Permalink

    Very useful. It will come handy when searching for Commands

  52. Posted October 8, 2008 at 8:41 pm | Permalink

    Thanks for my new bookmark!

    One of the best commands is certainly ggVGg? ;)

  53. debil
    Posted November 2, 2008 at 11:19 am | Permalink

    Good list. BTW, you can rot13 whole buffer also with “ggg?G”. No need for V, one step less :)

  54. debil
    Posted November 2, 2008 at 11:55 am | Permalink

    Digraphs are a great feature in Vim. To type a special character, hit ctrl-k in insert mode and type two-character code. Check out the list of availale characters with :digraphs.

  55. Posted December 23, 2008 at 11:02 am | Permalink

    Thank you very much for sharing this information. very interesting article for programmers specially for beginners.

  56. Posted January 5, 2009 at 12:34 pm | Permalink

    This was very useful. I searched for command to convert text to lower case and I found it here. You can also set all text to the upper case with gggUG.
    Cheers!

  57. Posted January 23, 2009 at 2:04 am | Permalink

    Great list, gotta bookmark this. I often forget some of these commands

  58. Posted January 28, 2009 at 3:13 pm | Permalink

    Very helpful. Thanks!

  59. Posted February 1, 2009 at 3:04 pm | Permalink

    Let me be the next to say: this is a very nice list. I love vi (and vim, too) and there were several tricks that I didn’t know about on the list.

    Thanks for posting.

    (I came in via Hacker News)

  60. alexandru
    Posted February 1, 2009 at 6:08 pm | Permalink

    every once in a while I see a cheat sheet of vi(m) commands. unfortunately most of them forget to teach the basics: motion.

    for example:
    ggguG is not a random key combination (as begginers tend to believe), its gg (goes to begin of file), gu changes to lowercase, G goes to end of file.

    so long,
    alexandru

  61. Basque
    Posted February 1, 2009 at 11:15 pm | Permalink

    I’m almost newbie in the church of Vim and I’m enjoining it by learning new things every day.

    Nice post. Thanks.

  62. Posted February 1, 2009 at 11:41 pm | Permalink

    Thank you so much for this command list. It’s very helpful!

    Regards,
    Pascal

  63. Posted February 6, 2009 at 8:56 am | Permalink

    This will let you switch between tabs and windows by using a combination of the control key and h,j,k, and l. For example, to move to the top window, you can press ctrl-k. To move to the tab on the right, you can press ctrl-l.

  64. Kedar Mhaswade
    Posted February 10, 2009 at 8:02 pm | Permalink

    Since the 70’s, Vi is one of the programmer’s best friends, not friend.

  65. Posted February 14, 2009 at 11:54 am | Permalink

    Hmmm…. I’m learning these tags and the whole article as well as the comments associated with it were very informative. Thanks!

  66. grgfg
    Posted February 19, 2009 at 4:54 pm | Permalink

    Vim is sh it.
    How many command u MUST know for ONLY editing?
    Commands like: “%$#%$#% 4354 543543543543 54rt5^%$^%$^$ ^%$” for change some words?!
    BULLSHIT!

  67. Posted February 28, 2009 at 3:02 pm | Permalink

    I’m almost newbie in the church of Vim and I’m enjoining it by learning new things every day.

  68. Posted March 2, 2009 at 11:21 pm | Permalink

    I graduated with a B.S degree in computer science. Used to do all my programming from telnet at home instead of sitting all day sweating it in the labs. These commands are all very useful and eliminate the need for a GUI interface. Thanks for the great list.

  69. Posted March 5, 2009 at 8:51 am | Permalink

    Great list. i print it. Really useful for programmers.
    Thanks for sharing this information

  70. Danilo De Martin
    Posted March 8, 2009 at 11:50 am | Permalink

    :%s/old/new/gw Replace all occurences with confirmation

    I think the right way is :%s/old/new/gc

    Great list. Thanks Jean-Baptiste.

    Danilo De Martin

  71. Maryam
    Posted December 29, 2009 at 7:48 pm | Permalink

    Hi. your blog was very useful to me. I’ve just started to learn linux and Vi. I found it much enjoyable and interesting. Your list can help me so much.

    truly yours,
    Thank you.

  72. valtert
    Posted February 21, 2010 at 9:37 pm | Permalink

    /\cstring -> find SRING or string (case insensitive)

  73. Josay
    Posted March 5, 2010 at 1:46 pm | Permalink

    “:w! Exit Vim without saving”

    Isn’t the ‘!’ used to force the saving?
    Mixed up with “:q!”

  74. Nick
    Posted May 3, 2010 at 3:20 pm | Permalink

    There would be nice if your website had a PRINT button.
    nice list

    Thank you

  75. santosh mishra
    Posted May 5, 2010 at 4:52 am | Permalink

    It is really good collection ….

    but i want to know that where i can open a new tab in a file with diffrent file location ?

  76. Posted May 26, 2010 at 3:17 am | Permalink

    You need to add the shortcuts for how to move to the next file once you have the file browser open in the CLI using ‘:e .’ command. It’s impossible for us to know

  77. ChrisR
    Posted May 28, 2010 at 10:14 am | Permalink

    I didn’t see my all-time favorite command–the one that keeps me from moving to any other editor, the period “.” command. It redoes the last command. I use it all the time.

  78. Arun
    Posted May 31, 2010 at 3:22 am | Permalink

    Hi..is there any command for “searching a string in between two line numbers”.
    Say, I want to search a string “develop” in between line numbers 10 and 100..Please help..

    • steve
      Posted June 7, 2010 at 2:56 pm | Permalink

      @Arun,

      put these lines in your .vimrc

      set incsearch ” find as you type search
      set hlsearch ” highlight search terms
      set ignorecase ” case insensitive search
      set number ” turns on line numbering

      then I’d simply10G (Goto line 10) hit /string and it will jump to the next occurrence of string (with all others highlighted) you can use n to jump to the (n)ext occurrence until the line numbers show you’re at or past line 100.

      Then :noh removes the highlighting.

29 Trackbacks

  1. [...] siguiente es una gran lista de comandos VIM que debes conocer, ya seas programador u administrador. Cada comando está [...]

  2. By Modifier les couleurs du thème OpenBook on July 1, 2008 at 9:22 am

    [...] peu, Vi(m) est un éditeur de texte très puissant. Je vous invite d’ailleurs à aller lire cet article qui vous donnera un bon aperçu des possibilités offertes par [...]

  3. [...] 详细内容 [...]

  4. [...] 100 vim commands every programmer should know: Ahh vi Editor of champions insane Added on 07/02/2008 at 01:35PM [...]

  5. By links for 2008-07-03 « My Weblog on July 3, 2008 at 6:30 am

    [...] 100 Vim commands every programmer should know (tags: linux) [...]

  6. [...] Of course, you can manually edit OpenBook files to modify the color values, but having to change each value by hand is in my opinion, very boring. Happilly, Vi is here to help. For those who doesn’t know, Vi (or Vim) is a powerful modal text editor. If you want to learn more aboout Vim, I recently posted an article about 100 very usefull Vim commands. [...]

  7. By links for 2008-07-03 « that dismal science on July 3, 2008 at 5:50 pm

    [...] 100 Vim commands every programmer should know (tags: 2008 cheatsheet code vim vi unix development geek guide hacks programming reference resources technology text tools top100 toread tricks tutorial) [...]

  8. [...] 100 Vim commands every programmer should know Love My Vim. (tags: vim reference cheatsheet cli command editing editor vi guide geek howto shortcuts tutorial tricks useful commands) [...]

  9. [...] posibilities, super fast editing and looking cool as hell when other people see you work. Here are 100 Vim commands [every programmer] should [...]

  10. [...] 100 Vim commands every programmer should know – Since the 70’s, Vi is one of the programmer’s best friend. Nevermind you’re new to Vi or not, here’s a big list of 100 useful commands, organized by topic, which will make your coder life better. [...]

  11. [...] Since the 70’s, Vi is one of the programmer’s best friend. Nevermind you’re new to Vi or not, here’s a big list of 100 useful commands, organized by topic, which will make your coder life better. Read more at http://www.catswhocode.com/blog [...]

  12. [...] The best VIM command reference ever Cats who code have published the ultimate and probably best ever list of vim commands. Go and get it here. [...]

  13. [...] ну и наконец: 100 vim commands every programmer should know [...]

  14. [...] 100 Vim commands every programmer should know [...]

  15. [...] This is a nice reference. [...]

  16. [...] Para quem usa muito o VIM, 100 comando úteis estão nesse site. [...]

  17. By [OT] 100 przydatnych komend vim-a | hilpers on January 18, 2009 at 5:25 pm

    [...] list

  18. By » [Dica] VI - 100 Comandos on January 25, 2009 at 8:09 pm

    [...] Para quem usa muito o VIM, 100 comando úteis estão nesse site. [...]

  19. By links for 2009-02-02 « jasonmcdermott.net on February 2, 2009 at 2:02 pm

    [...] 100 Vim commands every programmer should know here’s a big list of 100 useful commands, organized by topic, which will make your coder life better. (tags: code programming) [...]

  20. [...] 来源:http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know [...]

  21. By 10 code snippets to interact with Twitter « Doeasyway on September 24, 2009 at 9:16 am

    [...] The Vim editor is one of the most powerful and complete text editor available. This command, allowing you to update your Twitter status, is just one more proof. Oh and don’t forget to check out our list of 100 Vim commands that every developer should know [...]

  22. By vim or not vim? that’s the question. » all-IT on September 30, 2009 at 8:09 am

    [...] habe gerade einen Artikel über die 100 vim Befehle gelesen, die jeder Programmierer kennen sollte. Den vim (Vi IMproved) habe ich hier im Blog schon [...]

  23. [...] The Vim editor is one of the most powerful and complete text editor available. This command, allowing you to update your Twitter status, is just one more proof. Oh and don’t forget to check out our list of 100 Vim commands that every developer should know [...]

  24. [...] module of the same name, “Vimcolor” highlights your code in many different formats. VIM is a common programmers text editor for (usually) unix based systems. Out of the box VIM can color [...]

  25. [...] The Vim editor is one of the most powerful and complete text editor available. This command, allowing you to update your Twitter status, is just one more proof. Oh and don’t forget to check out our list of 100 Vim commands that every developer should know [...]

  26. [...] "100 Vim commands every programmer should know" http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know [...]

  27. [...] 100 Vim commands every programmer should know [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting

  • Smashing Network
  • Hosted by VPS.net and Akamai CDN
WordPress Appliance - Powered by TurnKey Linux