首页 > 代码库 > M25-3

M25-3

懒人少语之第三周
`vim编辑器`
vi: Visual Interface 文本编辑器
vim带颜色~`不过需要是vim觉得你是配置文件才会有高亮颜色,普通复制配置文件未必有高亮`
vim通常有三种模式,默认下是命令模式,还有插入/编辑模式`i/o`和扩展命令模式`set nu`和格式化模式`v/V`
默认状态下是命令模式

vim +10 /etc/passwd
`+数字` 跳转到某行
vim +/^wang /etc/passwd
`+模式` 支持正则表达式跳转`光标处于第一个被PATTERN匹配到的行的行首`
vim -d /etc/passwd /etc/issue
`-d` 多个文件两个分割屏显示
vim -m /etc/passwd
`-m` 只读不能编辑
vim /err/f1
`文件路径名不存在不能保存`
vim -e /etc/passwd
`-e` 类似查找/命令/扩展命令模式

如果文件不存在,当编辑后第一次存盘是创建它

功能键
k上 j下 h左 l右
i编辑模式`插入模式,当前光标位置`
esc返回到命令模式
a编辑模式`光标往后移了一格`
o编辑模式`新增插入下一行新行`
I编辑模式`光标到行首编辑`
A编辑模式`光标到行尾`
O编辑模式`新增插入上一行新行`
 
w `下一个单词词首` W `跳过各种符号标点到..`
e `下一个单词词尾` E `跳过各种符号标点到..`
b `上一个单词段词首` B `跳过各种符号标点到上一个单词词首`
3h `向左跳三下` 3h 3j 3k 3l 数字加指令
H `当前这一页的行首`
M `当前这一页的中间`
L `当前这一页的行尾`
30G `跳到第30行`
gg `跳到第一行`
G `跳到最后一行`
0 `数字0跳到最前面的行首(包括空格的最前面)`
^ `行首第一个单词`
$ `行尾`
) `下一句`
( `上一句`
{ `下一段`
} `上一段`
{()} `可结合shift段落/句跳,或者双击{或}进行段落符号上下跳`
x `删除光标字符(剪切)`
3x `删除光标右边3个字符(剪切右边3个字符)`
~ `转换大小写`
J `删除当前行最后面的换行符,下一行内容接着当前行`
r字符 `先按r再输入字符,直接替换`
R `类似改写模式`
d命令 `删某个模式的一段`dh dw de db等 d( d) d{ d}
d$ `光标删到行尾`
d^ `光标删到行首(非空白头最前)`
dG `光标删到内容最后`
dgg `光标删到内容最前`
d0 `光标删到行首`
dd `删除一行`
 
3yy `复制当前光标下3行`↓
3Y `复制当前光标下3行`↑
y$ `复制当前光标到行尾`
y0 y^ ye yw yb y命令 y( y) y{ y}
yy `复制多行`
3yy `复制当前光标下3行`
p `粘贴,光标在最下边``如果复制的是单词,光标则在右边`
P `大写P粘贴,光标位置不变``如果复制的是单词,光标则在左边`
Ctrl+f `向文件尾部翻一屏`
Ctrl+b `向文件首部翻一屏`
Ctrl+d `向文件尾部翻半屏`
Ctrl+u `向文件首部翻半屏`

c修改命令结束后并跳到插入模式(修改过程中类似剪切操作)
c$ `剪切光标右边内容并转为编辑模式`
c^ `剪切光标左边内容并转为编辑模式`
S `大S剪切光标当前行内容并转为编辑模式`
c0 cb ce cw c( c) c{ c}
C命令 `剪切光标右边内容并转为编辑模式`
3cc `剪切光标下3行内容并转为编辑模式`

100iwang[ESC]
`默认模式下的100指次数,i到编辑模式,输入wang自定义内容后按[ESC]可自动重复粘贴内容100次`

0y$ `起始位置`命令`终止位置`
0行首,y命令复制,$行尾
y复制 d删除 gU变大写 gu变小写 ye yw yb等

组合ggyG `从行首复制到行尾`
 
地址定界(从这里,到这里`命令`)起始位置,结束位置y c d等
.当前行 $最后一行
,$-2 从当前行到倒数第二行
% 全部内容,相当于1,$ 比如`%y 是复制全文`
:10:100d `第10到100行删除(不能超过范围)`
:1,$d `第一行删到结尾`
:2,+3 `当前行开始2到3行`

模式定界(正则表达式)
:/^r/,/^f/d `光标当前行r开头的到f开头的删除`
d y (w file) (r file)
:/^r/,/^f/w /tmp/file `当前光标r开头f开头另存到/tmp/file`
:3,/^mail/d `从第三行到行首是mail的内容`
 
/^n `正序找n`(支持PATTERN模式)
?^g `倒序往上找行首是g的位置`(支持PATTERN模式)
n`与命令同方向`,N`与命令反方向`

:s/abc `查找abc内容`
:s/abc/cba/ `内容abc替代为cba(缺少模式选项不好搞)`↓
:%s/abc/ccc/g `%全文搜索内容abc用第三选项(修饰符)g全局替换为内容ccc`
i忽略大小写, g全局替换(默认下只替换每行第一次出现的),gc全局替换带询问交互功能,也可组合igc
也可以表现为(`因为在替换的内容为文件夹时,容易混乱,可用@或者#代替原有/的功能`)
s@/etc@/var@g
s@#/boot#/#i

撤销更改:
u `撤销最近的(上一次)的操作`
3u `撤销前3次操作更改`
U `大写U撤销当前光标行修改的操作(不可移动光标,编辑该行可撤销该行)`
Ctrl r `撤销后返回被撤销前的状态`
. 和 3. `撤销状态下的内容被粘贴一次,或者3次`

vim的寄存器
3"tyy `表示复制3行到t寄存器中`
"tp `表示将t寄存器内容粘贴`
"引号作为寄存上一个命令操作内容,并调用结束"(可跨多个vim编辑操作)
寄存器标识符可用10个数字记录,和26个自定义字母命名,1个无命名
 
esc:
:wq `存盘退出`
:q `普通退出`
:q! `强行退出`
:wq!`强制存盘退出`在没权限的情况下
:r `读入一个新文件内容到 当前光标下面`
:r /etc/passwd
:w `将文件另存为其它路径`
:w /etc/passwd
ZZ `存盘退出`
ZQ `不保存退出`
:!命令 `感叹号后面跟着命令临时看效果(不用退出VIM很方便)`
:r!命令 `将执行过的命令读到当前编辑光标位置`
:50 `跳到第50行`

若离开esc模式直接按一次esc便可

M25-3