vim用法

Vim用法

复制代码
vim 文件名              //打开需要编辑的文件
--进入后,操作界面有三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)
命令模式
-刚进入文件就是命令模式,通过方向键控制光标位置,
-使用命令"dd"删除当前整行
-使用命令"/字段"进行查找
-按"i"在光标所在字符前开始插入
-按"a"在光标所在字符后开始插入
-按"o"在光标所在行的下面另起一新行插入
-按":"进入底行模式
插入模式
-此时可以对文件内容进行编辑,左下角会显示 "-- 插入 --""
-按"ESC"进入底行模式
底行模式
-退出编辑:      :q
-强制退出:      :q!
-保存并退出:    :wq
## 操作步骤示例 ##
1.保存文件:按"ESC" -> 输入":" -> 输入"wq",回车     //保存并退出编辑
2.取消操作:按"ESC" -> 输入":" -> 输入"q!",回车     //撤销本次修改并退出编辑
## 补充 ##
vim +10 filename.txt                   //打开文件并跳到第10行
vim -R /etc/passwd                     //以只读模式打开文件

i -- 切换到输入模式,在光标当前位置开始输入文本。
x -- 删除当前光标所在处的字符。
: -- 切换到底线命令模式,以在最底一行输入命令。
a -- 进入插入模式,在光标下一个位置开始输入文本。
o:在当前行的下方插入一个新行,并进入插入模式。
O -- 在当前行的上方插入一个新行,并进入插入模式。
dd -- 剪切当前行。
yy -- 复制当前行。
p(小写) -- 粘贴剪贴板内容到光标下方。
P(大写)-- 粘贴剪贴板内容到光标上方。
u -- 撤销上一次操作。
Ctrl + r -- 重做上一次撤销的操作。
:w -- 保存文件。
:q -- 退出 Vim 编辑器。
:q! -- 强制退出Vim 编辑器,不保存修改。

第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

移动光标的方法
h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
0 或功能键Home 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键End 移动到这一行的最后面字符处(常用)
gg 移动到这个档案的第一行,相当于 1G 啊! (常用)
G 移动到这个档案的最后一行(常用)
n n 为数字。光标向下移动 n 行(常用)
/word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
删除、复制与贴上
x, X 在一行字当中,x 为向后删除一个字符 (相当于 del 按键), X 为向前删除一个字符(相当于 backspace 亦即是退格键) (常用)
nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd 剪切游标所在的那一整行(常用),用 p/P 可以粘贴。
ndd n 为数字。剪切光标所在的向下 n 行,例如 20dd 则是剪切 20 行(常用),用 p/P 可以粘贴。
yy 复制游标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
u 复原前一个动作。(常用)
Ctrl+r 重做上一个动作。(常用)
. 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)
进入输入或取代的编辑模式
i, I 进入输入模式(Insert mode): i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)
a, A 进入输入模式(Insert mode): a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
o, O 进入输入模式(Insert mode): 这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行!(常用)
r, R 进入取代模式(Replace mode): r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
Esc 退出编辑模式,回到一般模式中(常用)
vim 环境的变更
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号

查找与替换

:s(substitute)命令用来查找和替换字符串。语法如下:

cobol 复制代码
:{作用范围}s/{目标}/{替换}/{替换标志}

例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)。

作用范围

作用范围分为当前行、全文、选区等等。

当前行:

ruby 复制代码
:s/foo/bar/g

全文:

ruby 复制代码
:%s/foo/bar/g

2-11行:

cobol 复制代码
:5,12s/foo/bar/g

当前行.与接下来两行+2

cobol 复制代码
:.,+2s/foo/bar/g
替换标志

上文中命令结尾的g即是替换标志之一,表示全局global替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:

空替换标志表示只替换从光标位置开始,目标的第一次出现:

ruby 复制代码
:%s/foo/bar

i表示大小写不敏感查找,I表示大小写敏感:

ruby 复制代码
:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar

c表示需要确认,例如全局查找"foo"替换为"bar"并且需要确认:

取消高亮

复制代码
:nohl
相关推荐
2023自学中4 小时前
Linux 内核与用户空间 内存管理详解(堆与栈篇)
linux·嵌入式·内存·开发板
似水এ᭄往昔5 小时前
【Linux系统编程】--虚拟地址空间
linux·服务器
不会C语言的男孩5 小时前
Linux 系统编程 · 第 3 章:文件 I/O 基础
linux·服务器
dadaobusi5 小时前
Linux内核完成大量内存/调度/时间子系统初始化的关键阶段
java·linux·前端
唐墨1235 小时前
关于linux kernel错误码为负数编码这件事情,我个人的一些看法
linux·运维·服务器
Full Stack Developme5 小时前
Linux Shell 教程概览
linux·前端·chrome
网络系统管理5 小时前
第八届江苏技能状元大赛选拔赛信息通信网络运行管理项目模块D网络服务与系统运维-Linux样题
linux·运维
凡人叶枫6 小时前
Effective C++ 条款24:若所有参数皆须要类型转换,请为此采用 non-member 函数
linux·前端·c++·算法·嵌入式开发
零陵上将军_xdr6 小时前
Shell流程控制:if/case/for/while让脚本活起来
linux·运维·服务器
坤昱6 小时前
cfs调度类深入解刨——pelt细节篇
linux·linux内核·cfs调度·eevdf·cfs调度类深入解刨·pelt·pelt细节篇