Vi Notes: Difference between revisions

From Federal Burro of Information
Jump to navigationJump to search
m (Vi notes moved to Vi Notes)
 
(20 intermediate revisions by the same user not shown)
Line 1: Line 1:
=== Search ===
forward:
/searchterm
backward
?searchterm
===edit binary file in vi===
===edit binary file in vi===
  :%!xxd
  :%!xxd
=== line numbering ===
Turn on:
:set number
Turn off:
:set nonumber
=== End of line mark ===
:set list
=== Navigate to End of file ===
G
( capital )
=== Join lines ===
aka remove line returns
J
Joins this line and then next with a space, resulting on one line.
gJ
join this line with the next with no space, handy for base64 encodes stuff
=== vim turn of auto indent ===
Use while pasting text.
:set paste
<then paste you stuff>
:set nopaste


===tai64nlocal file in vi===
===tai64nlocal file in vi===
  :%!tai64nlocal
  :%!tai64nlocal


Line 8: Line 60:


  :r !date
  :r !date
Make <f5> be the "insert date" key.
:nnoremap <F5> "=strftime("%c")<CR>P
:inoremap <F5> <C-R>=strftime("%c")<CR>
more: http://vim.wikia.com/wiki/Insert_current_date_or_time


===set tabs to be the ENGDEV way in vi===
===set tabs to be the ENGDEV way in vi===
Line 20: Line 79:
  set tabstop=4
  set tabstop=4
  set expandtab
  set expandtab
highlight searches:
set hlsearch
=== turn off colour===
:syntax off
== Interactive find replace ==
:%s/old/new/gc
:%s+old+new+
trailing g for many times in one line else once.


===fancy find replace===
===fancy find replace===
Line 50: Line 125:
  brackets2 stuff brackets1
  brackets2 stuff brackets1


=Also See=
== base64 ==
 
; decode
 
mark a visual area, then ":", you get
 
:'<,'>
 
make it this:
 
:'<,'>!python -m base64 -d
 
;encode?
 
:'<,'>!python -m base64
 
the whole file you say?
 
decode:
 
:%!python -m base64 -d
 
encode:
 
:%!python -m base64
 
I mean why ever leave vi?
 
== No wrap ==
 
:set nowrap
 
== Convert to unix file format ==
 
:set ff=unix
 
* unix LF only (each line ends with an LF character).
* dos CRLF (each line ends with two characters, CR then LF).
* mac CR only (each line ends with a CR character).
 
== PIck up where you left off ==
 
might already be in /etc/vim/vimrc
 
<pre>
" Uncomment the following to have Vim jump to the last position when                                                     
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
    \| exe "normal! g'\"" | endif
endif
</pre>
 
== Unicode  /Special characters ==
 
;what am I looking at?
: move the cursor over the character and issue "ga"
 
For example:
Submitted Jan 12 
ga
< > 160, Hex 00a0, Octal1240
 
Find replace:
 
:%s/\%xNN//g
 
for example:
 
:%s/\%xa0//g
 
== Stupid mouse ==
 
mac being fancy and letting terminals know about my mouse.
 
cut that out wouldya?
 
file : ~/.vimrc
 
set mouse=
 
== Also See ==


* http://www.geocities.com/volontir/ - tuns of good stuff.
* http://www.geocities.com/volontir/ - tuns of good stuff.

Latest revision as of 17:15, 25 February 2021

Search

forward:

/searchterm

backward

?searchterm

edit binary file in vi

:%!xxd

line numbering

Turn on:

:set number

Turn off:

:set nonumber

End of line mark

:set list

Navigate to End of file

G

( capital )

Join lines

aka remove line returns

J

Joins this line and then next with a space, resulting on one line.

gJ

join this line with the next with no space, handy for base64 encodes stuff

vim turn of auto indent

Use while pasting text.

:set paste
<then paste you stuff>
:set nopaste

tai64nlocal file in vi

:%!tai64nlocal

insert today's date

:r !date

Make <f5> be the "insert date" key.

:nnoremap <F5> "=strftime("%c")<CR>P
:inoremap <F5> <C-R>=strftime("%c")<CR>

more: http://vim.wikia.com/wiki/Insert_current_date_or_time

set tabs to be the ENGDEV way in vi

also called indenting

in the file:

/* ex: set tabstop=4 expandtab: */

or in ~/.vimrc

set tabstop=4
set expandtab

highlight searches:

set hlsearch

turn off colour

:syntax off

Interactive find replace

:%s/old/new/gc
:%s+old+new+

trailing g for many times in one line else once.

fancy find replace

uses match substitution. (X) -> \1

convert:

Target[server-5.location-5.mem]: `/usr/local/bin/snmp_mem_usage.pl public 192.168.5.5 real`

to

Target[server-1.location-5.Swap]: memTotalSwap.0&memTotalSwap.0:public@192.168.5.129:161::::2 - memAvailSwap.0&memAvailSwap.0:public@192.168.5.129:161::::2

in two (in vi):

%s: `/usr/local/bin/snmp_mem_usage.pl public ::g
%s/:\(.\+\) real`/ memTotalReal.0\&memTotalReal.0:public@\1:161::::2 - memAvailReal.0\&memAvailReal.0:public@\1:161::::2/

or more generically, reversing stuff:

%s/(brackets1) stuff (brackets2)/\2stuff\1/g

converts:

brackets1 stuff brackets2

to

brackets2 stuff brackets1

base64

decode

mark a visual area, then ":", you get

:'<,'>

make it this:

:'<,'>!python -m base64 -d
encode?
:'<,'>!python -m base64

the whole file you say?

decode:

:%!python -m base64 -d

encode:

:%!python -m base64

I mean why ever leave vi?

No wrap

:set nowrap

Convert to unix file format

:set ff=unix
  • unix LF only (each line ends with an LF character).
  • dos CRLF (each line ends with two characters, CR then LF).
  • mac CR only (each line ends with a CR character).

PIck up where you left off

might already be in /etc/vim/vimrc

" Uncomment the following to have Vim jump to the last position when                                                       
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
    \| exe "normal! g'\"" | endif
endif

Unicode /Special characters

what am I looking at?
move the cursor over the character and issue "ga"

For example:

Submitted Jan 12 
ga
< > 160, Hex 00a0, Octal1240

Find replace:

:%s/\%xNN//g

for example:

:%s/\%xa0//g

Stupid mouse

mac being fancy and letting terminals know about my mouse.

cut that out wouldya?

file : ~/.vimrc

set mouse=

Also See