文章目录
全局替换方法
以下的文本中old是我们要替换的字符
单字符替换
将把光标所在行old的第一次出现替换为new
/(斜杠)是该条命令不同部分之间的分隔符(当斜杠为该行的最后一个字符时,可不写)
: s/old/new/
单字府多次替换
: s/old/new/g
把当前行old的每次出现改为new,而不只是该行的第一个old。
:s命令允许替换串后面带有选项,上面语法中的g代表全局(g选项影响一行中的每个模式,不要把它与影响文件中所有行的:g命令混淆)
通过在:s命令前加上地址前缀,可以把它的范围扩展到多行。例如下面命令把50行到100行的old的每次出现都改为new:
: 50,100 s/old/new/g
下面的命令把整个文件中的old的每次出现都改为new:
: $ s/old/new/g
确认替换
使用搜索替换命令有时候会出错,而得到不想要的结果。在替换命令尾部加上c (confirm用于确认),在替换每个old前都会提示并确认:
: $ s/old/new/gc
将会出现提示replace with hehe (y/n/a/q/l/E/Y)?
y替换,n不替换,a替换所有,q放弃,l替换第一个并进入插入模式,E和Y是提示你用Ctrl+e或Ctrl+y来滚动屏幕的。
上下文相关替换:
除了直接使用一个单词(或短语)替换另一个,还有稍微复杂的全局替换语法。这些语法可以对一个模式进行搜索,一旦找到含有模式的行,就可以使用不同与模式的串进行替换,我们把这种替换叫做上下文相关替换。
:g/pattern/s/old/new/g
将会把包含pattern的行中,把所有old替换为new
第一个g表示是在文件的所有行上执行的命令,模式pattern识别要发生替换的行。在那些包含模式pattern的行上,将把old替换(s)为new,最后的g表示在该行上进行全部替换。
多行缩进
按v进入visual状态,选择多行,用>或<缩进或缩出
多行注释和取消
- 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;
- 在行首使用上下键选择需要注释的多行;
- 按下键盘(大写)“I”键,进入插入模式;
- 然后输入注释符(“//”、“#”等);
- 最后按下“Esc”键。
取消多行注释:
-
进入命令行模式,按ctrl + v进入 visual block模式,按字母l横向选中列的个数,例如 // 需要选中2列
-
按字母j,或者k选中注释符号
-
按d键就可全部取消注释
移动
hjkl:左下上右
w,b:移动到下/上个字符
快速退出
shift+zz
即可保存推出vim
进入插入模式
i 在当前光标处进行编辑
I,A 在行首/末插入
a 在光标后插入编辑
o,O 在当前行后/前进行编辑
cw 删除一个单词,同时进入插入模式
文档编辑
文档编辑的所有命令都符合一个规律,[操作]+[行号]+定位,三个部分完成一个动作。
比如:删除操作代码是d,重复操作代码代表操作当前行 ,则删除2行就是d2d 操作和行号也可以互换位置2dd
删除
x 删除一个字符
dw 删除一个单词 类似上文说的cw 但是删除完成之后并不会进入插入模式
d$ 删除直至行尾,d^删除至行首 $代表尾,^代表首
dG 删除到文档结尾处 d1G 删至文档首部
前缀(操作):d代表删除
中缀:行号
后缀(定位):d代表行,G代表尽头,$代表行尾,^代表行首,w代表单词
重复命令
普通模式下输入dd,删除一行,输入.(小数点)会再次删除一行,除此之外也可以重复其他任意操作
游标跳转(查)
往往用于配合/字符
的操作
游标跳转位置,不过是没有去掉操作后输入的命令
nG(n shift+g) 游标移动到第n行
gg 游标移动到第一行
G(shift+g)到最后一行
复制粘贴
复制为y,后面可以接定位符
yy复制游标所在的整行(3yy表示复制3行)
y^复制到行首,或者y0。不含光标所在处的字符 y$复制到行尾。含光标所在处字符
yw 复制一个单词
y2w 复制两个单词
yG 复制至文本末
y1G 复制至文本开头
使用p粘贴
p(小写)代表粘贴至光标后(下)
P(大写)代表粘贴至光标前(上)
剪切
d操作 实际上就是剪切 可以使用ddp来进行上下行交换的操作
替换
r命令 r+<代替还字母>将游标所在的一个字母替换成其他字母
R连续替换,直到按下Esc
删除(C)
cw 删除一个单词,并进入插入模式
C删除从游标处开始到当前行尾,并进入插入模式
撤销
u撤销一次操作
U(大写)无论当前行修改了多少次,撤销当前行的所有操作
Ctrl+r 撤销撤销的操作(比如写入123 按u撤销 按crtl+u 能够恢复123的输入)
单行快速缩进
>>
正行将向右缩进
<<
整行向左缩进
查找
快速查找
输入 /
然后输入需要查找的字符串,按回车就会进行查找,输入n和N可以继续查找 n是查找下一个内容,N查找上一个内容
?
和/
功能相同,只不过?
是向上查,/
是向下
高级查找
输入 \*
寻找游标所在处的单词
输入\#
效果一样,但是是向上查
跨文件复制
现在把a.txt的三行复制到b.txt
1、用vim打开a.txt
vim a.txt
Esc进入指令模式(默认刚打开就是这个模式)
输入"a3yy
解释:引号要结合shift输入,a代表剪贴板a(26个英文字母都可以),3yy当然代表从当前行复制3行了
退出a.txt
:q
2、打开b.txt
光标移动到你想要复制的位置
进入指令模式,输入"ap
解释:引号要结合shift输入,a代表使用剪贴板a,p当然代表粘贴了
vim打开多个文件
1.vim还没有启动的时候:
在终端里输入
vim file1 file2 … filen便可以打开所有想要打开的文件
2.vim已经启动
输入
:open file
可以再打开一个文件,并且此时vim里会显示出file文件的内容。
:e …/myFile.pl
- vim 文档名 普通方式打开文档
- vim +n 文档名 打开文档后,定位第n行
- vim ,进入vim界面之后使用命令 :e 文档名 打开文档,此方式可以在编辑一个文档的同时打开另外一个文档
显示多个文件
:split 简写 :sp
:vsplit 简写 :vsp
显示缓存 :ls
多个文件切换
1.文件间切换
Ctrl+6—下一个文件
:bn—下一个文件
:bp—上一个文件
对于用(v)split在多个窗格中打开的文件,这种方法只会在当前窗格中切换不同的文件。
2.在窗格间切换的方法
Ctrl+w+方向键——切换到前/下/上/后一个窗格
Ctrl+w+h/j/k/l ——同上
Ctrl+ww——依次向后切换到下一个窗格中
3.多文档编辑的命令如下
:n 编辑下一个文档。
:2n 编辑下两个文档。
:N 编辑上一个文档。注意,该方法只能用于同时打开多个文档。
:e 文档名 这是在进入vim后,不离开 vim 的情形下打开其他文档。
:e# 或 Ctrl+ˆ 编辑上一个文档,用于两个文档相互交换编辑时使用。?# 代表的是编辑前一次编辑的文档
:files 或 :buffers 或 :ls 可以列出目前 缓冲区 中的所有文档。加号 + 表示 缓冲区已经被修改过了。#代表上一次编辑的文档,%是目前正在编辑中的文档
:b 文档名或编号 移至该文档。
:f 或 Ctrl+g 显示当前正在编辑的文档名称。
:f 檔名 改变编辑中的文档名。(file)