登录 主页

vim 快捷键

2024-09-06 06:08PM

我会把必须要掌握的命令进行加红

三个模式的切换

默认的就是导航模式。 你在其他模式下,按"ESC"就回到了导航模式。

在导航模式下,输入 a, i, o等,就可以进入到输入模式。

在导航模式下,输入 : 就可以进入到命令模式。

光标移动

k 上

l 右

j 下

h 左

w 下一个词开头 (word)

b 上一个词开头 (backword)

e 下一个单词结尾

g; 跳转到上一次更改的位置

g, 跳转到下一次更改的位置

gk和gj 移动至上一行或下一行

{ 向上移动光标到当前段落的开头

} 向下移动光标到当前段落的结尾

( 向左移动光标到当前句子的开头

) 向右移动到当前句子的结尾

ge 上一个单词结尾

gg 跳转到最后一行

<number> + gg 跳转到number行

// 这个组合用于跳转到文件中的特定行。例如,如果你输入 10gg,光标会移动到第 10 行的开头。
// gg 是一种直接的行导航方式。

:number 跳转到第number行

// 这个命令用于在命令行模式下跳转到特定行。输入 :10 后按 Enter,光标会移动到第 10 行。
// 这种方法允许你在使用其他命令时指定行号,例如 :10d 会删除第 10 行。

<number> + gg 是快速行导航,而 :<number> 是在命令模式下的行操作

% 会匹配到对应的括号,并进行跳转

* 匹配当前光标所在的单词,移动光标到下一个

# 匹配当前光标所在的单词,移动光标到上一个

向下一屏,向上一屏

ctrl + f 向下一屏(f = forward)

ctrl + b 向上一屏(b = backward)

选择多行

shift + v, 然后上下移动

搜索

搜索 some_thing: /some_thing

继续搜索下一个: n

搜索前一个: shift + n

各种快捷导航功能

1.快速打开文件

使用的插件: fuzzy find

ctrl + t, 就会弹出 >file> 这样的标志,然后输入:**/文件名 即可。 文件名是模糊查询。

2.快速打开历史文件

使用的插件: MRU (most recently used files)

ctrl + e 即可。 

3.跳到行首, 行末

  • 跳到当前行的末尾: shift + 4 (意为 $ , 这是正则表达式中 末尾的意思)
  • 跳到当前行的行首: 0

4.快速跳到文件首行 , 尾行

  • gg: 第一行
  • shift + g: 最后一行

5.快速跳到 上一次 / 下一次编辑的地方:

  • 跳到 上一次编辑的地方: g;
  • 跳到 下一次编辑的地方: g,

6.返回上一次/下一次编辑的文件或位置

  • 快速返回上一次编辑的文件: ctrl + o ( o 意为 outer )
  • 快速返回下一次编辑的文件: ctrl + i ( i 意为 inner )

行内光标跳转

f 在当前行中向右搜索并移动光标到指定字符的位置,然后按;跳转到下一个指定字符

eg:当前行是 Hello, world!,输入 fw 将光标移动到 w 的位置

F 在当前行中向左搜索并移动光标到指定字符的位置,然后按;跳转到下一个指定字符

eg:当前行是 Hello, world!,输入 Fw 将光标移动到 w 的位置

模式切换

v 进入 视觉模式,用于选择文本字符。

eg:按 v 后可以移动光标选择想要的字符。

V 进入 视觉行模式,用于选择整行文本。

eg:使用举例:按 V 后可以移动光标选择整行。

i 进入 插入模式,可以在光标当前位置插入文本。

eg:按 i 后可以输入文本,直到按 Esc 返回普通模式。

I 进入 插入模式,并将光标移动到当前行的开头。

eg:按 I 后可以在行首插入文本。

a 进入 插入模式,可以在光标右侧插入文本。

eg:按 a 后可以在光标后输入文本。

A 进入 插入模式,并将光标移动到当前行的末尾。

eg:按 A 后可以在行尾插入文本。

Esc 退出 插入模式 或 视觉模式,返回到普通模式。

eg:在任何插入或视觉模式下按 Esc。

o 在当前行下方新建一行并进入插入模式。

eg:按 o 后可以在新行中输入文本。

O 功能:在当前行上方新建一行并进入插入模式。

eg:按 O 后可以在新行中输入文本。

插入、删除、复制、粘贴

i ( insert ) 在光标前输入

a (append / after ) 在光标后输入

shift + i 在行首增加内容

shift + a 在行末增加内容

在光标下行增加内容

shift + o 在光标上行增加内容

gi 在上一个修改的地方进行插入模式

x 删除当前光标所在的字符

dd 删除当前行

dw 删掉一个单词

shift +v, 然后 x 或者 删掉多行

cc 删除当前行,并进入插入模式

D 删除从当前光标位置至行尾的内容

C 删除从光标当前位置到行位的所有内容,并进入插入模式

