vim常用指令大全

vim模式及命令

vim的四种模式

  • 正常模式(normal-mode):不能对文本直接编辑,可使用快捷键进行增删改查(打开后的默认模式)
  • 插入模式(insert-mode):可直接对文本进行编辑(普通模式下输入i进入输入模式)
  • 命令模式(command-mode):在末行输入命令进行操作
  • 可视模式(visual-mode)
    对于初学者,安装后建议运行vimtutor进入官方文档,如果是不是中文可运行vimtuor zh,先根据文档进行练习

vim四种模式的切换

  • 普通模式
    在任何模式下,只要按下 Esc 键就可以返回普通模式。

  • 普通模式进入插入模式(插入模式则类似于记事本)

i # 在光标所在字符前开始输入文字并进入插入模式
a # 在光标所在字符后开始输入文字并进入插入模式
o # 在光标所在行的下面单独开一新行来输入文字并进入插入模式
s # 删除光标所在的字符并进入插入模式
I # 在行首开始输入文字并进入插入模式
A # 在行尾开始输入文字并进入插入模式
O # 在光标所在行的上面单独开一新行来输入文字并进入插入模式。
S # 删除光标所在行并进入插入模式
c[n]w # 改写光标后1(n)个词。
c[n]l # 改写光标后n个字母。
c[n]h # 改写光标前n个字母。
[n]cc # 修改当前[n]行。
[n]s  # 以输入的文本替代光标之后1(n)个字符,相当于c[n]l。
[n]S  # 删除指定数目的行,并以所输入文本代替之。
  • 进入可视模式(可视模式相当于高亮选取文本后的普通模式)
    • 普通模式 按键 v 进入Vim字符选择可视化模式
    • 普通模式Ctrl + v进入块选择模式
