vim的使用教程(常用命令)
vim 的使用主要分为vim的配置和四大模式的掌握
一、vim的配置
vim的配置主要通过vimrc配置文件实现,文件的的存放位置:
系统 vimrc 文件: “
V
I
M
/
v
i
m
r
c
"
用
户
v
i
m
r
c
文
件
:
"
VIM/vimrc" 用户 vimrc 文件: "
VIM/vimrc"用户vimrc文件:"HOME/.vimrc”
用户 exrc 文件: “
H
O
M
E
/
.
e
x
r
c
"
系
统
g
v
i
m
r
c
文
件
:
"
HOME/.exrc" 系统 gvimrc 文件: "
HOME/.exrc"系统gvimrc文件:"VIM/gvimrc”
用户 gvimrc 文件: “
H
O
M
E
/
.
g
v
i
m
r
c
"
系
统
菜
单
文
件
:
"
HOME/.gvimrc" 系统菜单文件: "
HOME/.gvimrc"系统菜单文件:"VIMRUNTIME/menu.vim”
$VIM 预设值: “/usr/share/vim”
在用户家目录(/home/用户名)下面有一个.vimrc
/etc下面也有一个vimrc
一般只改用户家目录下面的 .vimrc 此配置文件只针对用户有效
更改后需使用su - 用户名 来使配置生效(例如 su - zhang3)
二、vim的四大模式
1、命令模式(command mode)
vim打开后默认就是命令模式,此时的输入都被当作命令来解析
命令:
-
yy: 复制光标所在的一行
-
yny:复制光标处起的n行
-
n,my: 复制n和m行之间的内容
-
p:粘贴
-
0
→ 数字零,到行头 -
$
→ 到本行行尾 -
gg:跳到文件首
-
shitf + g:跳到行文件尾
-
^
到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等) -
g_
到本行最后一个不是blank字符的位置。 -
w
到下一个单词的开头。 -
e
到下一个单词的结尾。 -
fa
到下一个为a的字符处,你也可以fs到下一个为s的字符。 -
t,
到逗号前的第一个字符。逗号可以变成其它字符。eg:dt" 删除从光标处到”的字符,可以结合其他命令使用
-
3fa
在当前行查找第三个出现的a。 -
F
和T
和f
和t
一样,只不过是相反方向。 -
%
: 匹配括号移动,包括(
,{
,[
. (陈皓注:你需要把光标先移到括号上) -
*
和#
: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个) -
gU
(变大写) -
gu
(变小写) -
.
(小数点) 可以重复上一次的命令 -
u 撤销上一次的命令
-
N → 重复某个命令N次
-
ctrl f 相当于page down
-
ctrl b 相当于page up
-
ggVG 全选 这个牛逼,其实是进入可视模式
2、末行模式(last line mode)
在命令模式下按下shitf + :即可进入末行模式,末行模式下可以执行一些指令,如保存、退出、查找、替换等、在命令前加入!,即可在末行模式下执行shell命令
命令:
-
/text 即可查找包含text的文本,通过n/N可以向下或者向上查找
-
%s/text/text1/g 即可将全局text替换为text1
-
:saveas <path/to/file>
→ 另存为<path/to/file>
-
vsplit 垂直分页
-
split 水平分页
-
set 查看vim的配置,同时可以直接设置vim的配置,例如直接输入 set nu即可显示行号
-
bn
和bp
→ 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(我喜欢使用:n到下一个文件) -
e <path/to/file>` → 打开一个文件
3、插入模式(insert mode)
在命令模式下,执行以下命令,进入插入模式,即可进行正常的文本编辑
-
按 i 在光标前插入
-
按 I 在行首插入
-
按 a 在光标后插入
-
按 A 在行末插入
-
按 s 删除光标所在的字符再插入
-
按 S 删除光标所在行再插入
-
按 o 在当前行之下新建行
-
按 O 在当前行之上新建行
命令:
- ctrl p 自动补全
4、可视模式(visual mode)
在命令模式下,执行以下命令,即可进入可视模式,该模式下可以执行文件的选择,然后对选中区域的文本,执行删除、复制、大小写转换等,这三种模式可以随意切换,实现不同的选择粒度
- v 逐个字符选择文本行文本
- V 逐行选择文本块文本
- ctrl + v 按照块的方式选择文本
命令:(掌握)
-
f{char}
来跳转到某个字符上面 -
d
删除选中文本 -
c
修改选中文本 -
y 复制选中文本
-
r
替换选中文本 -
I
在选中文本前插入 -
A
在选中文本后插入 -
gu
选中区域转为小写 -
gU
选中区域转为大写 -
g~
大小写互调 -
>
向右缩进一个单位 -
<
向左缩进一个单位 -
J
→ 把所有的行连接起来(变成一行) -
<
或>
→ 左右缩进 -
=
→ 自动给缩进 -
块操作,典型的操作:
0 <C-v> <C-d> I-- [ESC]
在选中块前添加–^
→ 到行头<C-v>
→ 开始块操作<C-d>
→ 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)I-- [ESC]
→ I是插入,插入“--
”,按ESC键来为每一行生效。
单击.
重复命令(了解)
选择模式 | 重复效果 |
---|---|
字符文本选择模式(Visual ) | 从当前光标开始,作用范围是上次操作的字符数 |
行文本选择模式(Visual line ) | 从当前行开始,作用范围是上次操作的行数 |
块文本选择模式(Visual Block ) | 从当前光标开始,作用范围是以当前光标为左上端点的上次操作的块范围 |
一旦切换到可视模式以后,选中的区域是由两个端点来界定的(一个在左上角,一个在右下角),我们在默认情况下只可以控制右下角的端点,但是有些时候发现我们需要调整左上角的端点,这时我们可以使用o
按键来在左上角和右下角之间进行切换。
最后,善于使用命令模式下的操作,基本可以不用使用可视模式,例如:
n,m>,就可以将n到m行之间的文本直接右移,配合. 和u可以轻松的重复和撤销命令