avatar

目录
vim基本技巧笔记

vim基本技巧笔记

vim基本技巧

各种快捷技巧

  • [.] 重复操作
  • [u],[C-r] 回退重做命令
  • [:set hls] 高亮
  • [cw] 删除从光标位置到单词结尾间的字符,并进入插入模式
    • [c3w]
  • [f] 行内 单字母查找?[;] 重复查找上次 f 命令所查找的字符
  • [s] 删除字母,并进入insert模式
  • [;] 重复上次[f]命令 带到下一个目标字符上,仅仅指字符
  • [:s/content/copy/g] 单行替换 content为copy
  • [:%s/content/copy/g] 全局替换 content为copy
  • [o ]
  • [x] 删除字符
  • [db] 删除光标到单词开始的字符
  • [b] 移动到单词开头
  • [cc] 删除行
  • [dw] 删掉到单词结尾的字符 [2dw],[d2w]
    • [daw] 删除一个单词
  • [ C-a ],[c-x] 12[c-a] … 数字加减
  • [yyp] 复制一行
  • [daw],[dap],[dl]
  • [gUaw] 当前单词转化为大写形式
  • 一个操作符命令被连续调用两次时,它会作用于当前行  dd 删除当前行,而 >> 缩进当前行
    • gU 命令是一种特殊情况,我们既可以用 gUgU ,也可以用简化版的 gUU 来使它作用于当前行。
  • [=6*35 ] ,插入模式下使用,计算器
  • [u{1234}] , 以字符编码输入字符,[u00bf ] ¿,[ga],查看光标下字符的编码。
    • 如果 后面是一个非数字键,则插入按键代表的本身字符 :h i_CTRL-V_digit
    • {char1}{char2} 以二合字母插入不常用字符 :h digraphs-default
  • [R] 替换模式 [gR] 虚拟替换模式
    • 单次版本的替换模式及虚拟替换模式。r{char} 和 gr{char} 命令允许覆盖一个字符,之后马上又回到普通模式
  • <C-g> 可以在可视模式及选择模式间切换
  • viw 来高亮选择这个词 进入可视模式,高亮选择
    • v 进入可视模式 o切换选定方向
  • :n 跳转指定行
  • :h ex-cmd-index Ex命令 ,命令行模式命令
  • Ex命令读写文件(:edit 和 :write)、创建新标签页(:tabnew)、分割窗口(:split)、操作参数列表(:prev``/``:next)及缓冲区列表(:bprev``/``:bnext
  • :%s/replace/str :3print 替换,打印第三行 :4 跳转到第4行
  • 先执行 2G,再跟着执行 VG,就会选中如下一个高亮选区 VG 猜测是选定下一个高亮区
  • normal 对选中区做指定操作

资料

一箭双雕

我们可以这样说,A 命令把两个动作($a)合并成了一次按键。不过它不是唯一一个这样的命令,很多Vim的单键命令都可以被看成两个或多个其他命令的组合。下表列出了类似的一些例子,你能找出它们之间别的共同点吗?

复合命令 等效的长命令
C c$
s cl
S ^C
I ^i
A $a
o A
O ko

可重复操作及如何回退

表1-1 可重复的操作及如何回退

目的 操作 重复 回退
做出一个修改 {edit} . u
在行内查找下一指定字符 f{char}/t{char} ; ,
在行内查找上一指定字符 F{char}/T{char} ; ,
在文档中查找下一处匹配项 /pattern n N
在文档中查找上一处匹配项 ?pattern n N
执行替换 :s/target/replacement & u
执行一系列修改 qx{changes}q @x u

Vim的操作符命令

表2-1 Vim的操作符命令

命令 用途
c 修改
d 删除
y 复制到寄存器
g~ 反转大小写
gu 转换为小写
gU 转换为大写
> 增加缩进
< 减小缩进
= 自动缩进
! 使用外部程序过滤{motion}所跨越的行

激活可视模式

命令 用途
v 激活面向字符的可视模式
V 激活面向行的可视模式
激活面向列块的可视模式
gv 重选上次的高亮选区

操作缓存区文本的Ex命令

命令 用途
:[range]delete [x] 删除指定范围内的行[到寄存器x中]
:[range]yank [x] 复制指定范围的行[到寄存器x中]
:[line]put [x] 在指定行后粘贴寄存器x中的内容
:[range]copy {address} 把指定范围内的行拷贝到 {address} 指定的行之下
:[range]move {address} 把指定范围内的行移动到 {address} 指定的行之下
:[range]join 连接指定范围内的行
:[range]normal {commands} 对指定范围内的每一行执行普通模式命令 {commands}
:[range]substitute/{pattern}/ {string}/[flags] 把指定范围内出现{pattern}的地方替换为{string}
:[range]global/{pattern}/[cmd] 对指定范围内匹配{pattern}的所有行执行Ex 命令{cmd}

构建 Ex 命令的地址及范围的符号总结

符号 地址
1 文件的第一行
$ 文件的最后一行
0 虚拟行,位于文件第一行上方
. 光标所在行
‘m 包含位置标记m的行
‘< 高亮选区的起始行
‘> 高亮选区的结束行
% 整个文件(:1,$ 的简写形式)

vim的剪切板

vim 有 12 个剪切板,分别是 0、1、2、…、9、a、“、+;用 :reg 命令可以查看各个剪切板里的内容。在 vim 中简单用 y 命令只是复制到 “(双引号)剪切板里,同样用 p 命令粘贴的也是这个粘贴板里的内容;

默认情况下使用的双引号的剪切板,+剪切板是系统剪切板。

可视模式下,可以使用 双引号+剪切板号+y/p命令分别实现复制和粘贴功能。

对比于Ex命令:copy(简写:t)来看的区别

:copy命令不占用寄存器(这里我实际使用了git bash使用的时候,发现会占用冒号寄存器来存储命令!!!尚不明确!)

":t" 占用冒号寄存器的情况

Ex命令适合远端操作,普通命令适合本地操作(可以减少移动光标的操作,不过如果不知道具体行数也不省事,首尾添加多行的情况比较喜欢用这个)

  1. 常用复制快捷命令:

    yy 复制游标所在行整行
    2yy 或 y2y 复制 2 行
    y^ 复制至行首,或 y0
    y$ 复制至行尾
    yw 复制一个 word
    y2w 复制两个 word
    yG 复制至文件尾
    y1G 复制至文件首

  2. 常用剪切快捷命令:

    dd 剪切游标所在行整行
    d^ 剪切至行首,或 d0
    d$ 剪切至行尾
    dw 剪切一个 word
    dG 剪切至文件尾

文章作者: thf
文章链接: http://pcbopcbo.github.io/2020/01/19/2020011913/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 漂泊的个人笔记

评论