美文网首页
vim 一 · 组合

vim 一 · 组合

作者: yesuu | 来源:发表于2018-03-09 23:50 被阅读50次

命令的性质

单键命令按性质分,可以分为操作和移动两种。还涉及到一个叫文本对象的概念。

  • 操作,如:

    • v 选择
    • d 删除
    • c 修改
    • y 复制
    • g~ 切换大小写
    • = 格式化缩进
    • > 添加缩进
    • < 减少缩进
    • p 粘贴到光标右边
    • P 粘贴到光标左边
    • i 在光标左边插入
    • a 在光标右边插入
    • I 在行首插入
    • A 在行尾插入
    • u 撤销
    • Ctrl-r 撤销撤销
  • 位置,或称移动,这些命令单独使用的意思是「光标移动到某地方」。

    • hjkl 左下上右
    • w 下一个单词开头
    • e 下一个单词结尾
    • b 上一个单词开头
    • ge 上一个单词结尾
    • gg 文件第一行行首
    • G 文件最后一行行首
    • fx 当前行下一个 x
    • Fx 当前行上一个 x
    • tx 当前行下一个 x 之前的字符
    • Tx 当前行上一个 x 之后的字符
    • ^ 行首
    • $ 行尾
    • * 搜索下一个「光标下的单词」的第一个字母
    • # 搜索上一个「光标下的单词」的第一个字母
    • /x 搜索下一个 x
    • ?x 搜索上一个 x
  • 范围,或称文本对象(text object),是一组表示范围的命令,只能组合使用,单独没有意义,关于如何组合会在下文说明。

    • iw,单词,不包含单词边界
    • aw,单词,包含单词右边的空格
    • i",两个双引号之间,不包含双引号
    • a",两个双引号之间,包含双引号
    • it,标签,不包含标签,标签指 html 或 xml 标签对儿
    • at,标签,包含标签,标签指 html 或 xml 标签对儿
    • i(i)ib,表示 () 之间,不包含小括号
    • a(a)ab,表示 () 之间,包含小括号
    • i<i>,表示 <> 之间,不包含尖括号
    • a<a>,表示 <> 之间,包含尖括号
    • i[i],表示 [] 之间,不包含中括号
    • a[a],表示 [] 之间,包含中括号
    • i{i},表示 {} 之间,不包含大括号
    • a{a},表示 {} 之间,包含大括号

命令组合方式

上面列出了许多「操作」命令,他们可以被组合使用,但并不是所有的操作命令都能组合使用。判断是否可以组合的方法是,键盘输入如 d 的命令,看他是否在等待下一个按键,是的话就可以按照下面的规则组合使用,否则就不行。d 是可以组合使用的操作命令,假设我定义 d 是删除一行,我输入 d^ 时,vim 无法区分我想执行「d 删除一行之后再用 ^ 把光标移动到行首」还是想执行「d^ 删除到行首」,所以单独一个 d 是没有意义的,当输入 d 时,vim 会等待用户按下一个按键。不能组合的操作命令没有这种歧义问题,所以他不会等待下一个按键,比如 p 粘贴命令。

  • 操作 + 位置,意思是「进行某操作,范围是光标到位置之间」。
    • dw 删除到下一个单词开头
    • d^ 删除到行首
    • v# 选择到上一个「光标下的单词」的第一个字母
    • vG 选择到文件最后一行行首
    • =G 格式化到文件最后一行
    • g~$ 切换大小写到行尾
  • 操作 + 范围,意思是「对某范围执行某操作」。
    • diw 删除单词,不包含单词边界
    • yaw 复制单词,包含单词右边的空格
    • vit 选择标签内容,不包含标签,对于 <p>asdfghjkl</p> 会选择 asdfghjkl
    • vat 选择标签内容,包含标签,对于 <p>asdfghjkl</p> 会选择 <p>asdfghjkl</p>
    • =a{ 格式化大括号之间的行缩进,包含大括号所在的行
    • gUiw 把单词变成大写

可以看出 vim 中如 w 的命令在不同组合下有不同的意思,单独使用 w 代表光标移动到下个词首,dw 代表删除到下个词首,daw 代表删除这个单词和多余的空格。虽然意思有些许不同,但 w 总是代表单词,这很直观,不需要特别记忆,甚至不需要特别注意,下意识就学会怎么用了。

相关文章

  • vim 一 · 组合

    命令的性质 单键命令按性质分,可以分为操作和移动两种。还涉及到一个叫文本对象的概念。 操作,如:v 选择d 删除c...

  • VIM+GCC+GDB C/C++开发

    参考内容:Vim与GCC和gdb完美组合Ubuntu下Vim+GCC+GDB安装及使用 一) vim使用略二) g...

  • Linux—vim/vi 翻页跳转命令快捷键

    以下组合若没有特殊说明,基本都是键位组合。 vim翻页 vim翻半页 ctr-d:向后翻半页 ctr-u:向前翻半...

  • VIM配置繁琐?VimPlus:“在我这儿不存在!!!”

    Vim是一款功能强大的文本编辑器,脱胎于Vi的基础之上。 Vim的设计理念是利用各种插件和组合键来实现双手手腕尽量...

  • vim 二 · 重复

    学会组合只是 vim 入门,虽然是入门也非常博大精深了,像有追求的 vimer 总是在探索更精简的组合命令,探索如...

  • 3、^M 替换

    vim切换到命令模式,然后":%s/^M$//g"%指匹配整个文件s是置换的意思^M要用ctrl+v+m 组合键敲...

  • Vim改写行

    Vim改写行 类似的,D 表示删掉光标至行尾,d 也可以与引号或括号组合, A 表示在行尾添加,I 表示在行首插入...

  • Vim 常用命令

    VIM 命令 文件命令 VIM的模式 VIM导航命令 VIM插入命令 VIM查找命令 VIM替换命令 VIM使用技...

  • 我也说说Emacs吧(2) - Emacs其实就是函数的组合

    Emacs本质上是函数的组合 从帮助上看emacs有何不同 Vim和Sublime Text等编辑器,本质上是一个...

  • Vim 配置 使用

    参考文档 vi/vim使用进阶vim编辑器技巧备忘Vim 的哲学(一) 将Vim改造为强大的IDE—Vim集成

网友评论

      本文标题:vim 一 · 组合

      本文链接:https://www.haomeiwen.com/subject/tiwmfftx.html