跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • vim 如何设置在 f 找到对应的字符的时候进入 insert mode
未分類
4 2 月 2021

vim 如何设置在 f 找到对应的字符的时候进入 insert mode

vim 如何设置在 f 找到对应的字符的时候进入 insert mode

資深大佬 : woshichuanqilz 6

大家应该都知道 f 的功能就是在当前行找到一个对应的字符, 我想在找到对应的字符的时候直接进入 insertmode 就好象找到之后自动按下 i 键 这个应该怎么设置?

大佬有話說 (21)

  • 資深大佬 : jdhao

    f 只能跳到每行一个匹配的字符,要跳到下一个匹配的字符需要继续按 ;,谁知道你想在哪个字符进入 insert 模式。

    结论,你的需求自己都没想清楚

  • 資深大佬 : matrix67

    map f fi

  • 主 資深大佬 : woshichuanqilz

    @matrix67 这是找到地一个 i 字母没有进入 insert mode
    @jdhao 就比如是定位当前坐标向右第一个, 定义第二个可以用 2fx 来做

    我的意思是能不能对 f 这个功能做一个简单的扩展

  • 資深大佬 : matrix67

    @woshichuanqilz #3 哈哈 还真是。想简单了。

  • 資深大佬 : morefreeze

    在插入模式下 c-o 后临时切到 normal 模式,然后 f 找到后还在插入模式,你要做的就是简化 c-o f 吧

  • 資深大佬 : zzzmj

    操作下来,能节省按键次数吗

  • 資深大佬 : jdhao

    @woshichuanqilz 当然可以,重新映射 f 即可,需要你写一个方法,方法里面实现你想要的操作,按下 f,执行这个方法即可

  • 資深大佬 : jdhao

    @jdhao nnoremap <expr> f :<C-U>YourFunction()<CR>

    把 YourFunction() 按照你的设想实现即可,不过你既然问这个问题,估计你也实现不了。。所以还是老实用 vim 原有的功能,等你的 vim function 功力达到了再做这样的高级定制。

  • 資深大佬 : teawithlife

    来个 quick and dirty 的办法
    nnoremap fa fai
    nnoremap fb fbi
    …
    nnoremap fz fzi
    nnoremap fA fAi
    …
    nnoremap fZ fZi

  • 資深大佬 : jdhao

    @teawithlife 这样根本没用,以 fa 为例,只能跳到每行第一个 a,然后进入 insert 模式。问题是每次都想找第一个出现 a 的地方吗,一行有多个 a 的时候,怎么跳转并且进入插入模式?

  • 資深大佬 : omph

    找到合适的插件

  • 資深大佬 : darksword21

    emacs 我知道,vim 是不是有个交 anzu 的好像类似的?

  • 資深大佬 : darksword21

    @darksword21 叫

  • 資深大佬 : sona

    额

    找字母(这个行为当只发生一步的时候必然只会找到第一个顺序或逆序的结果)— 插入
    这个操作只有两步,可以用两个字母代替

    找字母 — 定位其中某一个 — 插入
    这个操作总共三步,起码需要三步,无论如何你也不可能通过两个字母达到这个效果
    三个字母可以做出来这个功能,通过用字母标记对应字母位置的方式
    这种方式应该是有插件的,你可以找找
    但是这里虽然表面只需要三个字母,但你却需要一个额外的观察记忆标记字母并且使用,我个人觉得其实很繁琐

    找字母 — 插入 — 在插入模式下移动到下一个字母处
    这样可以通过两个按键达到找到第一个字母并进入的效果,同时通过快捷键移动到剩下的位置
    你可以很简单的通过 @teawithlife 的那个方法加上一个 imap 实现

    但我不明白你为什么需要这个功能,因为 vim 找到字母在 normal 模式下明显是更方便的
    你可以选择的操作更多,你可以操作当前的字母,当前的词汇,当前的文本对象,可以直接替换当前字母而不退出 normal 模式
    这样不是更好吗

  • 資深大佬 : sona

    额,回复完发现我错了,因为你需要的是自动插入,所以插入只是操作的结束,并不算一个步骤
    找 字母 本身就是两步,本身就需要两个字母
    找 字母 定位某一个 三步,必然需要三个字母或以上
    找 字母 在插入模式下移动到下个结果, 这样可以得到一种第一个位置只需要两个字母,剩下的位置需要更多按键的方式
    最后结论依然不变,找到字母保持 normal 我认为依然是对的

  • 資深大佬 : no1xsyzy

    @jdhao nnoremap fa fai 了以后 2fa 就是 2fai

  • 資深大佬 : gppola666

    就多按一个 i 键,没必要,而且不一定是 i,还可能是 r,ciw,d$等等方式

  • 資深大佬 : DrakeXiang

    这种很可能造成效率低下,要数有多少个目标字符,数错了成本就很大,数对了也只是少按一次键而已,而且你能保证你的目标字符都在你光标的同一侧吗?这恐怕很不好满足,有时候你的目标字符前后有特殊字符,一个 f 就能找到,然后通过 i 或者 a 来达到目的,但如果你把 f 改了,你就很可能无法使用 f 找到特殊字符,只能自己数,为了节省一个按键来牺牲灵活性,实在是得不偿失

  • 資深大佬 : Takamine

    一般来说我用 w 的频率更高,f 后可能还要;几次才能找到自己要的,而且找到特征字符之后也不一定都是 i,还会 a,diw 都有可能。

  • 資深大佬 : bickman

    fi 就行了,或者自己定义宏

  • 資深大佬 : bickman

    f 是向后查找,i 是插入字符,你想找到后插入字符就用 fi,或者自己定义宏,f 99%的情况下都不是一次就能查找到的,肯定要多 f 几次,如果直接进入 f 一下就进入插入模式,还这么查找,这样反而反人类,不知道主提这个问题是不是没有怎么搞明白 vim 基本思想,或者仔细思考过。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具