Vim操作

注意
本文最后更新于 2024-08-11,文中内容可能已过时。

编辑模式下:

ctrl + h删除上一个字符 ctrl + w 删除上一个单词 ctrl + u 删除当前行

ctrl + o 进入单词命令模式 ctrl + [ 退出编辑模式 进入Normal模式

Normal Mode:

r 替换字符 ra会把光标所在的字符替换为a s 删除字符并进入编辑模式 R 不断的替换后面的字符,进入replace模式 S 删除当前整行,进入编辑模式 a在当前字符后面添加进入编辑模式

i 进入编辑模式

o 新开一行进入编辑模式

x 删除后面的一个字符

dd删除当前行

dt)删除括号中的内容 delete until ) dt " 删除双引号中的内容 d$ 从当前光标位置删除到行尾

ct) 删除括号中的内容,并进入插入模式 ct" 删除双引号中的内容并进入插入模式 c$ 和S的效果相同,删除当前行并进入插入模式 yy复制整行 p 粘贴 v 进入visual模式,选中文本,按y进行复制

A 跳转到当前行末尾,在当前行末尾添加字符,进入编辑模式

I 跳转到当前行开头,进入编辑模式

O 在当前行的上一行新开一行,进入编辑模式

gi 快速跳转到你最后一次编辑的地方并进入插入模式

dw 删除一个单词 cw 删除一个单词并进入编辑模式

w/W 移动到下一个word/WORD开头

e/E 下一个word\WORD结尾

b/B 回到上一个word\WORD开头

word 指的是以非空白符分割的单词 WORD指的是以空白符分割的单词

同一行快速移动的方式其实是搜索一个字符并且移动到该字符 使用f{char} 可以移动到char 字符上,t移动到char 的前一个字符如果第一次没搜到,可以用分号(;)/逗号(,)继续搜该行下一个/上一个字符 大写的F 表示反过来搜前

0 移动到行首第一个字符 $ 移动到行尾

使用()在句子之间移动 使用{}在段落之间移动

页面移动: gg文件开头 G文件结尾

H M L 分别跳转到屏幕的开头,中间,底部

ctrl + u ctrl+ f分别为向上下翻页

zz把屏幕设置为中间

Vim搜索

/ 或者? 进入搜索 n/N 找下一个单词或者上一个单词 :set hls 高亮搜索 :set incsearch 增量搜索,会边搜索边增加高亮 (建议持久化)

Vim搜索替换 :[range] s/{pattern}/{string}/[flags]

range 表示范围: 比如:10,20 表示10-20 行,% 表示全部

pattern 是要替换的模式,string是替换后的文本

flags 常用的标志: g 表示全局范围内执行 c 表示确认,可以确认或者拒绝修改 n 报告匹配到的次数,而不替换

例子: :% s/learning/learn/g 表示全局替换当前文本下所有的learning为learn

:% s/learn//n 返回匹配到多少

:% s/learning/learn/c 会向你询问是否要替换

image

image

Buffer切换

:ls 会列举当前缓冲区,然后使用:b n 来跳转到第n个缓冲区

:bpre :bnext :bfirst :blast 或者使用:b buffer_name 加上tab进行补全切换buffer

Window窗口

ctrl + w + s水平分割 :sp

ctrl + w + v 垂直分割 :vs image

image

image

tab

image

image

vim text object

VIM学习笔记 文本对象(Text Objects)

image

image

终端下:

ctrl + b 前移 ctrl + f 后移 ctrl + a 快速移动到开头 ctrl + e 快速移动到结尾

0%