зеркало из
				https://github.com/iharh/notes.git
				synced 2025-11-03 23:26:09 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			244 строки
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			244 строки
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Note:
 | 
						|
	We can use : as a separator intead of / (slash)
 | 
						|
Substitute (replace):
 | 
						|
 | 
						|
:h cmdline-ranges
 | 
						|
	Help on command-line ranges
 | 
						|
 | 
						|
:[range]s/pattern/replacer/[flags][count]
 | 
						|
	range (work with lines, not chars) :
 | 
						|
		default - search only the current line
 | 
						|
		% - [all lines in a] current buffer
 | 
						|
		.,'a - complex range - from the cursor (.) to mark a 
 | 
						|
		. - current line
 | 
						|
		+5 - 5 lines up
 | 
						|
		-3 - 3 lines down
 | 
						|
		1  - line number 1 of the buffer
 | 
						|
		$  - last line of the buffer
 | 
						|
		%  - all lines of the buffer
 | 
						|
		't - position of mark t
 | 
						|
		/pattern/ - next line where patter matches (also try ?pattern?)
 | 
						|
		       
 | 
						|
	/ delimite a text and replacement
 | 
						|
 | 
						|
	flags:
 | 
						|
		<empty> - the first occurence only
 | 
						|
		g - search for all occurences (global)
 | 
						|
		c - ask for confirmation on each match (confirm)
 | 
						|
		i - ignore case
 | 
						|
		I - case sensitive
 | 
						|
		n - show number of matches (non-destructive i.e - without making any changes)
 | 
						|
		p - print matching lines
 | 
						|
 | 
						|
	count
 | 
						|
		N - N lines
 | 
						|
 | 
						|
if you skip a pattern - the last one will be used
 | 
						|
if you skip a replacer - the delete will occur
 | 
						|
 | 
						|
Samples
 | 
						|
	:%s/^/>  /
 | 
						|
		Insert > and 2 spaces to the beginning of each line
 | 
						|
	:.,+5s/$/./
 | 
						|
		Add a period to the end of net six lines
 | 
						|
 | 
						|
 | 
						|
Global (search & execute):
 | 
						|
 | 
						|
Global searches
 | 
						|
:g/pattern
 | 
						|
	Finds (moves to) the last occurence of pattern in the file
 | 
						|
:g/pattern/p
 | 
						|
	Finds and displays all the lines containign pattern
 | 
						|
:g/pattern/nu
 | 
						|
	-//- also displays line numbers
 | 
						|
:g! or :v
 | 
						|
	-//- not containing pattern
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
:[range]g[lobal]/{pattern}/[cmd]
 | 
						|
 | 
						|
	[cmd] could be:
 | 
						|
	# - show matches with line numbers
 | 
						|
	d - delete matching lines
 | 
						|
	y - yank matching lines
 | 
						|
	p - print
 | 
						|
	nu - also display line numbers
 | 
						|
	normal {command} - execute a normal-mode {command}
 | 
						|
		ex - (/normal OBACON is here) - insert a new line "BACON is here"
 | 
						|
 | 
						|
normal {command} - Execute an extended sequence
 | 
						|
	
 | 
						|
Default range is (unlike search) the whole buffer
 | 
						|
 | 
						|
Note: unix grep stands for g/re/p
 | 
						|
 | 
						|
Samples:
 | 
						|
	:g/params[:foo]/#
 | 
						|
		show line numbers where params[:foo] occurs
 | 
						|
	:g/^$/d
 | 
						|
		delete blank lines
 | 
						|
	:g/pattern/+y
 | 
						|
		Yank line after the ones that match
 | 
						|
	:g/<keycap>/s/Esc/ESC/g
 | 
						|
		To change instances of Esc to ESC only when Esc is on a line that contains <keycap>
 | 
						|
	:g /search-start-pattern/.,/search-end-pattern/+5 move /place-pattern/-1
 | 
						|
		To do a sophisticated move of selected range
 | 
						|
 | 
						|
Note: use v instead of g to operate on non-matching content
 | 
						|
 | 
						|
	Ranges:
 | 
						|
	:.,+10g/foo/d - delete matches from cursor through next 10 lines
 | 
						|
	:.,'f+2g/foo/# - show line numbers through 2 lines after mark f
 | 
						|
	:.,/bar/g/foo/d - delete lines through next line matching 'bar'
 | 
						|
 | 
						|
 | 
						|
 | 
						|
RexExp syntax styles:
 | 
						|
 | 
						|
	\v - Very Magic - Similar to Perl, Ruby, Python (egrep)
 | 
						|
	\m - Magic - The default but awkward (grep)
 | 
						|
	\M - No Magic - Rarely used
 | 
						|
	\V - Very No Magic - Rarely used
 | 
						|
 | 
						|
Example:
 | 
						|
	/\v(.y){3} - for very-magic syntax
 | 
						|
 | 
						|
 | 
						|
Note: after hitting a start-search you can paste from a prev-search register by hitting C-r
 | 
						|
 | 
						|
 | 
						|
Metacharacters used in regular expressions:
 | 
						|
 | 
						|
.
 | 
						|
	any char (p.p matches pep, pip, pcp)
 | 
						|
*
 | 
						|
	zero or more (bugs* matches bug, bugs, bugss, ...)
 | 
						|
	.* matches any number of any chars
 | 
						|
^
 | 
						|
	When used at the start of regexp, requires the following expr be found at the beginning of the line.
 | 
						|
	When not - just stands for itself
 | 
						|
$
 | 
						|
	When used at the end of regexp, requires the preceding expr be found at the end of the line.
 | 
						|
	When not - just stands for itself
 | 
						|
\
 | 
						|
	Treates the following spec-char as itself.
 | 
						|
[]
 | 
						|
	Matches only chars enclosed between brackets. Ranges can also be used ([:;A-Za-z()]).
 | 
						|
	Within brackets you still need to ESCAPE \, - and ]
 | 
						|
	[^ (^ is the first char after [) reverses the range ([^0-9] - any char not a digit).
 | 
						|
\( \)
 | 
						|
	Saves the pattern enclosed between \( and \) into special holding buffer. Up to nine patterns can be
 | 
						|
        saved this way on a single line. The pattern can be replayed via \1 to \9:
 | 
						|
		:%s/\(That\) or \(this\)/\2 or \1/
 | 
						|
\< or \>
 | 
						|
	Matches chars at the beginning or at the end of a word (\<ac - action, ac\> - amiac)
 | 
						|
~
 | 
						|
	Matches the last given substitute(may not behave well...)
 | 
						|
+++++++++++++
 | 
						|
+ VIM stuff +
 | 
						|
+++++++++++++
 | 
						|
\|
 | 
						|
	Indicates alternation (house\|home).
 | 
						|
\+
 | 
						|
	Matches one or more of the preceding reg-exp
 | 
						|
\=
 | 
						|
	Matches zero or more of the preceding reg-exp
 | 
						|
\{n,m}
 | 
						|
	Matches n to m of the preceding reg-exp
 | 
						|
\{n}
 | 
						|
	Matches n of the preceding reg-exp
 | 
						|
\{n,}
 | 
						|
	Matches at least n of the preceding reg-exp, as much as possible
 | 
						|
\{,m}
 | 
						|
	Matches 0 to m of the preceding reg-exp, as much as possible
 | 
						|
\{}
 | 
						|
	Matches 0 or more of the preceding reg-exp, as much as possible
 | 
						|
\{-n,m}
 | 
						|
	Matches n to m of the preceding reg-exp, as few as possible
 | 
						|
\{-n}
 | 
						|
	Matches n of the preceding reg-exp, as few as possible
 | 
						|
\{-n,}
 | 
						|
	Matches at least n of the preceding reg-exp, as few as possible
 | 
						|
\{-,m}
 | 
						|
	Matches 0 to m of the preceding reg-exp, as few as possible
 | 
						|
\i
 | 
						|
	Matches any identifier character, as defined by the isident option (\I - excluding digits)
 | 
						|
\k
 | 
						|
	Matches any keyword character, as defined by the iskeyword option (\K - excluding digits)
 | 
						|
\f
 | 
						|
	Matches any filename character, as defined by the isfname option (\F - excluding digits)
 | 
						|
\p
 | 
						|
	Matches any printable character, as defined by the isprint option (\P - excluding digits)
 | 
						|
\s
 | 
						|
	Matches any whitespace character (exactly - space of tab)
 | 
						|
\S
 | 
						|
	Matches anything except space and tab
 | 
						|
\b
 | 
						|
	Backspace
 | 
						|
\e
 | 
						|
	Escape
 | 
						|
\r
 | 
						|
	Carriage return
 | 
						|
\t
 | 
						|
	Tab
 | 
						|
\n
 | 
						|
	Reserved for future use
 | 
						|
 | 
						|
 | 
						|
 | 
						|
POSIX Character classes:
 | 
						|
 | 
						|
[:alnum:]
 | 
						|
	Alphanumeric characters
 | 
						|
[:alpha:]
 | 
						|
	Alphabetic characters
 | 
						|
[:blank:]
 | 
						|
	Space and tab characters
 | 
						|
[:cntrl:]
 | 
						|
	Control characters
 | 
						|
[:digit:]
 | 
						|
	Numeric characters
 | 
						|
[:graph:]
 | 
						|
	Printable and visible (nonspace) characters
 | 
						|
[:lower:]
 | 
						|
	Lowercase characters
 | 
						|
[:print:]
 | 
						|
	Printable characters (including whitespaces)
 | 
						|
[:punct:]
 | 
						|
	Punctuation characters
 | 
						|
[:space:]
 | 
						|
	Whitespace characters
 | 
						|
[:upper:]
 | 
						|
	Uppercase characters
 | 
						|
[:xdigit:]
 | 
						|
	Hexadecimal characters
 | 
						|
 | 
						|
 | 
						|
Metacharacters for REPLACEMENT string:
 | 
						|
 | 
						|
\n
 | 
						|
	Where n is 1..9, means previously saved pattern via \( and \).
 | 
						|
\
 | 
						|
	Treates the following spec-char as itself.
 | 
						|
&
 | 
						|
	Is replaced with the entire text matched by the search pattern when used in a replacement string.
 | 
						|
	Ex. - to surround each line from 1 to 10 with paranthesis:
 | 
						|
		:1,10s/.*/(&)/
 | 
						|
~
 | 
						|
	Is replaced with with the replacement text specified in the last substitute command.
 | 
						|
\u or \l
 | 
						|
	Causes the next char to be changed to upper/lower - case. Usefull mainly with variable strings.
 | 
						|
\U or \L, \e or \E
 | 
						|
	The same as above but causes all the following character (up to \e or \E) to be converted.
 | 
						|
 | 
						|
 | 
						|
More substitution tricks:
 | 
						|
 | 
						|
:s
 | 
						|
	Is the same as :s//~/. In other words - repeat the last substitution.
 | 
						|
 | 
						|
 |