除了使用方向键 vim insert mode 下如何快速前进一个字符?

2023-10-13 16:06:22 +08:00
 FaiChou

各位 vimer ,你们在 insert mode 输入时候是怎么快速前进一个字符的?

如果退出 insert mode ,按 A 可以做到,但感觉好麻烦。

如果是在别的地方,使用 Emacs 的快捷键 ctrl+e 可以到末尾,或者 ctrl+f 前进一个字符都是很方便的。

2088 次点击
所在节点    Vim
23 条回复
jinzc
2023-10-13 16:13:42 +08:00
你使用 1 个月后,形成手指肌肉记忆,就不会有这个疑问了。
iSecret
2023-10-13 16:15:45 +08:00
退出 insert mode 然后按 w 前进一个单词,按 b 后退一个单词,按 0 到行首,按 $ 到行尾,然后再按 i 或者 a 进入 insert mode 呗。
Masoud2023
2023-10-13 16:19:48 +08:00
imap 绑定一个你觉得舒服的按键
FaiChou
2023-10-13 16:20:23 +08:00
@iSecret 这些我都知道,但感觉退出 insert mode 感觉还是慢了一点,虽然很多人喜欢用 jj 或者 jk 退出 insert mode 。
alfa
2023-10-13 16:20:32 +08:00
如果是 jb 家的,我的设置
imap <C-p> <Up>
imap <C-n> <Down>
imap <C-b> <Left>
imap <C-f> <Right>
imap <C-e> <End>
imap <C-a> <Esc>^i
imap <C-;> <End>;
marcong95
2023-10-13 16:22:44 +08:00
直接硬件外挂,自定义键位 CapsLock ( Anne Pro 的 Magic Fn )+WASD (逃)
Rooger
2023-10-13 16:24:27 +08:00
Ctrl+F/B ,如果你这两个快捷键没有使用的情况下

在 Vim 中添加以下配置
inoremap <C-F> <left>
inoremap <C-B> <right>


Mac 下主流编辑器几乎都是支持 Ctrl+F/B 前进和后退的,Ctrl+P 前一行,Ctrl+N 后一行。

VS Code 以及 Zed Vim 插件下,插入模式可以直接使用 Ctrl+F/B

在 Windows 上 xShell 在输入命令上支持 Ctrl+F/B 前进和后退
chippai
2023-10-13 16:25:16 +08:00
我也是 jb idea vim 党
文本是用的 ctrl + hljk ;然后再改 ctrl + pn ,作为弹窗的上下切换;方便不少
knightdf
2023-10-13 16:27:58 +08:00
c-o+l
FaiChou
2023-10-13 16:33:48 +08:00
@knightdf 一次性普通模式应该也方便,可能自己不太适应。谢谢举例。
donatello
2023-10-13 16:41:22 +08:00
caps 映射 单独按 esc,和其他按键一起按是 ctrl
marding
2023-10-13 16:50:31 +08:00
@FaiChou 我有个方法是把 Capslock 键映射成 Esc 键, 这样子退出 insert mode 就很方便了. 这样子先退出 insert mode 然后按 a, 还算方便吧自己用着
xloong
2023-10-13 17:23:01 +08:00
@donatello #11 请问下是怎么区分的 或者说是用什么工具实现的
churchill
2023-10-13 17:31:00 +08:00
tabout flash 满足我几乎所有的移动需求
z1645444
2023-10-13 17:41:08 +08:00
我一直是回到 Normal mode 再 a ,Vim 有默认的回到 Normal mode 的组合键,我一直使用的是 <C-c>,另一个是 <C-[>,右手小拇指肌无力所以就早期开始用 Vim 的时候就没准备习惯使用后者
ixx
2023-10-13 17:44:18 +08:00
你需要一个可以自己改键的键盘然后就可以用自定义的 fn+h 向前一个字符了
yuancoder
2023-10-13 21:19:49 +08:00
自己映射一下<c-f>
gca
2023-10-14 00:15:31 +08:00
ctrl + O, A
ricebna
2023-10-14 09:27:02 +08:00
我用 Mac, 安装 Karabiner 后, 设定空格模式. 即按住空格后, 自定义各种键组合.

例如:
空格 + sdfe = 方向键;
空格 + jkli = shift + 方向键;
在编程这件事上, 方向键与 shift+方向键的使用频率, 一个几乎是 100%, 一个是 99%. 很有必要作为最基础最好用的快捷键.

另外的常用键组合如下:
空格 + w = page up
空格 + r = page down
空格 + a = 移到行首 (Mac 上各种软件, 打字编辑都有效)
空格 + g = 移到行尾
空格 + u = Add Selection for Next Occurrence (编程高频)
空格 + u = Add Selection for Next Occurrence (编程高频)
空格 + b = preview tab (Mac 上各种软件都遵循这个规范, 如浏览器左边标签页, vscode 左边标签页)
空格 + n = next tab

其他根据个人需要自行映射, 如我把切换最常用软件分别映射为:
空格 + t = Chrome
空格 + y = Idea
空格 + o = 微信
空格 + q = 飞书
空格 + v = iTerm2

我觉得 shift + 顶部数字键组合为符号键还是有点麻烦, 所以直接把顶部从最左边的 "`" 到 "+" 再到 "?" 全部映射为空格模式了.
为什么这样做? 因为如果我们在输入时手掌始终不离开当前键区的话, 效率最高的, 也少很多输入打断.
如果使用 shift 甚至是 command, 都得离开输入键区, 空格 + 各种键组合可以始终保持手掌键区不变.
相比之下, 我认为 vim 的模式转换就弱爆了, 我按住空格就是操作模式, 取消空格就是输入模式, 哪有那么麻烦.
如果真的要输入空格呢? 按一下空格就是真的空格, 担心误触, 不会, 本人已经实践 4 年, 这套模式已验证十分可靠.

Karabiner 非常强大, 我不知道 Windows 下有没有类似强大工具.
Karabiner 不仅能做键映射, 还能直接执行命令行, 能判断当前所处软件启用不同策略, 能检测当前硬件是键盘还是笔记本键盘, 还有鼠标相关控制.
aliezleft
2023-10-14 13:34:30 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/981735

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX