VIM常用操作

笔记

Posted by Jingming on November 23, 2020

VIM三种模式:命令模式、输入模式、底线命令模式。还有一种可见模式,鼠标进行选中文本。

一、命令模式

  • 移动光标
命令 说明
0 到行头
$ 到行尾
G 到文件最后一行
gg 到文件第一行
H 到当前屏幕第一行
M 到当前屏幕中间一行
L 到当前屏幕最后一行
/单词 到匹配的单词处,之后按 n 到下一个匹配的单词处
ngg 或者 :n回车 到第n行
w 到下个单词
b 返回上一个单词
gd 移动到局部变量的定义处
gD 移动到全局变量的定义处(仅限于当前文件)
  • 复制、删除、粘贴
命令 说明
shift v + 移动键 选中文本
v + e 选中单词
viw 选中单词
ciw 剪切单词
y 复制; 可以之后输入数字,表示复制多少次
yy 复制一行
gg ggyG 全部复制
d 剪切
dd 删除(剪切)一整行
ndd 删除(剪切)光标所在向下n行
daw 删除光标所在处的单词
gg dG 删除全部
p 粘贴
x 删除当前光标所在处的字符
d$ 删除这一行当前字符后的内容
  • 撤销、还原
命令 说明
u 取消上次操作
ctrl r 重做上一个操作
  • 进入其他模式
命令 说明
i 进入输入模式
进入底线命令模式
  • 格式调整
命令 说明
shift v + 方向键选中文本 + = 调整缩进格式

二、输入模式

| 命令 | 说明 | |:—|:—| |按ESC| 退出输入模式,进入命令模式| | i | 进入当前光标处进行输入 | | I | 进入当前光标后面的第一个非空格处开始输入 | | a | 到当前行的开头进行输入(在命令模式下输入a) | | A | 到当前行的最后进行输入 | | o | 到当前行的下一行开头进行输入 | | O | 到当前行的上一行开头进行输入 |

  • 多行修改

Ctrl-V + 方向键

三、底线命令模式

按回车执行命令,每次结束后返回命令模式。

命令 说明
:q 退出文件
:w 保存文件
:wq 保存并退出文件
:q! 强退
:w 文件名 另存为
:set nu 显示行号
:set nonu 取消行号显示
:e 重新载入当前文件
:e! 进行强制加载(放弃当前文件修改)

分屏

命令 说明
Ctrl+w s 上下分屏
Ctrl+w v 左右分屏
Ctrl+w 方向键 屏幕切换
Ctrl+w q 退出当前分屏
Ctrl+w o 关闭当前屏幕外其他屏幕
Ctrl+w HJKL 注意是大写要加shift,往该方向扩充到全部,有屏幕切换的效果,也就是
Ctrl+w x 交换上下左右窗口
Ctrl+w = 上下左右窗口变相等大小

四、~/.vimrc配置

set nu

syntax on 语法高亮

参考:https://github.com/skywind3000/awesome-cheatsheets/blob/master/editors/vim.txt

五、插件使用

Vim可以自己下载插件,或者使用管理插件下载的插件来下载插件。

下载插件的扩展功能:

  • 文件目录结构查看

下载nerdtree

  • 函数定义跳转

VIM外下载ctags(exuberant ctags),然后在项目根目录下输入ctages -R . 生成tags文件夹, 最后,.~/.vimrc 中通过以下命令显式地指定tag文件路径: :set tags+=tags文件路径

这样,在tags所在目录打开VIM,就可以使用ctrl + ] 跳转到代码定义,使用ctrl + o返回之前文件。

六、注意事项

  • VIM之间拷贝文件内容

如果要使用y复制和p粘贴,应该使用分屏,而不是打开两个vim

  • Swap文件理解

一个VIM进程打开一个文件,如果编辑了,那么会生成一个swap文件,意思是保存编辑所做的修改(diff)。

如果正常关闭文件,则该次生成的swap文件消失。

如果此次文件非正常关闭,那么swap存在;又或者,在未关闭文件的时候,又启动了一个新VIM进程打开该文件。

此时VIM打开时候会注意到swap文件是存在的,因此会要求: (1)只读方式打开,说白了,就是此次打开不会影响其他文件,也关心其他文件的修改; (2)仍要编辑,说白了,不关心swap里面的变化,此时如果是两个同时编辑文件时候会有风险(编辑最终结果不确定); (3)恢复,此法最常用,也就是尝试将swap的diff同步到此次打开的文件 (4)退出