VIM 基础 初学者自用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VIM 基础 初学者自用相关的知识,希望对你有一定的参考价值。
VIM有六种模式 (但是常用的就三种 普通,插入,命令行)
?
?
?
普通模式(Normal mode)
???在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。
?
?
??Vim强大的编辑能来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令dd删除当前行,但是第一个"d"的后面可以跟另外的移动命令来代替第二个d,比如用移动到下一行的"j"键就可以删除当前行和下一行。另外还可以指定命令重复次数,2dd(重复dd两次),和dj的效果是一样的。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。
在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按a(append/追加)键或者i(insert/插入)键。?
?
插入模式(Insert mode)
?? 在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。
?? 在插入模式中,可以按ESC键回到普通模式。
??
?
可视模式(Visual mode)
? ?????这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。
?
?
?
选择模式(Select mode)
???这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
?
?
?
命令行模式(Command line mode)
????在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
??
?
?
Ex模式(Ex mode)
???这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令。
?
?
?
?
常用的三种模式
vim 启动进入普通模式 ,普通模式 按i 或者a 都可以进入插入模式,:进入命令行模式。
插入模式 --------> 命令模式
ESC
命令模式 --------> 扩展命令模式
:
扩展命令模式 --------> 命令模式
ESC,enter
?
?
?
vim后面可以加上 你要打开的已存在文件或者不存在需要新建的文件名。
vim XXXX
?
?
?
在普通模式下,
h是左,l右,j下,k上
w移动到下一个带 空格 符号 回车等
?
?
进入插入模式时
i 在当前光标处进行编辑
I 在行首插入
A 在行末插入
a 在光标后插入编辑
o 在当前行后插入一个新行
O 在当前行前插入一个新行
cw 替换从光标所在位置后到一个单词结尾的字符(??有验证 用不了的感觉???)
?
?
?
命令行模式下保存文档或者 保存退出vim
从普通模式输入:进入命令行模式, 在输入w 并回车,保存文档。
或者输入 w 文件名 可以将文档另存为其他文件名,或者存到其他路径下
?
?
?
在命令行模式下 输入wq ,就是保存并退出vim
q!: 强制退出 ,不保存
q : 退出
qw!: 强制保存并退出
w : 另存为
saveas : 另存为
x 保存退出
wq 保存退出
?
?
?
普通模式下退出vim
输入shtift +zz 即可保存提出vim
?
?
在普通模式下删除 vim文本信息
x : 删除游标所在的字符
X : 删除游标所在前一个字符
Delete 同X
dd : 删除整行
dw : 删除一个单词(不适用中文)
d^ : 删除至行首
dG : 删除到文档结尾处
d1G: 删至文档首部
?
另外 在命令前加上数字 可以一次删除多行 :
例如 2dd 可以删除2行
?
?
?
扩展模式:当前vim进程有效
?(1) 行号
显示:set number, 简写为set nu
取消显示:set nonumber, 简写为set nonu
?(2) 忽略字符的大小写
启用:set ic
不忽略:set noic
?(3) 自动缩进
启用:set ai
禁用:set noai
(4) 智能缩进
启用:smartindent 简写 set si
禁用:set nosi
?(5) 高亮搜索
启用:set hlsearch
禁用:set nohlsearch
?(6) 语法高亮
启用:syntax on
禁用:syntax off
?(7) 显示Tab和换行符 ^I 和$显示
启用:set list
禁用:set nolist
?(8) 文件格式
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写: set ff=dos|unix
?(9) 设置文本宽度
启用: set textwidth=65 (vim only)
禁用: set wrapmargin=15
?(10) 设置光标所在行的标识线
启用:set cursorline,简写cul
禁用:set no cursorline
?(11) 复制保留格式
启用: set paste
禁用: set nopaste
?
?
?
VIM配置文件位置:
配置文件:永久有效
全局:/etc/vimrc
个人:~/.vimrc
?
?
?
vi/vim内置帮助
:help
:help topic
Use :q to exit help
?
-----------------分割线------------------------
?
文档编辑
??
?
在普通模式下. (小数点)表示重复上一次命令操作
例如:
普通模式下输入X 删除第一个字符,输入.(小数点)会再次删除一个字符,除此之外也可以重复dd的删除操作
?
?
行间跳转
nG 游标移动到第N行 (补充:进入命令模式 输入:set nu以显示行号)
?
gg 游标移动到第一行
G 移动到最后一行
?
?
?
行内跳转
w 到下一个单词的开头
e 到下一个单词的结尾a
b 到前一个单词的开头
ge 到前一个单词的结尾
0或^ 到行头
$ 到行尾
f<字母>向后搜索<字母>并跳转到第一个匹配的位置(五星)
F<字母>向前搜索<字母>并跳转到第一个匹配的位置
t<字母>向后搜索<字母> 并跳转到第一个匹配位置之前的一个字母(不常用)
T<字母>向前搜索<字母>并跳转到第一个匹配位置之后的第一个字母(不常用)
?
?
复制,粘贴文本
普通模式中使用y复制
?
?
普通模式中
yy复制游标所在的整行(3yy表示复制3行)
y^ 复制至行首.或y0 不含光标所在字符
y$ 复制至行尾。 含光标所在字符
yw 复制一个单词
y2w 复制俩个单词
yG 复制至文本末
y1G 复制至文本开头
?
p 代表粘贴至光标后
P(大写) 代表粘贴至光标前
?
?
替换和撤销命令
针对于普通模式下的操作
?
r+<待替换字母>将游标所在字母替换为指定字母
R 连续替换,直到按下ESC
cc 替换整行,即删除有详细游标所在行,并进入插入模式
cw 替换一个单词,
C(大写) 替游标以后至行末
~ 反转游标所在字母大小写
u{N} 撤销一次或N次操作
U(大写) 撤销当前行的所有修改
Ctrl+r redo ,撤销undo的操作
?
?
快速缩进
在普通模式下 输入
?
15G :跳转到15行
(>>):整行将向右缩进
(<<):整行向左回退
(:)“”进入命令行模式下对shiiftwidth 值进行设置可以控制缩进和回退字符数
?
?
?
shifwidth 命令
shiftwidth命令是指上一节>>命令产生的缩进(可以简写成sw) 普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数 获取目前的设定值
?
?
?
快速查找
普通模式下输入*寻找游标所在处的单词
普通模式下输入#同,但#是向前(上)找,*则是向后(下)找
普通模式下输入g*同* ,但部分符合该单词即可
普通模式下输入g#同# ,但部分符合该单词即可
?
?
重要
ctrl +s 使vim处于假死状态
ctrl +q 使vim假死状态中恢复
以上是关于VIM 基础 初学者自用的主要内容,如果未能解决你的问题,请参考以下文章