vim命令⼤全
1. vim模式
正常模式(按Esc或Ctrl+[进⼊)左下⾓显⽰⽂件名或为空
插⼊模式(按i进⼊)左下⾓显⽰--INSERT--
可视模式(按v进⼊)左下⾓显⽰--VISUAL--
替换模式(按r或R开始)左下⾓显⽰ --REPLACE--
命令⾏模式(按:或者/或者?开始)
ex模式没⽤过,有兴趣的同学可以⾃⾏了解
2. 打开⽂件
# 打开单个⽂件
vim file
# 同时打开多个⽂件
vim file1 file2..
# 在vim窗⼝中打开⼀个新⽂件
:open [file]
【举个例⼦】
# 当前打开1.txt,做了⼀些编辑没保存
:open! 放弃这些修改,并重新打开未修改的⽂件
# 当前打开1.txt,做了⼀些编辑并保存
: 直接退出对1.txt的编辑,直接打开2.txt编辑,省了退出:wq再重新的步骤
# 打开远程⽂件,⽐如ftp或者share folder
:e ftp://192.168.10.
:
e \qadrive\
# 以只读形式打开⽂件,但是仍然可以使⽤ :wq! 写⼊
vim -R file
# 强制性关闭修改功能,⽆法使⽤ :wq! 写⼊
vim -M file
3. 插⼊命令
i 在当前位置⽣前插⼊
I 在当前⾏⾸插⼊
a 在当前位置后插⼊
A 在当前⾏尾插⼊
o 在当前⾏之后插⼊⼀⾏
O 在当前⾏之前插⼊⼀⾏
4. 查命令
最简单的查
/text 查text,按n健查下⼀个,按N健查前⼀个。
text 查text,反向查,按n健查下⼀个,按N健查前⼀个。
vim中有⼀些特殊字符在查时需要转义 .*[]^%/?~$
:set ignorecase 忽略⼤⼩写的查
:set noignorecase 不忽略⼤⼩写的查
快速查,不需要⼿打字符即可查
* 向后(下)寻游标所在处的单词
# 向前(上)寻游标所在处的单词
以上两种查,n,N 的继续查命令依然可以适⽤
精准查:匹配单词查
如果⽂本中有 hello,helloworld,hellopython
那我使⽤ /hello ,这三个词都会匹配到。
有没有办法实现精准查呢?可以使⽤
/hello\>
精准查:匹配⾏⾸、⾏末
# hello位于⾏⾸
/^hello
# world位于⾏末
/world$
5. 替换命令
~ 反转游标字母⼤⼩写
r<;字母> 将当前字符替换为所写字母
R<;字母><;字母>... 连续替换字母
cc 替换整⾏(就是删除当前⾏,并在下⼀⾏插⼊)
cw 替换⼀个单词(就是删除⼀个单词,就进⼊插⼊模式),前提是游标处于单词第⼀个字母(可⽤b定位)
C (⼤写C)替换⾄⾏尾(和D有所区别,D是删除(剪切)⾄⾏尾,C是删除⾄⾏位并进⼊插⼊模式)
:s/old/new/ ⽤old替换new,替换当前⾏的第⼀个匹配
:s/old/new/g ⽤old替换new,替换当前⾏的所有匹配
:%s/old/new/ ⽤old替换new,替换所有⾏的第⼀个匹配
:%s/old/new/g ⽤old替换new,替换整个⽂件的所有匹配
:10,20 s/^/ /g 在第10⾏⾄第20⾏每⾏前⾯加四个空格,⽤于缩进。
ddp 交换光标所在⾏和其下紧邻的⼀⾏。
xp 交换相邻两个字母的顺序
6. 撤销与重做
u 撤销(Undo)
U 撤销对整⾏的操作
Ctrl + r 重做(Redo),即撤销的撤销。
7. 删除命令
需要说明的是,vim 其实并没有单纯的删除命令,下⾯你或许理解为剪切更加准确。
以字符为单位删除
x 删除当前字符
3x 删除当前字符3次
X 删除当前字符的前⼀个字符。
3X 删除当前光标向前三个字符
dl 删除当前字符, dl=x
dh 删除前⼀个字符,X=dh
D 删除当前字符⾄⾏尾。D=d$
d$ 删除当前字符⾄⾏尾
d^ 删除当前字符之前⾄⾏⾸
以单词为单位删除
linux使用vim编辑文件dw 删除当前字符到单词尾
daw 删除当前字符所在单词
以⾏为单位删除
dd 删除当前⾏
dj 删除下⼀⾏
dk 删除上⼀⾏
dgg 删除当前⾏⾄⽂档⾸部
d1G 删除当前⾏⾄⽂档⾸部
dG 删除当前⾏⾄⽂档尾部
kdgg 删除当前⾏之前所有⾏(不包括当前⾏)
jdG 删除当前⾏之后所有⾏(不包括当前⾏)
10d 删除当前⾏开始的10⾏。
:1,10d 删除1-10⾏
:
11,$d 删除11⾏及以后所有的⾏
:1,$d 删除所有⾏
J 删除两⾏之间的空⾏,实际上是合并两⾏。
8. 复制粘贴
普通模式中使⽤y复制
yy 复制游标所在的整⾏(3yy表⽰复制3⾏)
y^ 复制⾄⾏⾸,或y0。不含光标所在处字符。
y$ 复制⾄⾏尾。含光标所在处字符。
yw 复制⼀个单词。
y2w 复制两个单词。
yG 复制⾄⽂本末。
y1G 复制⾄⽂本开头。
普通模式中使⽤p粘贴
p(⼩写):代表粘贴⾄光标后(下边,右边)
P(⼤写):代表粘贴⾄光标前(上边,左边)
9. 剪切粘贴
dd 其实就是剪切命令,剪切当前⾏
ddp 剪切当前⾏并粘贴,可实现当前⾏和下⼀⾏调换位置正常模式下按v(逐字)或V(逐⾏)进⼊可视模式
然后⽤jklh命令移动即可选择某些⾏或字符,再按d即可剪切
ndd 剪切当前⾏之后的n⾏。利⽤p命令可以对剪切的内容进⾏粘贴
:1,10d 将1-10⾏剪切。利⽤p命令可将剪切后的内容进⾏粘贴。
:1, 10 m 20 将第1-10⾏移动到第20⾏之后。
10. 退出保存
:wq 保存并退出
ZZ 保存并退出
:q! 强制退出并忽略所有更改
:e! 放弃所有修改,并打开原来⽂件。
ZZ 保存并退出
:sav(eas) 另存为⼀个新⽂件,退出原⽂件的编辑且不会保存
:f(ile) 新开⼀个⽂件,并不保存,退出原⽂件的编辑且不会保存11. 移动命令
以字符为单位移动
h 左移⼀个字符
l 右移⼀个字符
k 上移⼀个字符
j 下移⼀个字符
# 【定位字符】f和F
fx 到光标后第⼀个为x的字符
3fd 到光标后第三个为d的字符
F 同f,反向查。
以⾏为单位移动
# 10指代所有数字,可任意指定
10h 左移10个字符
10l 右移10个字符
10k 上移10⾏
10j 下移10⾏
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论