文章目录
vi/vim 常用命令总结
vim是经典的文本编辑器,可以进行高效的程序开发。本文对常用命令进行整理。详细内容可以参考官方文档1.
如何进入vim
- bash中输入vi/vim即可进入
- sublime:
在菜单栏中: Preferences -> Setting - User 即可打开配置文件进行编辑,将 ignored_packages 项的[]里面内容清空:“ignored_packages”: []2
再按 Esc 退出编辑模式,即进入了 Vim 模式。
1. vi/vim的工作模式切换
基本上 vi/vim 共分为五种模式34,分别是普通模式,插入模式和底线命令模式(Last line mode)。 这三种模式的作用分别是:
- 普通模式(normal mode):常用基本命令,在此模式输入不会识别为输入字符,而是命令控制,如删除字符x,复制y等;
- 插入模式(Insert mode):正常的文本输入模式。
- 命令模式(command mode):可以通过单个或者多个字符进行命令控制,命令非常多。
- 视图模式(visual mode): 命令模式下,v/ctrl+v进入选择模式。(v 字符,V 行)可通过移动光标(用 方向键 或 hjkl )选中多字符或者多行。
- 替换模式(replace mode)替换模式,R进入该模式,输入字符替换当前光标后字符。
2. vim命令键盘图
3. 常用命令模式命令
我认为vim最吸引我的就是简单有效,仅仅通过按键就可以快速的完成编辑工作。vim理想的使用模式就是用一次按键移动,用另一次按键执行
5。vim的命令实在有点多,目前也没有理出好的头绪,就想把常用的内容整理记录一下。
3.1 光标移动
该部分参考博客
1. 移动键
h j k l
说明: 该命令可在前面增加数字,表示重复多次.
4l
向后移动四个字符4j
向下移动4行
为什么用 HJKL 键作为方向键?
当 Bill Joy 创建 Vi 文本编辑器时,他使用的机器机器是 ADM-3A 终端机,这机器就是把 HJKL 键作为方向键。自然而然,Bill Joy 也就用了相同的按键了。
2. 行内移动
- 按照单词前后移动
w b e W B E
w
表示按照单词向后移动b
表示按照单词向前移动e
表示按照单词向后移动,但是定位到单词最后一个字符前- 相应的大写字母表示忽略标点符号的影响
- 说明: 该命令可在前面增加数字,表示重复多次.
- 按照字符查找
f F t T
fa
表示向右查找字符a
,定位到字符a
前ta
表示向右查找字符a
,定位到字符a
前一个字符前- 相应大写表示反向查找;
;
表示重复执行命令,
表示反向执行命令- 说明: 该命令可在前面增加数字,表示重复多次.
- 定位到行首行尾
^ 0 $ - + ( )|
^, 0
都是定位到行首$
定位到行末,可以使用数字表示定位到后面多行的末尾
A I
A I
是定位插入命令。
3. 行间移动
- 定位到某行
:123
gg G
文首 文末H M L
定位到屏幕顶、中、底zz
将光标所在行移动到屏幕中央;zt
移动到屏幕顶部;zb
移动到屏幕底部{ }
段首段尾ctrl f/b
上下翻页ctrl e/y
上下滚动
4. 标记定位
ma
表示标记该行为a;包括第几列的信息,都在标记a里。‘a
表示跳转到标记a处;会跳转到标记a的行首。单引号’- `a表示跳转到标记a处;会跳转到标记a的行,包括第几列。更精准。按键在波浪号处。
:marks
底线命令可以查看标记信息ctrl o/i
移动到前/后光标所在处
5. 查找定位
# *
前后查找当前光标所在处的单词/hello
向后查找关键词hello,回车就到了后面第一个hello处。?hello
向前查找关键词helloN/n
向前向后查找
3.2 复制剪切粘贴
复制粘贴是常用的命令6。其粘贴板的机理如下:
vim 有 12 个粘贴板,分别是 0、1、2、…、9、a、“、+;用 :reg 命令可以查看各个粘贴板里的内容。其中:
- " 号粘贴板为临时粘贴板,直接按 y 就复制到这个粘贴板中了,直接按 p 就粘贴这个粘贴板中的内容;
- + 号粘贴板是系统粘贴板,用 "+y 将内容复制到该粘贴板后可以使用 ctrl+v 将其粘贴到其他文档(如 firefox、gedit)中,同理,要把在其他地方用 ctrl+c 或右键复制的内容复制到 vim 中,需要在正常模式下按 "+p;
要将 vim 的内容复制到某个粘贴板,需要先进入命令模式,选择要复制的内容(选择模式选择),然后按 "Ny(注意带引号)完成复制,其中 N 为粘贴板号,例如要把内容复制到粘贴板 a,选中内容后按 "ay 就可以了。如命令 "5p 会将 5 号粘贴板里的内容粘贴进来,也可以按 "+p 将系统全局粘贴板里的内容粘贴进来,或者直接按p将临时粘贴板中的内容粘贴进来。
常用复制剪切粘贴命令
注意:
vim粘贴复制刚开始用的时候有个让人头疼的就是寄存器,有时候傻傻分不清楚。使用命令行
:reg
可以查看寄存器的情况,然后使用"
指定想要的内容对应的寄存器操作即可。用几次琢磨一下,再结合官方文档等的说明,就比较清楚了。
复制:
yy 复制游标所在行整行
2yy/y2y 复制 2 行
y^ 复制至行首,或y0
y$ 复制至行尾
yw 复制一个word
y2w 复制两个word
yG 复制至文件尾
y1G 复制至文件首
剪切:
dd 剪切游标所在行整行
d^ 剪切至行首,或d0
d$ 剪切至行尾
dw 剪切一个word
dG 剪切至文件尾
粘贴:
p 粘贴至游标后(下)
P 粘贴至游标前(上)
要使用 系统粘贴板 的内容,也可以直接在命令模式按 Shift + Inset 进行粘贴。
4. 常用底线命令行模式命令
4.1 设置行号
# 显示行号:
:set number
:set nu
# 隐藏行号:
:set nonumber
:set nonu
该命令对当前vim有用,如果想使vim默认显示行号则需要配置vimrc文件7,
/etc/vimrc 是系统范围的初始化配置
~/.vimrc 个人的vim初始化配置
我们在配置文件输入set number 或者 set nu 就可以了
4.1 撤销
u
/<C-r>
撤销和回撤
在命令行模式下用 :undo 或 :u 命令可以撤销最近一次操作。
5. vim配置
5.1 vim光标样式设置
三种模式下光标样式区分8:
"Mode Settings
let &t_SI.="\e[5 q" "SI = INSERT mode
let &t_SR.="\e[4 q" "SR = REPLACE mode
let &t_EI.="\e[1 q" "EI = NORMAL mode (ELSE)
"Cursor settings:
" 1 -> blinking block
" 2 -> solid block
" 3 -> blinking underscore
" 4 -> solid underscore
" 5 -> blinking vertical bar
" 6 -> solid vertical bar
"let &t_SI = "\<Esc>]50;CursorShape=1\x7"
"let &t_SR = "\<Esc>]50;CursorShape=2\x7"
"let &t_EI = "\<Esc>]50;CursorShape=0\x7"
5.2 键修改
键是vim中最常用的按键之一,但是位置不太友好。一种方法是使用vim的重映射用jj
等按键替换,但是这种和日常的操作还是不一致。因此我是用了第二种:利用PowerToys
软件直接将<Caps>
键和<Esc>
键互换,这样就和日常的操作一致了,也的确挺好用的,就是刚开始的一段时间得改一下习惯了。
5.3 插件管理
插件管理有很多,我使用Vundle,具体使用可以参考博客9vim插件管理器:Vundle的介绍及安装(很全)
关键步骤:
- 安装vundle:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
- 在
.vimrc
中配置
此处暂略 - 安装插件
vim中运行命令
:PluginInstall
- 移除不需要的插件
编辑.vimrc文件移除的你要移除的插件所对应的plugin那一行。
保存退出当前的vim
重新打开vim,输入命令BundleClean。
- 其他常用命令
更新插件BundleUpdate
列出所有插件BundleList
查找插件BundleSearch
相关资料
菜鸟教程:Linux vi/vim
vim环境设置(应用于python编程)
Vim - 配置IDE一般的python环境