yw 复制一个单词

yy 复制当前行

Y 与yy相同,复制当前行

yl 是用于复制光标当前位置的字符

yas 是一个组合命令,表示“复制当前行并进入插入模式”

yap 是一个组合命令,表示“复制当前段落并进入插入模式”

p 在光标后粘贴复制的内容

P 在光标前粘贴复制的内容

gP 复制的内容粘贴到光标前,但会保留原有的格式(即不进行格式调整)

gp 在光标后粘贴复制的内容,同时光标会移动到刚刚粘贴的内容后面

cw 删除光标当前位置到下一个单词的开头的所有字符,并进入插入模式

c$ 删除光标当前位置到当前行末尾的所有内容,并进入插入模式

r 替换当前光标下的字符

dl 删除光标右侧一个字符

d3l 删除光标右侧三个字符

diw:删除光标所在的单词(包括单词前后的空格)

v + <select area> + <action> 是一个组合命令 

v:进入视觉模式,允许你选择文本。

<select area>:使用光标移动键(如方向键、h、j、k、l 等)选择文本区域。

<action>:对选择的文本执行某个操作,

eg:

d:删除选中的文本。

y:复制选中的文本。

c:删除选中的文本并进入插入模式以替换内容。

ctrl + y:向上一行滚动当前窗口一个屏幕的内容,而光标保持在原来的位置

Ctrl + d:向下滚动当前窗口半个屏幕的内容,同时光标保持在当前行的位置

ctrl + e 打开最近打开的文件“Most Recently Used Files”2.针对多个文件进行 查找和替换

分屏

竖屏分割: vs (vertical split缩写)

横屏分割: sp (split缩写)

来回跳换: ctrl + w + w (跳到下一个小窗口), 或者 ctrl + w + <j/k/h/l> (跳到某个方向的小窗口)

only 关闭所有其他窗口,只保留当前窗口

ctrl + w c 关闭当前窗口
    
ctrl + w q 退出当前窗口
    
ctrl + w o 关闭所有其他窗口,只保留当前窗口

缩进

< 减少当前行或选中行的缩进

> 增加当前行或选中行的缩进

= 自动格式化当前行或选中行的缩进,使其符合 Vim 的格式化规则

查找、自动补全、多重复制与粘贴、替换

1.查找

/<pattern> 高亮查找到的内容

/\C<pattern> 在搜索时进行区分大小写的匹配

/\c<pattern> 在搜索时进行不区分大小写的匹配

/\<<pattern>\>  搜索以 pattern 为完整单词的匹配

eg:/\<word\> 只会匹配 "word" 而不会匹配 "sword" 或 "wording"

* 向下查找当前光标下的 word

# 向上查找当前光标下的 word

n 跳转到下一个查找到的内容

2.针对多个文件进行 查找和替换

使用插件: Greplace

  • Gsearch -F '要替换的字符串' . -R --include=*rb 这里的 -F, -R --include=*rb 这些参数,跟grep中的一样。
  • 在返回的结果中,把该替换的替换。
  • Greplace 然后选择 y/a/n 来决定是否替换。
  • 最后, 输入 wa 保存所有文件的改动。

3.自动补全

凡是在 Vim 缓冲区中(近期打开过的文件)的代码,都可以补全。

  • 从上到下选择候选词: ctrl + n
  • 从下到上选择候选词: ctrl + p

4.多重复制与粘贴

Vim中支持。 使用YRShow 插件。

在我的个人配置中, , + a 即可。原始命令: :YRShow 。 在弹出的“复制历史列表”中, 上下移动, 找到合适的后直接按回车即可。

5.替换

:s/old/new/ 当前行替换

g 选项来替换当前行中的所有匹配项

:s/old/new/g

:%s/old/new/g 全文件替换

 :%s:表示在整个文件中执行替换。

 g:表示替换所有匹配项。

如果你希望在替换时进行确认,可以在命令后加上 c 选项:

当前行确认:

:s/foo/bar/gc

全文件确认:

:%s/foo/bar/gc

6.局部替换

  • shift + v 选中若干行
  • :s/原来的/新的字符串

start-end 模式

0y$ 表示拷贝当前行。

0 先到行首

y  从 <start position> 开始拷贝,这里是行首

$ 表示一直拷贝到行尾

diw 删除单词,不包括单词周围的符号,例如 " word ",光标在 w,删除后变成了 " "

daw 删除当前单词,包括周围的空白字符,例如 " word ",光标在 w,删除后变成了 ""

da"  删除双引号中间的内容,包括双引号本身,例如 " word ",光标在 w,删除后变成了 ``

di": 删除双引号中间的内容,不包括双引号本身,例如 " word ",光标在 w,删除后变成了 ""

ds" 删除当前单词周围的双引号,例如 " word ",光标在 w,删除后变成了 w    

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论