27 Jun 2016
Vim Basic Skills
replace
Command | Explanation |
---|---|
:%s/\(.*\)/something\1 | get the whole line and replace, \1 is the content of the line, for examle :%s/\(.*\)/String \1 = “”; |
r | replace character under current cursor |
R | replace from current cursor |
:s/\s\+/xxx/g | 替换一段连续的空白 |
:%s/$/xxx/ 或者 :x,ynorm AxxxEsc | 每行的行尾添加相同的内容”xxx” |
:%s/xxx.*/yyy/ | 从xxx处至行尾替换成yyy,其中若”yyy”为空串,则可变为从”xxx”处删至行尾 |
:g/red/s/blue/green | 替换包含某字符串的行,to replace “blue” with “green” in lines that contain “red” |
:g!/red/s/blue/green | 替换不包含某字符串的行,to do the replacement in lines that do not contain “red” |
%s/^)/somestring/ | 替换以)开头的行, /^)查找以)开头的行,在查找的内容前加上^ |
:%s/\cmyString/newString/g | 查找、替换时不区分大小写,在查找的内容前加上\c |
delete
Command | Explanation |
---|---|
:%norm f:D | 对每一行删除冒号及冒号之后的内容,其中f前可加上数字1,表示从第几个冒号开始删除,若D前加上小写字母”l(L)”,则删除内容不包括冒号 |
:ndk | delete current and n lines above. (n + 1 lines in total) |
:%s/^.*+// | 删除一行中+前的内容,包含+ |
:s/^.*(FOO)/\1/ | 删除一行中FOO前的内容,不包含FOO |
:%s/.*Hello/Hello/ | 删除最后一个匹配的Hello之前的内容 |
:%s/.\{-}Hello/Hello | 删除第一个匹配的Hello之前的内容 |
df# | 从光标处删至#符号(包含) |
dF# | 从光标处反向删至#符号(包含) |
dt# | 从光标处删至#符号(不包含) |
dT# | 从光标处反向删至#符号(不包含) |
d^ | 从光标处删至行首 |
d0 | 从光标处删至行首 |
dgg | 从当前行删至首行 |
d$ | 从光标处删至行尾 |
dG | 从当前行删至尾行 |
ggdG | 删除所有行 |
:%d | 删除所有行 |
:1,$d | 删除所有行 |
:g/.*/d | 删除所有行 |
:g/^$/d | delete all empty lines |
:g/^\s*$/d | delete all lines that are empty or that contain only whitespace characters (spaces, tabs) |
:g/abcd/d | 删除所有包含”abcd”的行 |
:%g!/abcd/d | 删除所有不包含”abcd”的行 |
:%v/abcd/d | 删除所有不包含”abcd”的行 |
:%g!/abcd\|efgh/d | 删除所有不包含”abcd”且不包含”efgh”的行 |
:g!/^[0-9]/d | 删除所有不以数字开头的行 |
3dk | 删除当前及上面3行,即一共3+1行 |
3dd | 向下删除,一共3行 |
dip | 删除整段 |
dap | 删除整段 |
diw | 删除一个单词 |
diW | delete inner WORD(A WORD consists of a sequence of non-blank characters, separated with white space. An empty line is also considered to be a WORD.) |
daw | 删除一个单词 |
daW | delete around WORD |
dvip | merge multiple blank lines to one |
:%s/\/\*\_.\{-}\*\/// | remove all /* … */ |
:%s/\/\*\*\_.\{-}\*\/// | remove all /** … */ |
yank
Command | Explanation |
---|---|
y$ | yank to the end of the current line (but don’t yank the newline character) |
^y$ | the current line (but don’t yank the newline character) |
y5l | 向后复制5个字符 |
y5h | 向前复制5个字符 |
:4co.Enter | 复制第4行并粘贴至当前行的下一行 |
:xcoyEnter | 复制第x行并粘贴至y行的下一行 |
:x, ycozEnter | 复制第x至y行并粘贴至z行的下一行 |
:4t.Enter | 复制第4行并粘贴至当前行的下一行 |
:xtyEnter | 复制第x行并粘贴至y行的下一行 |
:x, ytzEnter | 复制第x至y行并粘贴至z行的下一行 |
yip | 复制整段 |
yap | 复制整段 |
yip | 复制一个单词 |
yap | 复制一个单词 |
count
Command | Explanation |
---|---|
:%s/string//gn | 统计某匹配串出现的次数 |
search
Command | Explanation |
---|---|
* | search for the word under the cursor forward(Gn jump to the first match, and GN jump to the last) |
# | search for the word under the cursor backward |
move
Command | Explanation |
---|---|
n| | move cusor to the column of n |
CTRL+f | 向前翻屏 |
CTRL+b | 向后翻屏 |
CTRL+d | 向前翻半屏 |
CTRL+u | 向后翻半屏 |
ge | move cursor to the end of the previous word |
gE | move cursor to the end of the previous WORD |
:x,ymz | move lines between x and y to z |
:’<,’>m$ | 把选中的文本移到文件结尾 |
`. | jump to last edit place |
’. | jump to last edit place |
highlight settings
Command | Explanation |
---|---|
:noh | 取消替换、搜索之后的高亮 |
case change
Command | Explanation |
---|---|
~ | toggle case of the character under the cursor, or all visually-selected characters |
3~ | toggle case of the next three characters |
g~ | toggle case change |
g~3w | toggle case of the next three words |
g~iw | toggle case of the current word (inner word – cursor anywhere in word) |
g~$ | toggle case of all characters to end of line |
g~~ | toggle case of the current line (same as V~) |
gu | toggle lowercase |
gU | toggle uppercase |
guu | change the current line to lowercase (same as Vu) |
gUU | change the current line to uppercase (same as VU) |
guiw | change current word to lowercase |
gUiw | change current word to uppercase |
split window
Command | Explanation |
---|---|
:sp or Ctrl+w+s | split the current window horizontally, loading the same file in the new window |
:vsp or Ctrl+w+v | split the current window vertically, loading the same file in the new window |
:q | close the currently active window |
:on | close all windows except the currently active window |
buffer
Command | Explanation |
---|---|
:b2 | go to buffer 2 |
:bd | close current buffer |
:qa | close all buffer |
:wqa | save work in all buffer and close all |
join
Command | Explanation |
---|---|
%j | join all line to one line |
%s/\n//g | join all line to one line |
ggVGJ | join all line to one line |
1,$join | join all line to one line |
xml
Command | Explanation |
---|---|
at | 一对XML标签 |
it | XML标签内部 |
cit | 替换XML标签内部 |
dit | 删除XML标签内部 |
yit | 复制XML标签内部 |
format
Command | Explanation |
---|---|
ggvG= | 格式化代码 |
:m, n!python -m json.tool | 格式化json |
宏录制
Command | Explanation |
---|---|
1.qa 2.do something 3.q 4.100@a | 宏录制及其使用 |
new file
Command | Explanation |
---|---|
:tabe new_file_name | 在new tab中创建新文件(如果跟我一样不喜欢:new new_file_name命令可用这个),等价于:tab new |
Til next time,
mitcc
at 22:55
