Another 17 Vim Tips

- <Ctrl>-k + e + ! – Write ‘è’ character.
- <Ctrl>-k + e + ‘ – Write ‘é’ character.
- !!date – Insert date in current line.
- g, / g; – Jump back/forward to the locations that have been edited.
- zf – Fold selected text.
- zfa} – Fold the function enclosing the cursor.
- zR / zM – If foldmethod is set, open/close all folds.
- <Ctrl>-w + (-/+) – In splitted views, reduce/increase current zone height.
- <Ctrl>-w + (</>) – In splitted views, reduce/increase current zone width.
- :vimgrep /pattern/ files – Search for pattern in the provided list of files.
- :cn and :cN to jump between vimgrep results.
- :clist to display all vimgrep result and :cc number to jump to a specific one.
- :%s/\<and\>/or/g – Replace all occurences of “and” with “or”, leaving words like “demand” unchanged.
- :%s/foo/bar/gi – Replace case insensitively.
- * / # – Search for the next/previous occurence of the word under the cursor.
- /\cfoo\Cbar/ – Matches “foobar”, “Foobar” and “FOObar”.
- /\([a-z]\)\([a-z]\)\2\1/ – Matches “abba” and “deed”.
17 Vim Tips

- <Ctrl>-o – Switch from insert mode to command mode for one single command.
- vim +linenumber file – Open file at line number.
- vim +/pattern file – Open file at first occurence of pattern.
- :next files – Open a list of files, each in a new buffer.
- :up[date] - Save a modified file.
- “byy + “bp – Copy a line inside named buffer “b” and paste it.
- <Ctrl>-] – Follow green links in documentation pages.
- <Ctrl>-t – Go back to the previous documentation page.
- >ap – Indent whole paragraph.
- 10dd + 2. – Delete 10 lines, repeat twice (delete 20 lines more).
- VU – Make the whole line uppercase.
- V10j + : + !sort – sort alphabetically next 10 lines.
- :!uname -a – Display system information.
- :! wc % – Display information about current file.
- :r!uname -a – Insert system information into the next line.
- gg=G – Reformat whole file.
- <Ctrl>-n – Start autocompletion.
Sed by examples, Part 2

sed (stream editor) is a Unix utility which (a) parses text files and (b) implements a programming language which can apply textual transformations to such files.
It reads input files line by line (sequentially), applying the operation which has been specified via the command line (or a sed script), and then outputs the line.
Substitution
-
Substitute, for every line, the first occurence of foo (if any) with spam:
# test.txt foo bar spam foo spam foo bar egg sausage foo spam egg spam spam spamsed -e 's/foo/spam/' test.txt
-
Substitute every occurence of foo with spam:
sed -e 's/foo/spam/g' test.txt
-
Substitute every occurence of foo with spam in the first two lines:
sed -e '1,2s/foo/spam/g' test.txt
-
Substitute every occurence of foo with spam in every line that starts with sausage and ends with egg:
sed -e '/^sausage.*egg$/s/foo/spam/g' test.txt
-
Substitute paths:
sed -e 's|/usr/bin/|/usr/local/bin|g' script.sh
-
Remove html tags:
<html> <body> Hello World! </body> </html>
sed -e 's/<[^>]*>//g' hello.html
Advanced substitution
-
Append (that’s what she said) to every line ( & represents what matches):
sed -e "s/^.*$/& (that's what she said)/g" test.txt
-
Append lol, rofl and lmao to the first three words of every line:
sed -e 's/\(^[^ ]*\) \([^ ]*\) \([^ ]*\)/\1lol \2rofl \3lmao/' test.txt
Multiple Commands
-
Print a file alternating row numbers:
sed -n -e '=;p' test.txt
-
Print some information about your cpu first core:
# script.sed 1,/^$/{ /model name/p /flags/p /bogomips/p }
sed -n -f script.sed /proc/cpuinfo
-
Add a line before/after each line or replace line:
# script.sed i\ This line will be inserted before each line# script.sed a\ This line will be inserted after each line# script.sed c\ This line will be inserted in each line
sed -f script.sed test.txt
Sed by examples

sed (stream editor) is a Unix utility which (a) parses text files and (b) implements a programming language which can apply textual transformations to such files.
It reads input files line by line (sequentially), applying the operation which has been specified via the command line (or a sed script), and then outputs the line.
Delete
-
Delete the first line of a file:
sed -e '1d' /etc/fstab
-
Delete from the second to the tenth line:
sed -e '2,10d' /etc/fstab
-
Delete lines starting with #:
sed -e '/^#/d' /etc/fstab
-
Print lines starting with #:
sed -n -e '/^#/p' /etc/fstab
-
Print blocks of text enclosed by BEGIN and END:
sed -n -e '/BEGIN/,/END/p' script.awk
-
Print Device section in xorg.conf:
sed -n -e '/Section "Device"/,/EndSection/p' /etc/X11/xorg.conf
-
Print main function in a C source file:
sed -n -e '/main[[:space:]]*(/,/^}/p' source.c
How to colorize bash prompt easily

Sometimes, the bash prompt can look a little dull and it may become difficult to recognize where the output of a command ends. Here I provide with a very simple way to customize your bash prompt by adding some colors.
First of all, add these colors definition to your .bashrc
## Fancy colors red='\[\e[0;31m\]' RED='\[\e[1;31m\]' blue='\[\e[0;34m\]' BLUE='\[\e[1;34m\]' cyan='\[\e[0;36m\]' CYAN='\[\e[1;36m\]' black='\[\e[0;30m\]' BLACK='\[\e[1;30m\]' green='\[\e[0;32m\]' GREEN='\[\e[1;32m\]' yellow='\[\e[0;33m\]' YELLOW='\[\e[1;33m\]' magenta='\[\e[0;35m\]' MAGENTA='\[\e[1;35m\]' white='\[\e[0;37m\]' WHITE='\[\e[1;37m\]' NC='\[\e[0m\]' # No Color
The variables you want to use are
- \u – username
- \h – host name
- \w – current absolute path
- \W for current relative path
- \$ – te prompt character (eg. ‘#’)
For example, my current setup looks like:
PS1="${green}\u${NC}@${green}\h ${BLUE}\w${NC} ${GREEN}\$ ${NC} "
Enjoy