正式班D13

vim可用来修改配置、写脚本

三种模式(命令模式、输入模式、末行模式)

命令模式按a(所选后面开始输入)、A(所选行的行尾)、i(所选前一位输入)、I(所选行的行首)、o(所选新起下一行)、O(新起上一行)等进入输入模式

命令模式按':'键进入末行模式

输入模式、末行模式进入命令模式

命令模式

光标的移动

$ # 光标移动到当前行的行尾

0 # 光标移动到当前行的行首

gg # 光标移动到首行的行首

G # 光标移动到尾行的行尾

nG # n为数字,光标移动到第n行(20G是移动到20行行首)

H # 光标移动到当前界面首行的行首

h #光标往左移

j # 光标往下移

k # 光标往上移

l # 光标往右移

M # 光标移动到当前界面中间行的行首

L # 光标移动到当前界面尾行的行尾

^ # 光标移动到第一个非空格字符

删除、复制、剪切

dd # 剪切、删除光标所在行

ndd # n为数字,即删除光标及往下n行(20dd是删除20行)

yy # 复制光标所在行

nyy # n为数字,即复制光标及往下n行(20yy就是复制20行)

p # 粘贴到光标下一行

P # 粘贴到光标上一行

np # n为次数,5p就是粘贴5次

u # 撤回

CTRL+r # 撤回撤销

r # 用来修改光标所在的字符

R # 进入替换模式

x # 删除光标所在字符

D # 从光标处删除至行尾

可视块

批量去注释

光标移动到需要去注释的行首

CTRL+v

上下键选择#

按"d"

批量加注释

光标移动到需要去注释的行首

CTRL+v选择好一列

按shift+i,按#

连续按两次Esc

查找内容

/查找的内容

输入模式

CTRL+p 或CTRL+n# 自动补全命令(相当于Tab)

例如:上文输入过ifconfig,下文输入if再按ctrl+p或n可自动补全ifconfig

例二:上文输入过print、prend,下文输入pr再按ctrl+p/n会有两个选项选择

末行模式(:)

基础命令

:10 # 进入第十行

:w # 保存

:q # 退出(:q!强制退出)

:wq # 保存退出(:wq!强制保存退出)

:x # (保存退出)

: set nu # 加行号

: set nonu # 去行号

: set ic # 不区分大小写

: set ai # 自动缩进

查找替换

:范围 s/xxx/yyy/选项

:1,5 s/xxx/yyy/ # 表示从1~5行的首个xxx替换为yyy

:1,$ s/xxx/yyy/ # 表示从1到最后一行的首个xxx替换为yyy

:1,5 s/xxx/yyy/g # 表示从1~5行的全部xxx替换为yyy

:% s/xxx/yyy/ # 表示全文的xxx替换为yyy(%为所有行g为一整行)

:% s/^xxx/yyy/g # 表示以xxx开头的替换为yyy

:% s/xxx$/yyy/g # 表示以xxx结尾的替换为yyy

:% s/^xxx$/yyy/g # 表示以xxx开头且以xxx为结尾的替换为yyy

读入文件

:w # 保存

:w /aaa.txt # 另存为/aaa.txt

:1,3 w/2.txt # 将1~3行另存到/2.txt

:r /etc/hosts # 将/etc/hosts插入到光标下一行

设置环境

临时设置

:set nu # 设置行号

:set nonu # 取消设置行号

:set ic # 不区分大小写

:set noic # 取消不区分大小写

:set ai # 自动缩进

:set list # 用$标识行尾

永久设置

/etc/vimrc # 影响所有系统用户

~/.vimrc # 影响某一个用户(在家目录下新增一个文件)

输入set ic及set nu

同时编辑多个文件

vim -o 文件1 文件2 # 水平分隔

vim -O 文件1 文件2 # 垂直分割

用CTRL+ww切换

vim -p 文件1 文件2

用CTRL+PgUp,CTRL+PgDn切换

文件内容对比

diff # 文件对比(no)

vimdiff # 以vim方式打开两个文件对比,高亮显示不同的内容

vimdiff 文件1 文件2 # 用CTRL+ww切换

vim执行过程

遇到故障意外退出时,会保存.swp文件,再次编辑时会提示

打补丁

创建1.txt和2.txt两个文件(1基础本,2修改版)

diff -u 1.txt 2.txt > a.diff # 以2.txt为准的补丁文件

diff -u 2.txt 1.txt > b,diff # 以1.txt为准的补丁文件

patch 1.txt a.diff # 将1.txt改成与2.txt一样(a补丁打入1.txt)

patch 1.txt b.diff # 将新的1.txt改回原来的1.txt

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdjfg.html