vim总结

Endless_daydream Lv4

熟能生巧放第一句。对于vim用户还有“要多想”,特别是发现某些操作不太舒服的时候。

移动

方向键、hjkl和翻页移动不谈

  • 查找移动: f F t T/ ?查找

  • easymotion(插件):不能用于q记录命令

总结:easymotion已经在告诉你最常用的精确定位就是定位到某个单词的首尾。

修改

操作符

  • 基本:d x s c y gu gU ~ v V C-v
  • 插件:ys(vim-surround)

选择操作对象:

  • 移动
  • 文本对象:i/a + w s p b/(/) B/{/} [/] ‘ ” ` a e F (插件)

总结:文本对象是最重要的思路转变之一,不再需要去定位首尾字符

修改流程

分为 移动+修改 和 命令行 两种思路

一些问题的看法

关于键位
  • 看到过网上一些人将键映射到-_这样的键,抱怨Ctrl-b& *这样的键位置不好。这其实是没有习惯vim的hjkl键位,输入时仍回到jkl;导致的。

    hjkl使得手更集中于键盘中央,但劣势是离右边的回车、退格甚至{键远了

    hjkl姿势使用中文输入法可以用, .来翻页,比较近。

  • 映射caps_lock是好文明,重要位置放不常用的键早该治治了。

关于插件
  • 每一个插件都是因为可以解决遇到的问题而安装的,因此不可以照抄但可以参考他人的设置。
  • 切忌新手时期像安装IDE一样无脑导入别人配置的大量插件。学习vim要循着解决自己操作上不便的思路来扩展插件库。
关于重复
  • 众所周知vim对于重复操作有 数字 和 宏寄存器 的强大支持。但一开始你可能会发现考虑如何写出可重复的宏所需的时间,比一个一个手动做还多。对此我的看法是两方面的。
  • 一方面,使用vim的基本要求就是盲打,也就是说我们对键盘本身已经较为熟悉。一些较短的操作,修改不如重做,考虑宏如何录制不如直接上手,这样操作是合理的,你可以对自己最后手打完成编辑感到安慰。
  • 另一方面,养成录制即可用的宏的能力是需要练习的。
    • 这个习惯可能会有帮助:当我下意识感觉到可能有需要宏操作的情况时,会直接习惯性地按qq(开始录制q寄存器),然后开始再考虑怎么写。
    • 不必追求优雅无失误的宏录制。也就是说你大可以在宏中使用u和编辑退格这样的反悔操作,不用因此停止录制。
    • 往大写寄存器(对我而言就是Q)录制,就是往对应的小写寄存器末尾追加内容。也就是说你第一次执行录制结果,如果发现不对,先别急着u反悔,可以打开大写寄存器在之前宏的结果上修复你的操作。还是这句话,不要怕宏录制得丑陋,反正后面@执行时效率高是自己爽。
    • 要多想。在没有上手写的时候去考虑怎样把宏录制的过程系统地分解成步骤,然后在动手的时候有意识放慢练习。事实上相比平常的编辑就是多一步还原到下一次也可执行的状态。

实践问题

平时工作常写的是c++,以下列出一些常遇到的问题以及我的做法。

  1. 正常编辑中如果没有需要修改的错误,能在键盘中心位置正常输入到底而无需移动手指吗?能在不进入其他模式的情况下完成输入吗?

    题意说明:这里意指c++的括号自动补全问题。由于方向键不在键盘中心,常常要按方向键来跳出括号是很不舒服的。例如自动补全括号会导致每句话最后的;需要移动或退出插入模式来补。

    1. 如果把esc映射到了一个舒服点的位置(我的在caps_lock)可以考虑<Esc>A;

    2. 另一种方法是在插入模式移植emacs那样的组合的左右移动键,例如C-h C-l表示左右移动。在查阅:h决定要不要覆盖定义时积记得输入全称,即:h i_ctrl-h而不是:h i_C-h
      由于两个Ctrl的位置都不算舒服,而两个alt都很方便,你可能考虑交换其中一个altctrl让移动这个日常的操作方便一点。但我发现无论有没有映射键,输入模式下alt的组合键都会直接退出输入模式。

      于是我在系统层面用xmodmap交换了Alt_L和Ctrl_L。事实表明这个交换影响深远,因为我以前在Alt_L上有不少操作习惯(如alt_L + tab切换页),这带来了一些麻烦,但同时按ctrl不必再大幅移动,对于一些日常的Ctrl快捷键也很爽。

      现在我的方案就是C-f C-b表示插入模式下的<right> <left>,Ctrl按左alt键。这样的操作习惯使我之后有更完整地将shell命令行的快捷键移植到输入模式的想法。

    3. 还有一个理论可行的解法是取消括号补全,自行衡量。

  2. 如何快速选中一个函数/作用域?

  • Title: vim总结
  • Author: Endless_daydream
  • Created at : 2024-03-02 15:27:05
  • Updated at : 2024-03-02 17:42:53
  • Link: https://endless_daydream.gitee.io/2024/03/02/vim/vim总结/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments