3

如何高效使用Vim

 2 years ago
source link: https://codeshellme.github.io/2020/04/vim-use/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Vim 是一款文本编辑器,被称为编辑器之神,非常适合在shell 中编辑代码,熟练的使用Vim,可以让你高效的编写代码。

Vim 是Vi 的增强版,所有的类Unix 系统,都自带这两个工具,这两个工具中使用较多的也是Vim

Vim 中有很多命令,本文并不打算介绍所有的命令,只介绍常用实用的命令,熟练使用这些命令,就可以快速的编写代码。

1,Vim 的三种模式

vim 中有三种模式,分别是普通模式编辑模式可视模式

其实,还有一种模式是命令模式,这里我将命令模式 归入到了普通模式中,并没有单独将命令模式拿出来。其实命令模式 就是在普通模式下输入一个冒号:加一个命令

其中可视模式 又分为行可视列可视,如下:

vim 模式
├── 普通模式
├── 编辑模式:可向文件中输入内容
└── 可视模式
├── 行可视:按行选中某块区域
└── 列可视:按列选中某块区域

它们之间的转换如下所示:

  • vim + 文件名 打开文件进入普通模式
  • 普通模式 输入ioa 进入编辑模式
  • 普通模式 输入Ctrl + v 进入 列可视
  • 普通模式 输入Shift +v 进入 行可视
  • 其它模式输入Esc 返回普通模式

下面介绍每个模式支持的常用命令

2,普通模式

在普通模式下,可以使用下面这些命令,普通模式的命令最多。

2.1,如何进入编辑模式

使用以下命令进入编辑模式

命令 含义
i 在当前光标前位置进入编辑模式
a 在当前光标后位置进入编辑模式
o 在当前光标下一行进入编辑模式

2.2,如何移动光标

使用以下命令移动光标:

命令 含义
k方向键↑ 向上移动,建议使用k
j方向键↓ 向下移动,建议使用j
h方向键← 向左移动,建议使用h
l方向键→ 向右移动,建议使用l
^ 移动到当前行第一个可见字符
0或者Home键 移动到当前行开头
$或者End键 移动到当前行最后
% 在两个匹配的{}[]()<>之间移动
w 向后移动一个单词
b 向前移动一个单词
gg 移动到当前文件的第一行
G 移动到当前文件的最后一行
M 移动到当前文件的中间一行
Ctrl + o 移动到上一次编辑的地方
:+数字N 输入一个:,再输入一个数字,按回车,快速跳到某一行

2.3,如何删除/复制/粘贴

使用以下命令删除/复制/粘贴

命令 含义
dd 删除光标所在的行,并且内容在剪切板
yy 复制光标所在的行,并且内容在剪切板
dw 删除光标所在的单词,并且内容在剪切板
x 删除光标所在的一个字符,并且内容在剪切板
D 删除光标到行末尾所有的内容,并且内容在剪切板
p 粘贴剪切板的内容到光标处

2.4,如何进行搜索

使用以下命令在当前文件中搜索

命令 含义
* 光标停留在某个字符串时,*可以在当前文件中搜索这个字符串
/+字符串+回车 在当前页面搜索这个字符串
n 锁定到下一个匹配的字符串
N 锁定到上一个匹配的字符串
:set hlsearch 让所有匹配的字符串高亮
:set noh 取消字符串高亮

2.5,如何进行分屏

vim 分屏

命令 含义
:vsp + 文件名 横向分屏
:sp + 文件名 竖向分屏
Ctrl + ww 锁定到下一个屏
退出命令 使用退出命令,退出当前屏

2.6,如何退出文件

退出命令如下:

命令 含义
:w 保存当前文件
:q 退出当前文件
:wq 保存退出当前文件
:x 保存退出当前文件,相当于:wq
:qa 退出打开的所有文件
:q! 强制退出(不保存)

2.7,如何进入可视模式

进入可视模式

命令 含义
Shift + v 进入行可视模式
Ctrl + v 进入列可视模式

2.8,其它

命令 含义
u 撤销上一次操作
Ctrl + r 反撤销操作
~ 英文字符大小写转换
:%s/x/y/g 将当前文件中所有的x换成y
数字 + == 用于格式化代码,比如先输入一个999,再输入==,从当前行开始,以下999 行代码都会格式化
:set nu 显示行号
:set nonu 关闭行号
:!command :! 后跟一个linux 命令,可以执行这个linux 命令

3,编辑模式

在编辑模式下可以使用下面命令。

命令 含义
Ctrl + n 搜素下一个变量名,函数自动补全
Ctrl + p 搜索上一个变量名,函数自动补全
Shift + Insert 在当前光标插入系统剪切板的内容

4,行可视模式

行可视模式下可以使用下面命令。

命令 含义
k方向键↑ 向上选中多行
j方向键↓ 向下选中多行
d 删除选中的区域内容,并且内容在剪切板
y 复制选中的区域内容,并且内容在剪切板
p 粘贴剪切板中的内容
> 将选中的区域向右缩进
< 将选中的区域向左缩进

5,列可视模式

列可视模式下可以使用下面命令。

命令 含义
k方向键↑ 向上选中多行
j方向键↓ 向下选中多行
h方向键← 向左选中多列
l方向键→ 向右选中多列
d 删除选中的区域内容,并且内容在剪切板
y 复制选中的区域内容,并且内容在剪切板
p 粘贴剪切板中的内容
> 将选中的区域向右缩进
< 列可视模式下不支持

以上讲到的命令需要多使用才能熟练,所谓孰能生巧。

如果你想配置Vim 插件 的话,建议不需要配置多么花哨复杂的插件,简单实用就好。

注意,在使用Vim 的时候,鼠标基本是没有什么用的,所以这时可以忘记鼠标的存在,只有键盘

另外,vimdiff 命令可以对比多个文件的不同,如下所示,打开两个文件(也可打开多个文件):

vimdiff 1.c 2.c

这里还有一个Vim 小游戏 ——《Vim 大冒险》,很有创意的一个小游戏,可以锻炼使用Vim,感兴趣的可以玩一下。

6,Vim 命令速查表

最后附上两张Vim 命令速查表,自行选择,各取所需。

图一:

图二: PDF版在这里


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK