Vim 如何在 insert 状态下高效移动光标到括号外

2019-10-12 05:43:01 +08:00
 yiningyang1228

使用 Vim 之后感觉是非常爽,但是有个地方一只觉得挺麻烦,就是在打括号的时候,如果需要跳到括号外,需要很复杂的操作。

举例说明:

if (a == b) return c;

当输入 if 语句时,我是先打 if, 再打左括号(,这时候自动补全出右括号,光标自动出现在括号中间。再输入括号内的内容a==b, 这时候需要从右括号中跳出。 我现在的操作是:Cmd+[ 回到命令模式,l光标向右移一次, a到括号外,并进入 insert 模式,输入之后的内容。

但是感觉这么做贼麻烦,请问各位有什么比较简单的做法么?谢谢大家!

7455 次点击
所在节点    程序员
52 条回复
wweir
2019-10-12 08:17:39 +08:00
alt+hjkl,另外还有:
alt+oO,另起新行
Ctrl+l,选中整行
alt+[],在跳转中前进后退

PS: 我用的编辑器、IDE 全部都配置了这套快捷键。
PPS: 这套快捷键唯一的问题是 Windows 上,部分编辑器不好配置,alt 被 Windows 窗口管理器拦截了
Sparetire
2019-10-12 08:21:01 +08:00
ctrl+o 然后 l
Yggdroot
2019-10-12 08:24:27 +08:00
可以自己定义一些 imap,原生功能 Ctrl-right 可以实现你想要的。
另外,可以使用 snips 插件,一路按 tab 就可以了。
janus77
2019-10-12 08:27:57 +08:00
end 键
gimp
2019-10-12 08:39:46 +08:00
我特意观察了下,我没用括号自动补全的插件,但是打'('会同时打')',Esc, i 回到括号输入内容,Esc, l, a, 空格继续写代码,习惯了的话挺快的,找自己喜欢的方式形成肌肉记忆就行,最重要的是操作流畅就好
ysn2233
2019-10-12 08:43:39 +08:00
我是把 ctrl+A 和 ctrl+E 在插入模式下 map 为 home 和 end (就是 emacs 模式的跳转到行首和尾部,和终端一样),这样打完直接 ctrl + e
guog
2019-10-12 08:45:40 +08:00
@jessun1990 命令行快捷键用 Ctrl 用的多
+a 行首
+e 行尾,自动补全
+c /+d 取消
guog
2019-10-12 08:46:30 +08:00
@guog vim 块编辑+v
guonaihong
2019-10-12 09:01:15 +08:00
%a 或者
%%a
fangquanquan
2019-10-12 09:10:16 +08:00
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>

我的配置,尽可能让 i 模式下的操作习惯和普通模式一样。 另外我也把 Capslock 和 left-control 换了,按<C+l>非常方便。
TheWalkingDead
2019-10-12 09:13:54 +08:00
if (a == b) return c;

我一般操作习惯看你要跳转的这个地方的位置,如果)正好在最后一个,我可能直接 ctrl+4 直接到行末尾,然后 i/a/A。

如果括号在中间,我一般是 f 查找然后),然后 i/a/A。

其实习惯了各个键的话,哪种都差不多,没有感觉很累赘。
joshua7v
2019-10-12 09:14:43 +08:00
在系统级别 map 上下左右
因为在非 vim 中很多时候也需要
chengyiqun
2019-10-12 09:15:30 +08:00
idea 飘过, ctrl + shift + enter.
可能是姿势问题, 我用 vim 并没感觉效率提升多少.
ScepterZ
2019-10-12 09:16:23 +08:00
可以配置 caps+esdf 来控制上下左右,之前这样用了很长时间,非常舒适,只是需要键盘支持,或者 win 上可以用 ahk
jdhao
2019-10-12 09:26:10 +08:00
原生 vim 没有自动补全括号的功能,可能是你装了插件,使用 verbose imap ( 可以查看是哪个地方设置了这个映射。

我现在用的是 auto-pairs 这个插件,可以自动补全各种括号或者 quotation,输入左括号,自动补全右括号,括号里面输入完毕,再按一次右括号,光标自动移动到右括号的后面,可以继续输入,还是比较方便的,不会打断编辑的工作流
weishu
2019-10-12 09:29:58 +08:00
ctrl + o, A 路过

> ctrl + o: 再插入模式下执行一个命令,然后回到插入模式。
zeny620
2019-10-12 09:30:15 +08:00
如果用的 ‘ Plug 'jiangmiao/auto-pairs' 括号补全插件,内置 alt+n 跳出括号
ilaipi
2019-10-12 09:42:15 +08:00
我基本上是 kj 退出 insert 然后 按 e 或者 w

kj 在 insert 模式映射到了 esc
uyhyygyug1234
2019-10-12 09:50:52 +08:00
直接输入 ) 就会跳出了啊
darksword21
2019-10-12 10:04:21 +08:00
直接 ) +1

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

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

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

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

© 2021 V2EX