docs:vim:search_and_replace

  • :%s/SEARCH/REPLACEMENT/g
    • % - tells vim to search the entire file
    • g - tells vim to replace all instances on each line, instead of just the first
. any character except new line
\s whitespace character
\S non-whitespace character
\d digit
\D non-digit
\x hex digit
\X non-hex digit
\o octal digit
\O non-octal digit
\h head of word character (a,b,c…z,A,B,C…Z and _)
\H non-head of word character
\p printable character
\P like \p, but excluding digits
\w word character
\W non-word character
\a alphabetic character
\A non-alphabetic character
\l lowercase character
\L non-lowercase character
\u uppercase character
\U non-uppercase character
  • :let @/=''
  • using \n as a replacement will NOT break the lines as expected (\n can be used as the search pattern)
    • instead, type :%s/SEARCH/
    • at this point, press CTRL-V, Enter (you should now see :%s/SEARCH/^M
    • finish your pattern: :%s/SEARCH/^M/g (all SEARCH occurrences will be replaced with newlines, and lines WILL break)
    • tab can also be accomplished the same way, but \t works anyway
    • when using gvim (Windows), CTRL-V is probably mapped to paste from the clipboard; instead, use CTRL-Q the same way

Search results can be replaced with special characters like this:

  • type :%s/SEARCH/
  • press CTRL-V (CTRL-Q on windows); you now have the option to:
    • type the 3 digit decimal value for the character you want
    • type x then the 2 character hex value you want
    • type o then the 3 digit octal value you want
  • full example to replace all occurances of SEARCH with a vertical tab:
    :%s/SEARCH/
    (press CTRL-V or CTRL-Q)
    (press the letter o)
    013/g
  • once the replace is done, you can move the cursor over the character and type 'ga' to see the decimal, hex, and octal values
  • docs/vim/search_and_replace.txt
  • Last modified: 2009/01/22 11:27
  • by billh