跳到主要内容

vim基础

vim的官方网站:https://www.vim.org

附练习文档:vim教程和练习文档.txt

移动光标

h左、j下、k上、l右

插入内容

i 在光标的前边进入插入模式

I 在光标所在行的行首进入插入模式

a 在光标的后边进入插入模式

A 在光标所在行的行尾进入插入模式

o 在光标所在行的下方插入空行并进入插入模式

O 在光标所在行的上方插入空行并进入插入模式

s 删除光标指定的字符并进入插入模式

S 将光标所在行清除并进入插入模式

退出vim

第一种(保存修改并退出),这里教大家两招:

ZZ(两个大写字母Z,也就是Shift+z+z)

:wq(这是一个组合命令,如果是 :w 表示保存,而 :q 表示退出)

第二种(直接退出)则要区分情况:

如果你打开文件只是看看,并不做任何改动,那么直接输入 :q 即可

如果对文件动过手脚,但不希望保存(放弃修改)而直接退出,则需要再后边加上一个感叹号 :q!

删除字符

motion :

0 将光标定位到行首的位置

^ 同上

$ 将光标定位到行尾的位置

b 将光标定位到光标所在单词的起始处

e 将光标定位到光标所在单词的结尾处

w 将光标定位到下一个单词的起始处(注意,是光标所在单词的下一个单词噢^_^)

gg 将光标定位到文件的开头

G 将光标定位到文件的末尾

delete :d+motion

d0 删除光标从当前位置(不包含)到该行行首的所有字符

d^ 同上

d$ 删除从光标当前位置(包含)到该行行尾的所有字符

db 删除从光标当前位置(不包含)到单词起始处的所有字符

de 删除从光标当前位置(包含)到单词结尾处的所有字符

dw 删除从光标当前位置(包含)到下个单词起始处的所有字符

dh 删除光标前面一个字符

dl 删除光标指定的字符

dj 删除光标所在行以及下一行的所有字符

dk 删除光标所在行以及上一行的所有字符

dd 删除光标所在行的所有字符

dgg 删除光标所在行(包含)到文件开头的所有字符

dG 删除光标所在行(包含)到文件末尾的所有字符

数字的奥义

3h - 光标向左移动3格

3j - 光标向下移动3行

3w - 将光标跳到三个单词后的开始位置

......

d3h - 删除光标前的 3 个字符

d3j - 删除光标所在行以及下面 3 行的所有字符

d3w - 向后删除当前光标到后面第三个单词前的所有字符

......

撤销、恢复

1.小写的 u 表示撤销最后一次修改;而大写的 U 表示撤销对整行的修改。

2.Ctrl + r 快捷键可以恢复撤销的内容!

#粘贴命令、替换命令、替换模式和修改命令

1.在 VIM 下使用删除命令,并不会直接将你的东西删掉,而是放到 VIM 的寄存器中。

p:将最后一次删除的内容粘贴到光标之后。(大写的 P 则是粘贴到光标之前)

注意:如果你需要粘贴的是整行为单位,那么 p 命令将在光标的下一行开始粘贴;如果你拷贝的是非整行的局部字符串,那么 p 命令将在光标后开始粘贴。

2.拷贝:

(1)我们用的最多的还是拷贝粘贴,VIM 用 y 命令实现拷贝。语法跟删除的 d 命令一样:y motion

(2)其中的 motion 同样是用来表示操作范围的指令,即 yy 表示拷贝当前行,3yy 则表示拷贝 3 行;y$ 表示从光标所在的位置拷贝到行尾的所有字符;yG 则表示从光标所在行拷贝到文件末尾行的所有字符。

(3)拷贝完成之后同样使用 p 命令进行粘贴

3.替换

大写R - 输入字符可以连续替换光标及其后边的内容

注:退格键(Backspace)可向左恢复原来的内容

4.修改

c :c+[number]+motion - 先删除所选范围的内容再插入

按键 含义

c0 删除光标从当前位置(不包含)到该行行首的所有字符,并进入插入模式

c^ 同上

c$ 删除从光标当前位置(包含)到该行行尾的所有字符,并进入插入模式

cb 删除从光标当前位置(不包含)到单词起始处的所有字符,并进入插入模式

ce 删除从光标当前位置(包含)到单词结尾处的所有字符,并进入插入模式

cw 删除从光标当前位置(包含)到下个单词起始处的所有字符,并进入插入模式

ch 删除光标前边一个字符,并进入插入模式

cl 删除光标指定的字符,并进入插入模式

cj 删除光标所在行以及下一行的所有字符,并在光标下一行进入插入模式

ck 删除光标所在行以及上一行的所有字符,并在光标下一行进入插入模式

cc 删除光标所在行的字符,并进入插入模式

文件信息、跳转、定位括号和缩进

1.文件信息

ctrl + g : 查看文件名,文件状态,文件的总行数,以及光标所在的相对位置。

2.跳转

(1)行号+G

(2):行号

3.定位括号

将光标移动到 (),[],{},中的任何一半括号上,按下 % 键,便可看到此时光标已经跳转到另外一半的括号上了。

4.缩进

(1)普通模式下,shift+>>缩进,shift+<<反缩进

(2)多行缩进:先按v进入可视模式,hjkl选择范围,再缩进。

(3)设置缩进字符::set shiftwidth=10 - 缩进10字符

搜索和替换

1.搜索

普通模式下:

(1)/目标

n - 向后查找 | N - 向前查找

(2)?目标

n - 向前查找 | N - 向后查找

注:搜索. * [ ] ^ % / ? ~ 和 $ 需要加转义符\

2.替换

(1)将光标定位到目标位置,:s/old/new

(2)替换所有字符::%s/old/new/g

(3)替换前询问意见::%s/old/new/gc

y 表示替换

n 表示不替换

a 表示替换所有

q 表示放弃替换

(4)替换第n行到第m行之间的字符::n,ms/old/new/g

执行shell命令、文件另存为、合并文件和打开多个文件

(1)执行shell命令

:!shell命令 - 此后 VIM 将临时跳转回 shell,并执行命令。再次按下 Enter 键回到 VIM。

例::!ls /home

(2)文件另存为

:w newfile - 该命令会以newfile为文件名拷贝保存整个当前文件(旧文件保留不变)

(3)局部内容另存为

先按v进入可视模式,hjkl选中内容后,再输入另存命令

(4)文件合并

:r filename - 将指定文件的内容读取并置入到光标的下一行中。

(5)打开多个文件

vim -o filename1 filename2 ... 垂直并排

vim -O filename1 filename2 ... 水平并排

切换文件:ctrl+w+w 或 ctrl+w+方向(箭头或hjkl)

退出所有文件::qa、qa!、wqa