Vim学习

Vim模式

Vim 具有 6 种基本模式和 5 种派生模式,先学三种

  • 普通模式(Normal mode)

在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是 Vim 启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。

  • 插入模式(Insert mode)

在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。

在插入模式中,可以按 ESC 键回到普通模式。

  • 命令行模式(Command line mode)

在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(:键),搜索(/?键)或者过滤命令(!键)。在命令执行之后,Vim 返回到命令行模式之前的模式,通常是普通模式。

编辑基本操作

  • Esc键进入普通模式

  • 命令行模式中输入 wq 回车后保存并退出 vim

  • : 进入命令行模式,输入 w 回车,保存文档,输入 :w <filename> 可以将文档另存为其他文件名或存到其它路径下。

  • 命令行模式后输入 :e <filepath> 可以打开相应文件

  • 按下 i 键进入插入模式

  • 普通模式下

    按键 说明
    h
    l 右(小写 L)
    j
    k
    w 移动到下一个单词
    b 移动到上一个单词
    命令 说明
    i 在当前光标处进行编辑
    I 在行首插入
    A 在行末插入
    a 在光标后插入编辑
    o 在当前行后插入一个新行
    O 在当前行前插入一个新行
    cw 替换从光标所在位置后到一个单词结尾的字符

退出vim

从普通模式输入 : 进入命令行模式,输入 wq 回车,保存并退出编辑。(先掌握这个)

以下为其它几种退出方式:

命令 说明
:q! 强制退出,不保存
:q 退出
:wq! 强制保存并退出
:w <文件路径> 另存为
:saveas 文件路径 另存为
:x 保存并退出
:wq 保存并退出

普通模式下退出 vim

普通模式下按下 Shift+zz 即可保存退出 vim。

删除文本

进入普通模式,使用下列命令可以进行文本快速删除:

命令 说明
x 删除游标所在的字符
X 删除游标所在前一个字符
Delete x
dd 删除整行
dw 删除一个单词(不适用中文)
d$D 删除至行尾
d^ 删除至行首
dG 删除到文档结尾处
d1G 删至文档首部

除此之外,可以在命令之前加上数字,表示一次删除多行,如:

2dd 表示一次删除 2 行

d2w表示删两个单词

vim 重复命令

  • 普通模式下 .(小数点)表示重复上一次的命令操作
  • 普通模式输入 N<command>,N 表示重复后面的次数,表示重复几次命令

游标的快速跳转

行间跳转

命令 说明
nG(n Shift+g) / ngg 游标移动到第 n 行 (如果默认没有显示行号,请先进入命令模式,输入 :set nu 以显示行号)
gg 游标移动到到第一行
G(Shift+g) 到最后一行

小技巧:你在完成依次跳转后,可以使用 Ctrl+o 快速回到上一次(跳转前)光标所在位置

行内跳转

普通模式下使用下列命令在行内按照单词为单位进行跳转:

命令 说明
w 到下一个单词的开头
e 到当前单词的结尾
b 到前一个单词的开头
ge 到前一个单词的结尾
0^ 到行头
$ 到行尾
f<字母> 向后搜索<字母>并跳转到第一个匹配的位置(非常实用)
F<字母> 向前搜索<字母>并跳转到第一个匹配的位置
t<字母> 向后搜索<字母>并跳转到第一个匹配位置之前的一个字母(不常用)
T<字母> 向前搜索<字母>并跳转到第一个匹配位置之后的一个字母(不常用)

复制粘贴和剪切

复制及粘贴文本

  • 普通模式中使用 y 复制
  • 普通模式中,yy 复制游标所在的整行(3yy 表示复制 3 行)
  • 普通模式中,y^ 复制至行首,或 y0。不含光标所在处字符。
  • 普通模式中,y$ 复制至行尾。含光标所在处字符。
  • 普通模式中,yw 复制一个单词。
  • 普通模式中,y2w 复制两个单词。
  • 普通模式中,yG 复制至文本末。
  • 普通模式中,y1G 复制至文本开头。
  • 普通模式中使用 p 粘贴
  • 普通模式中,p(小写)代表粘贴至光标后(下)
  • 普通模式中,P(大写)代表粘贴至光标前(上)

剪切及粘贴

其实 dd 删除命令就是剪切,每次 dd 删除文档内容后,便可以使用 p 来粘贴,也这一点可以实现一个很爽快的功能——交换上下行。

ddp,就这么简单,即实现了快速交换光标所在行与它下面的行。

Vim 查找替换

字符的替换及撤销(Undo 操作)

替换和撤销(Undo)命令

替换和 Undo 命令都是针对普通模式下的操作:

命令 说明
r+<待替换字母> 将游标所在字母替换为指定字母
R 连续替换,直到按下 Esc
cc 替换整行,即删除游标所在行,并进入插入模式
cw 替换一个单词,即删除一个单词,并进入插入模式
C(大写) 替换游标以后至行末
~ 反转游标所在字母大小写
{n}u 撤销一次或 n 次操作
U(大写) 撤销当前行的所有修改
Ctrl+r redo,即撤销 undo 的操作

快速缩进

  • 普通模式下输入 >> 整行将向右缩进(用于格式化代码)
  • 普通模式下输入 << 整行向左回退
  • 普通模式下输入 : 进入命令行模式下对 shiftwidth 值进行设置可以控制缩进和回退的字符数

获取目前的设定值:

:set shiftwidth?

设置缩进为 4 个字符:

:set shiftwidth=4
  • set ts=4设置tab缩进为4格

调整文本位置

命令行模式下输入 :ce(center)命令使本行内容居中:

:ce

命令行模式下输入 :ri(right)命令使本行文本靠右:

:ri

命令行模式下输入 le(left)命令使本行内容靠左:

:le

查找

快速查找

普通模式下输入 / 然后键入需要查找的字符串,按回车后就会进行查找。?/ 功能相同,只不过 ? 是向上而 / 是向下查找。

进入查找之后,输入 nN 可以继续查找。n 是查找下一个内容,N 查找上一个内容。

命令行模式下输入 noh 然后回车即可取消搜索

高级查找

  • 普通模式下输入 \* 寻找游标所在处的单词
  • 普通模式下输入 \# 同上,但 \# 是向前(上)找,\* 则是向后(下)找
  • 普通模式下输入 g\*\*,但部分符合该单词即可
  • 普通模式下输入 g\#\#,但部分符合该单词即可

功能设置

  • 命令行模式下输入 : set cindent(cin) 设置 C 语言风格缩进

  • 命令行模式下输入 :set 或者 :se 显示所有修改过的配置

  • 命令行模式下输入 :set autoindent(ai) 设置自动缩进

  • :set nu(显示行数)

posted @ 2022-06-15 21:41  繁华丶人间  阅读(33)  评论(0编辑  收藏  举报