VIM 学习记录3

跳转到第n行

:n+enter
nG

运行

!./1.exe

hjkl move navigation

iIaA i add before the character I add before the line. a after character, A add after line.

xr x delete char, r replace char.

diw delete inner word 剪切当前单词,只算连着的字母

ciw 剪切当前的单词,并进入插入模式

yiw 复制当前单词 yank in a word

ci( 改变剪切当前括号内的所有东西,并进入插入模式,居然不是当前单词

u 撤销

ctrl+r 取消撤销

dd 剪切当前行

cc 剪切当前行并进入插入模式

v 进入可视化模式 visual mode

w or shift+<- 跳到下一个单词的开头

b 跳到当前或上一个单词开头

e or shift+-> 跳到当前或下一个单词末尾

dw 剪切当前位置到下一个单词开头 delete a word,中间的空格也没有了

diw 剪切当前单词 delete in a word

di( 剪切当前括号内的东西 delete in ()

da( 剪切当前括号及括号内的内容 delete and (

di" 剪切当前字符串内的东西 delete in ""

ciw 剪切当前单词并进入插入模式 change in a word

ci( 剪切当前括号内的东西,并进入插入模式 change in ()

ca( 剪切当前括号及括号内的东西,并进入插入模式 change in ()

ci" 剪切档期字符串内的东西,并进入插入模式 change in ""

yiw 复制当前单词 yank in a word

yi( 复制当前括号内的东西

yi" 复制当前字符串

d$ or d+end 剪切当前位置到行尾,当前字母被剪切

d0 or d+home 剪切当前位置到行首,当前字母不被剪切

% 光标站在{ 时可以试用 % 跳转到 }

d% 剪切当前大括号内的所有内容

f{char} 跳到下一个char的位置

F{char} 跳到上一个char的位置

t{char} 跳到下一个char的前面

T{char} 跳到上一个char的后面

dt( 剪切当前位置到(的东西

dt" 剪切当前位置到"

ct( 剪切当前位置到(的东西并进入插入模式

ct" 剪切当前位置到"的东西并进入插入模式

>> 将一行向右缩进
<< 将一行向左缩进
>% 向右缩进() or {}内的东西(光标需要位于括号上)
<% 向左缩进() or {}内的东西(光标需要位于括号上)

== 在普通txt后缀的文本中是,缩进一行与上一行对齐 进入visual模式,选中要调整缩进的那些行,然后==,可以自动进行缩进到与上一行对齐 如果文件后缀是c或cpp或java,那么可以进行自动缩进

p 在光标后粘贴

P 在光标前粘贴

gp 在光标后粘贴,并将光标定位到文本后

gP 在光标前粘贴,并将关闭定位在文本后

/{word} 向后查找word,n是继续找下一个,N找上一个

?{word} 向前查找word,n是继续找下一个,N找上一个

m{char} mark一个位置,位置名叫{char}

'{char} 跳转到char这个名字的mark

:marks 查看所有标记

ctrl-a 加一个数字

ctrl-x 减一个数字

:%s/word1/word2/g 在全局将word1替换成word2

'<,'>s/word1/word2 进入visual模式选中一些行后,用s来将word1替换成word2

. 重复上一个命令

:reg 查看寄存器,其实是粘贴板,历史的都有

"7p 将寄存器中第7个记录粘贴出来

"7yy 复制当前行到第7个寄存器

"0p 粘贴最后一次试用y复制的东西,而不是d剪切的东西

3x 删除三个字母

3dw 删除三个单词

3dd 删除三行

qa 录制名字为a的宏,然后再按q结束,可以使用:reg在寄存器中c类型的寄存器找到这个名字为a的宏

@a 使用名字为a的宏

宏的使用样例: 使用qa开始录制a的宏,使用A跳转到行尾,让后输入Amazing,输入esc,输入q结束定义宏。 在其他行直接使用@a就可以在这行的行尾加上Amazing hello Amazing your name is Amazing i can call you Amazing

进入可视化模式后

选中单词

d 剪切当前选中的东西

y 复制当前选中东西 yank

shift+v 进入行选的visual模式(大段复制和剪切)

ctrl+v 进入列选的visual模式,该成列成列的数据可能能用到

ctrl+v 可以进入列选模式,然后整体删除某列的字符,整体复制也可以,整体p粘贴也可以. 按shift+i或者s(s 会把选中的都给删除掉)可以进入列插入模式。 (注意原版vim的shift+i的列插入模式插入在插入时只会显示第一行的变化,要按esc后才会对所有行生效,而vscode下的vim可以同时所有行生效)

void f(name, int id, long long number) void f(string name, int id, long long number)

文章目录