Vim
控制台运行 vimtutor 这是 vim 官方实操教程 三种模式:
一般模式
编辑模式
命令行模式
光标的移动
单词级
w or W 向移动到下一单词开头 ★★
b or B 向左移动到单词开头 ★★
块级
gg
文档第一行,相当于1G ★★★G
文档最后一行,<n>G
移动到你n行 ★★0
或home
到行首(第1列) ★★$
或end
到行尾 ★:<N>
or<n>gg
跳转到第N行 ★★★ctrl-f
屏幕向下移动一页ctrl-b
屏幕向上移动一页<n>j
或者<n>↓
,向下移动n行,同理,也可以实现左右移动 ★★★v
或者V
,字符选择或者行选择 ★★★ctrl-v
长方形选择,牛逼了 ★★★
注意,所有命令都可以加一个数字N,表示对后面的命令执行N次,比如
<n>G
表示移动到第n行。
高级移动
'.
跳到最后修改的那一行gd
跳到当前变量在当前文件的定义处,其实是跳转到当前变量在此文件中第一次出现的地方,不过一般来说,第一次出现的地方也就是变量定义的地方 ★★★ma
在当前位置做标记,用字母a标记当前光标所在位置,这里a可以是任意字母`a
跳到标记a处 ★★`` 跳到上一次光标所在处,相当有用 ★★★
打开文件、查找内容
vim中打开文件
:e <filename>
,在vim中打开名为filename的文件,如果没有,则创建;
文档内查找
*
向后查找光标当前所在单词#
向前查找光标当前所在单词 ★★★/<search>
向后查找指定字符?<search>
向后查找指定字符串n
继续查找下一个 ★★★N
继续查找上一个
匹配查找
vim 中可以使用%
对 (
和 )
,[
和 ]
,{
和 }
进行匹配查找,当光标位于其中一个 符号上时,按下%
,光标会跳到与之匹配的另外一个符号上。
括号匹配,程序员必备
文档的修改与保存
插入
a
当前字符后插入 ★★★I
行首插入A
行尾插入o
在下一行插入 ★★★O
在上一行插入 ★★★ctrl-p
插入模式下进行单词补齐,比如有一个变量为fifth_test_day
,那么你只需要敲入部分名之后,就可以按下ctrl-p
自动补全了。★★★
删除
x
删除当前字符X
向前删除一个字符,相当于键盘的Back Space
。dd
删除当前行,并将删除内容保存在vim剪贴板ndd
表示删除光标所在的向下n行。★★dw
删除光标所在位置到下个字的第一个字母daw
删除一个单词,包括词尾空格,实用,不用将光标移动到单词第一个字母,aw
表示a word
d<X>
删除指定内容,保存在剪贴板c<X>
删除指定内容,保存在剪贴板,同时进入insert模式
说明,部分是对操作内容的描述,比如,删除一个单词,可以dw或者de,要复制当前位置到行尾内容,可以输入
y$
,要删除后面3个字符并插入,就输入c3l
。
复制
yy
复制当前行到vim剪贴板nyy
复制光标向下n行 ★★★y<X>
复制指定内容到剪贴板
粘贴
p
当前位置后粘贴 ★★★P
在当前位置前粘贴
合并
J
当前行与下一行合并
替换
r<X>
将当前字符替换为X ★★★:%s/search>/<replace>/
查找search内容并替换为replace内容,正则表达来替换,这个命令可以消除所有行位多余的空格::%s/\s\+$//
★★★<n1>,<n2>s/word1/word2/gc
n1/n2都是数字,在n1
行和n2
行之间寻找word1
,替换为word2
。c
代表confirm
,替换前需要你确认,不加就默认全部替换。n2
用$
表示时,表示搜索到最后一行。★★★
撤销、重做
u
撤销 ★★★ctrl-r
重做 ★★★.
重复前一个操作的意思 ★★★
保存文件
:wq
orZZ
保存并推出:q!
orZQ
强制推出,不保存saveas <newfilename>
文件另存为
编辑
ctrl-n
Vim自带的补全(按照全文已有输入)★★★
多窗口
:sp
切割窗口ctrl-w-j
或者ctrl-w-↓
跳转窗口:q
或者ctrl-w-q
关闭当前窗口
设置vim
为了让vim使用起来更加得心应手,先做一些简单的配置。
编辑VIM配置文件,可能一开始没有这个文件,不过没关系,直接vi ~/.vimrc
保存这个文件即可。
简单设置vim:
关于vim的配置,还可以看强大的vim配置文件,让编程更随意
重复上一次命令
vim有一个特殊的命令.
,你可以用它重复执行上一个命令。我感觉有点像EXCEL中的F4
命令。
缩进
>>
向右缩进当前行<<
向左缩进当前行
分屏与标签页
分屏方式
:split
缩写sp
orctrl-w s
上下分屏:vsplit
缩写vs
orctrl-w v
左右分屏:diffsplit
缩写:diffs
diff模式打开一个分屏,后面可以加上{filename}
窗口跳转
ctrl-w w
激活下一个窗口ctrl-w j
激活下方窗口ctrl-w k
激活上方窗口ctrl-w h
激活左侧窗口ctrl-w l
激活右侧窗口
插件
采用vim-plug安装、升级、管理插件。
添加 vim-plug 的配置到 ~/.vimrc
中:
配置以
call plug#begin()
开始插件列表,以 Plug 命令开头
用 call plug#end() 结束,以初始化插件系统
这将会自动开启
filetype plugin indent on
和syntax enable
,如果不希望这 样,你可以在该配置后重置你的设置,例如:filetype indent off, syntax off
安装vim-plug
先cd ~
,然后创建mkdir .vim
,接着执行如下命令:
会在~/.vim文件夹下创建autoload文件夹,同时将下载的plug.vim文件归档到该文件夹下。 下面是官方对~/.vimrc
文件配置的一个Example:
vim-plug常用命令
常用命令
怎么使用这些命令呢?
直接vim
之后,进入冒号的命令模式,输入上述命令就可以执行命令了。
FAQ
Q1:配置VIM,安装vim-plug插件之后,想要生效通过source ~/.vimrc
命令生效配置,就会报错:E492: Not an editor command: Plug
source ~/.vimrc
命令生效配置,就会报错:E492: Not an editor command: Plug
A:- error while running “source .vimrc” 原因是,我们.vimrc
本身并不是shell文件,而source ~/.vimrc
等价于./.vimrc
,当然后校验shell语法了。看了StackOverflow上的解答才清楚的。
可以通过输入
$vim
直接进入vim的命令模式,执行下面命令注意,我这里
.vimrc
的位置就是位于~
目录下,你可以:source /path/to/.vimrc
或者编辑完
.vimrc
文件,直接:
Q2:从Win上复制文件时,常常因为换行符出错:
A: linux的文件换行符为\n
,但windows却非要把\r\n
作为换行符,所以,vim在解析从windows拷贝到linux的的vimrc时,因为遇到无法解析的\r,所以报错。
参考
Last updated