vis # 选中一个句子
vib # 选中一个block
viw # 选中一个单词
vip # 选中一个段落
va{ # 选中{}中间内容,包括{}
vi( # 选中()中间内容
vi{ # 选中{}中间的内容,不包括{}
vi< # 选中<>中间内容
vi[ # 选中[]中间内容
vi” # 选中”"中间内容
vi’ # 选中”中间的内容
  • 命令模式
    • 正常模式输入:进入命令模式
:q  # 离开vim
:q! # 退出不保存
:wq # 保存后退出
:w  # 保存编辑的内容
:w! # 强制写入该文件

操作文件

vim filename  # 用vim打开指定文件夹
vim -r filename  # 恢复上次异常退出的文件
vim -R filename  # 以只读的方式打开文件,但可以强制保存
vim -M file      # 以只读的方式打开文件,不可以强制保存

移动

  • 可配合number使用,3j (下移三行),3w(后移三个单词)
h或退格   # 左移一个字符;
l或空格   # 右移一个字符;
j        # 下移一行;
k: 		 # 上移一行;
- 		 # 把光标移至上一行第一个非空白字符。
w/W  	 # 移动到下一个word/WORD的开头(WORD表示不包含单词相邻的标点)
e/E      # 移动到下一个word/WORD的结尾		
b/B      # 回到上一个word/WORD的开头
ge/gE    # 回到上一个word/WORD的开头
(		 # 前移1句。
) 		 # 后移1句。
{ 		 # 前移1段。
} 		 # 后移1段。
fc       # 把光标移到同一行的下一个c字符处
Fc       # 把光标移到同一行的上一个c字符处
tc       # 把光标移到同一行的下一个c字符前
Tc       # 把光标移到同一行的上一个c字符后
  • 不可配合number使用
0 # 移动当前行开头
^ # 移动到当前行第一个非空白字符
$ # 移动到当前行行尾
g # 移动光标所在屏幕行行尾
gg/G # 移动到文件开头/结尾: 把光标移到递n列上。
nG   #到文件第n行
:[n]<cr> # 移动到第n行<cr>为回车
:$<cr> # 移动到最后一行。
H # 把光标移到屏幕最顶端一行
M # 把光标移到屏幕中间一行
L # 把光标移到屏幕最底端一行
gi # 快速回到上次编辑的地方
zz   # 将当前行移动到屏幕中央
zt   #将当前行移动到屏幕顶端
zb   # 将当前行移动到屏幕底端
m{a-z}  # 标记光标所在位置,局部标记,只用于当前文件
m{A-Z}  # 标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效。
`{a-z}  # 移动到标记位置。{a-z}: # 移动到标记行的行首。
:marks  # 显示所有标记。
:delmarks a b # 删除标记a和b。
:delmarks a-c # 删除标记a、b和c。
:delmarks a c-f # 删除标记a、c、d、e、f。
:delmarks! # 删除当前缓冲区的所有标记。

复制粘贴

yy/Y   # 复制当前行
p    # 粘贴
3yy  # 复制当前行向下的3行
dd   # 删除
3dd  # 删除当前行向下的5行
y    # 复制在可视模式下选中的文本。
[n]x #  剪切光标右边n个字符,相当于d[n]l。
[n]X # 剪切光标左边n个字符,相当于d[n]h。
y[n]w  # 复制n个词。
y[n]l  # 复制光标右边n个字符。
y[n]h  # 复制光标左边1(n)个字符。
d[n]w  # 删除(剪切)1(n)个单词
d[n]l  # 删除(剪切)光标右边n个字符。
d[n]h  # 删除(剪切)光标左边n个字符。
d0     # 删除(剪切)当前位置到行首的内容
[n] dd # 删除(剪切)n行。
:m,nd<cr> # 剪切m行到n行的内容。
dgg    # 剪切光标以上的所有行。
dG:    # 剪切光标以下的所有行。
daw和das # 剪切一个词和剪切一个句子,即使光标不在词首和句首也没关系。
p: 在光标之后粘贴。
P: 在光标之前粘贴。

查找替换

/string # 在后面的文本中查找string
?string # 在前面的文本中查找string
n # 向后查找下一个
N # 向前查找下一个
:s/old/new  # 用new替换当前行第一个old
:s/old/new/g # 用new替换当前行所有的old
:n1,n2s/old/new/g # 用new替换文件n1行到n2行所有的old
:%s/old/new/g # 用new替换文件中所有的old。
:%s/^/xxx/g  # 在每一行的行首插入xxx,^表示行首
:%s//xxx/g   # 在每一行的行尾插入xxx,表示行尾
r # 替换光标处的字符,同样支持汉字。
R # 进入替换模式(依次向后替换),按esc回到正常模式。
  • 参数说明
    • g 全局变量
    • c每个替换都将需要用户确认(%s/old/new/gc)
    • i则忽略大小写(ignore)

分屏浏览

vim -o file1 file2 # 水平分割窗口,同时打开file1和file2
vim -O file1 file2 # 垂直分割窗口,同时打开file1和file2
:sp filename # 水平分割窗口打开文件夹
:vs filename # 垂直分割窗口打开文件夹
:nsp filename # 水平分割出一个n行高的窗口
:nvs filename# 垂直分割出一个n行高的窗口
:qa  # 关闭所有窗口,退出vim。
:wa  # 保存所有修改过的窗口
ctrl+w # 切换到下一个窗口。或者是ctrl+w w
ctrl+w p #  切换到前一个窗口
ctrl+w t(b) # 切换到最上(下)面的窗口。
ctrl+w H(L,K,J) # 将当前窗口移动到最左(右、上、下)面
ctrl+w T  # 将当前的窗口移动到新的标签页上。
ctrl+w + # 当前窗口增高一行。也可以用n增高n行。
ctrl+w - # 当前窗口减小一行。也可以用n减小n行。
ctrl+w _  # 当前窗口扩展到尽可能的大。也可以用n设定行数。
:resize n  # 当前窗口n行高。
ctrl+w =   #  所有窗口同样高度。
n ctrl+w _ # 当前窗口的高度设定为n行。
ctrl+w <  # 当前窗口减少一列。也可以用n减少n列。
ctrl+w >  # 当前窗口增宽一列。也可以用n增宽n列。
ctrl+w |  # –当前窗口尽可能的宽。也可以用n设定列数。

撤销

u # 撤销一次
U # 取消当前行中所有的改动。
[n]u: # 取消n个改动。
:undo 5 # 撤销5个改变。
:undolist # 你的撤销历史。
:earlier 1m # 回到1分钟前
:later 10s # 前进10秒

.  #重复上一个编辑动作
qa:# 开始录制宏a(键盘操作记录)
q: # 停止录制
@a:# 播放宏a

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340