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)