admin 管理员组

文章数量: 887018

文章目录

  • 前言
  • vim模式
  • command与operator 命令与操作符
    • 模式切换
      • 其余模式转普通
      • 普通转插入
      • 普通转替换
        • 单字符替换
        • 普通替换
      • 普通转可视
        • 普通可视(字符)
        • 行可视(行)
        • 块可视(块)
      • 普通转命令
    • excommand
  • movement/range 动作/范围
    • 图解
    • 字符
    • 段与块
    • 窗口与文件
    • 查找
    • motion
  • 命令模式
    • 命令模式与普通模式的区别
    • 命令格式
    • range
    • excommand
      • 行的删除,拷贝,打印
      • 行的复制,移动,粘贴
      • 批量操作(vs暂不支持)
        • normal命令
        • global命令
    • args
  • 普通模式操作符和动作
    • 基本操作
      • 直接普通模式 :操作次数+操作符+对象范围
      • 普通转可视化模式 :v+对象范围+操作符
  • 大小写切换

前言

本文仅为vim知识点的基本框架梳理,用于检查知识点是否掌握清楚,并无详细的操作讲解和样例.
直接看这个vim详细教学

vim模式

普通模式 normal

插入模式 insert

替换模式 replace

可视模式 visual

命令模式 :

command与operator 命令与操作符

模式切换

其余模式转普通

Esc
或键盘映射jj或capslock为Esc

//capslock方法

win+r 输入shell:startup

新建 hello.ahk文件

内容为

Capslock::Esc

普通转插入

i光标前插入

a光标后插入

I行首插入

A行末插入

o下一行插入,前加n则操作重复n次

O上一行插入,前加n则操作重复n次

普通转替换

单字符替换

r+你想将当前字符替换的字符

普通替换

R

普通转可视

普通可视(字符)

v

行可视(行)

V

块可视(块)

Ctrl+v

块可以理解为矩阵

普通转命令

:

excommand

d(delete) 删除 dd删除整行 D删到行尾

x 删除单个字符

c(change) 修改(删除并进入插入模式) cc修改整行 C改到行尾

y(yank) 复制 yy复制整行

p(paste) 粘贴

r 替换单个字符

‘>’ 向右缩进

< 向左缩进

. 重复操作redo

u 撤销操作undo

J 与下一行合并

movement/range 动作/范围

图解

https://people.csail.mit.edu/vgod/vim/vim-cheat-sheet-en.png

字符

h左

j下

k上

l右

w跳到下一个单词开头

b跳到本单词或上一个单词开头

e跳到本单词或下一个单词结尾

ge 跳到上一个单词结尾

0跳到行首

^跳到从行首开始的第一个非空字符

$跳到行尾

gg跳到第一行

G跳到最后一行

段与块

{和} 跳转到段落首/段落尾

[{和}] 跳转到块首/块尾

详见图解

% 选中括号中的内容

B和F 跳转到上一页/下一页

窗口与文件

H 跳转到窗口头

zt 滚动到窗口头

M 跳转到窗口中部

zz 滚动到窗口中

L 跳转到窗口尾

zb 滚动到窗口尾

gg和G 跳到文件头/文件尾

mx和’x 标记为x/跳转到x

查找

*与# 向前/向后查找当前词

gd 即goto definition跳转到函数定义

/xxx 查找xxx

n/N 跳转到下一次/上一次查找结果

f{char}跳到下一个char所在位置 //find

F{char}反向移动到上一个char所在位置

t{char}跳到下一个char的前一个字符位置

T{char}反向移动到上一个char的后一个字符位置

;重复上次字符查找操作

,反向查找上次的命令

motion

可以简单理解为

i:inner

a:around

iw选中单词

aw选中单词包含前置空格

下列同理

i( / ib a( / ab

i{ / iB a{ / aB

i" / a"

i’ / a’

i < [ / a < [

it / at t=tag,如html

之间的部分

is / as s=sentence

ip / ap p=paragraph

ie e可以理解为entire,整个文件

命令模式

命令模式与普通模式的区别

  • 命令模式的编辑操作以行为单位,普通模式可以以字符或单词作为单位
  • 命令模式的操作大部分不用移动光标
  • 命令模式可以批量操作

命令格式

:[range] {excommand} [args]

  • range:作用的范围,不给默认本行
  • excommand: 特殊的命令,适用于command模式
  • args: 后续的参数,视命令而定

range

由一个或两个address构成,即{address}或{address},{address}

address可以是:

  • {lineno}:行号,如3代表第三行(0代表第一行上面的虚拟行)
  • $:最后一行
  • .:光标所在行
  • /{pattern}/:下一个pattern所在行
  • $:文件的所有行
  • ‘<,’>:可视模式选中的开头和结尾(可视模式下可按:直接设置)

address可做加减法,如.+3表示光标往下第三行,$-3表示倒数第4行

excommand

行的删除,拷贝,打印

:[range] delete [x]:把range中的行删除,并拷贝到寄存器x

:[range] yank [x]:把range中的行拷贝到寄存器x

:[range] print:把range中的行打印出来

行的复制,移动,粘贴

:[range] copy {address}:把range中的行复制到address后面

:[range] move {address}:把range中的行移动到address后面

:{address} put [x]:把寄存器x中的内容粘贴到address后面

0作为虚拟行的address,可以用来将内容插入第一行

批量操作(vs暂不支持)

normal命令

格式:[range] normal {commands}

含义:对range中的所有行执行normal模式下的命令commands

点命令:[range] normal .:配合.命令使用

常用做法:先做一次操作,再用normal命令在指定的行上完成操作

宏命令:[range] normal @{register}

常用做法:先把想要的操作录制成宏,再用normal命令在指定的行上重放宏

宏的录制:q{register}+i+插入模式编辑操作+Esc+q,把操作放在寄存器register(通常为a到z)中

global命令

格式:[range] global/{pattern}/[cmd]

含义:对range中包含pattern的所有行执行command模式下的ex命令

args

如 1,3 d [x] 中的[x]表示寄存器

普通模式操作符和动作

基本操作

直接普通模式 :操作次数+操作符+对象范围

如"hello world",想删除""内的内容,di"即可

如想向下删除两行,2dd即可

如vim is awesome,想删除从v到s,光标在v,然后dfs即可,fs即发现s

普通转可视化模式 :v+对象范围+操作符

如"hello world",想删除"内的内容,在h处按v然后llll一直到d,再d即可,也可以v+i"+d

大小写切换

~ 将光标下的字母改变大小写

数字+~ 将从光标开始的数字个字母改变大小写

g ~~ 改变当前行字母的大小写

gUU 将当前行字母改为大写

guu 将当前行字母改为小写

gU+对象范围,将范围的字母改为大写

gu+对象范围,将范围的字母改为小写

v+对象范围+U/u 将可视范围的字母改为大写/小写

本文标签: 简要 插件 框架 更新中 vim