使用 Vim 之后感觉是非常爽,但是有个地方一只觉得挺麻烦,就是在打括号的时候,如果需要跳到括号外,需要很复杂的操作。
举例说明:
if (a == b) return c;
当输入 if 语句时,我是先打 if
, 再打左括号(
,这时候自动补全出右括号,光标自动出现在括号中间。再输入括号内的内容a==b
, 这时候需要从右括号中跳出。
我现在的操作是:Cmd+[
回到命令模式,l
光标向右移一次, a
到括号外,并进入 insert 模式,输入之后的内容。
但是感觉这么做贼麻烦,请问各位有什么比较简单的做法么?谢谢大家!
1
Jirajine 2019-10-12 05:54:12 +08:00 via Android
一般文本编辑器自动补全关闭括号的时候还有一个操作:
当你手动输入右括号时会自动将光标移到括号外面。 不知道你 vim 怎么配置的,我一般在其他编辑器中使用 vim 输入模式,在 insert 下与一般编辑器无异。 |
2
reus 2019-10-12 05:54:57 +08:00
A 可以少一次移动
或者直接输入 ) |
3
binux 2019-10-12 06:07:38 +08:00
不用自动补全
|
5
rykka 2019-10-12 06:19:13 +08:00 via Android
esc+A
|
6
weixiangzhe 2019-10-12 06:48:09 +08:00 via Android
单行用 ctrl b f 移动
|
7
jessun1990 2019-10-12 07:13:44 +08:00
我的方法是,先输入 if (), 再退到命令模式,h 移动到括号处,插入模式,输入 a == b,退到命令模式,再 A 到行尾巴继续操作。
看上有些复杂了。形成这样习惯的原因是,有时候输入 if ( 时候,右括号没有自动补齐,而整个文件的 syntax highlight 这时出现错误,Ale 插件也会报错。 我是把我的 linux 和 mac 下的 capslock 按键替换成 esc 键,使用小拇指来控制模式切换。对我来说,较大幅度降低了 esc 模式切换的时间成本。 |
8
yiningyang1228 OP @Jirajine 我之前也是这样配置的,但是感觉有些麻烦😂
|
9
yiningyang1228 OP @reus 学到了,感谢!
|
10
yiningyang1228 OP @jessun1990 感谢您的回复!我是把 Capslock 和 left-control 换了,这样的话按和 Control 的快捷键方便一些。
|
11
yiningyang1228 OP @weixiangzhe 嗯嗯,我之前也是 imap 的方向键映射成了 ctrl b f n p,但是后来感觉这么做还得配置😂有点麻烦。要不我再去弄回来吧,感谢回复!
|
12
DiamondbacK 2019-10-12 07:44:57 +08:00 1
你一定是用了自动补全括号的插件,而这个插件又没有同时考虑到这个问题。
我一直是用的自己写的括号补全,而在打闭括号时,如果右方是相同的闭括号,则自动变成移出。 gayhub: Ace-Who/vim-AutoPair |
13
DiamondbacK 2019-10-12 07:51:06 +08:00
另外,insert mode 下将 jk 映射为 Esc。
|
14
hanxiV2EX 2019-10-12 07:55:26 +08:00 via Android
w 我按的最多
|
15
pkookp8 2019-10-12 07:56:07 +08:00 via Android
不用括号补全😂
|
16
jessun1990 2019-10-12 07:56:59 +08:00
@yiningyang1228 请教一下,我的使用感受是:ctrl 按键使用频率较低。请问兄台把 ctrl 放在 capslock 的原因是??
|
17
xml123 2019-10-12 08:01:10 +08:00
你可以用方向键啊
|
18
IsaacYoung 2019-10-12 08:10:23 +08:00
shift + a 在本行最后插入
shift + i 在本行开头插入 |
19
xiulu 2019-10-12 08:13:35 +08:00 via Android
@xml123 用了 vim 后,就忘记了什么是方向键。即使方向键只要一次操作,而且命令需要两次操作( ESC,和 A )。但还是会选择后者,因为总感觉伸手到右下角找方向键有种奇怪的感觉,会打断那种流畅感。
最起码在我看来,是这样的。 |
20
Sainnhepark 2019-10-12 08:16:00 +08:00 via Android
我记得是 auto pairs 有这样一个功能,当插入模式下位于括号内的时候,再按一次右括号就可以跳转到右括号的位置
|
21
wweir 2019-10-12 08:17:39 +08:00 via Android
alt+hjkl,另外还有:
alt+oO,另起新行 Ctrl+l,选中整行 alt+[],在跳转中前进后退 PS: 我用的编辑器、IDE 全部都配置了这套快捷键。 PPS: 这套快捷键唯一的问题是 Windows 上,部分编辑器不好配置,alt 被 Windows 窗口管理器拦截了 |
22
Sparetire 2019-10-12 08:21:01 +08:00 via Android
ctrl+o 然后 l
|
23
Yggdroot 2019-10-12 08:24:27 +08:00 via Android
可以自己定义一些 imap,原生功能 Ctrl-right 可以实现你想要的。
另外,可以使用 snips 插件,一路按 tab 就可以了。 |
24
janus77 2019-10-12 08:27:57 +08:00 via iPhone
end 键
|
25
gimp 2019-10-12 08:39:46 +08:00
我特意观察了下,我没用括号自动补全的插件,但是打'('会同时打')',Esc, i 回到括号输入内容,Esc, l, a, 空格继续写代码,习惯了的话挺快的,找自己喜欢的方式形成肌肉记忆就行,最重要的是操作流畅就好
|
26
ysn2233 2019-10-12 08:43:39 +08:00
我是把 ctrl+A 和 ctrl+E 在插入模式下 map 为 home 和 end (就是 emacs 模式的跳转到行首和尾部,和终端一样),这样打完直接 ctrl + e
|
27
guog 2019-10-12 08:45:40 +08:00 via Android
|
29
guonaihong 2019-10-12 09:01:15 +08:00
%a 或者
%%a |
30
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>非常方便。 |
31
TheWalkingDead 2019-10-12 09:13:54 +08:00
if (a == b) return c;
我一般操作习惯看你要跳转的这个地方的位置,如果)正好在最后一个,我可能直接 ctrl+4 直接到行末尾,然后 i/a/A。 如果括号在中间,我一般是 f 查找然后),然后 i/a/A。 其实习惯了各个键的话,哪种都差不多,没有感觉很累赘。 |
32
joshua7v 2019-10-12 09:14:43 +08:00 via iPhone
在系统级别 map 上下左右
因为在非 vim 中很多时候也需要 |
33
chengyiqun 2019-10-12 09:15:30 +08:00
idea 飘过, ctrl + shift + enter.
可能是姿势问题, 我用 vim 并没感觉效率提升多少. |
34
ScepterZ 2019-10-12 09:16:23 +08:00
可以配置 caps+esdf 来控制上下左右,之前这样用了很长时间,非常舒适,只是需要键盘支持,或者 win 上可以用 ahk
|
35
jdhao 2019-10-12 09:26:10 +08:00 via Android
原生 vim 没有自动补全括号的功能,可能是你装了插件,使用 verbose imap ( 可以查看是哪个地方设置了这个映射。
我现在用的是 auto-pairs 这个插件,可以自动补全各种括号或者 quotation,输入左括号,自动补全右括号,括号里面输入完毕,再按一次右括号,光标自动移动到右括号的后面,可以继续输入,还是比较方便的,不会打断编辑的工作流 |
36
weishu 2019-10-12 09:29:58 +08:00
ctrl + o, A 路过
> ctrl + o: 再插入模式下执行一个命令,然后回到插入模式。 |
37
zeny620 2019-10-12 09:30:15 +08:00
如果用的 ‘ Plug 'jiangmiao/auto-pairs' 括号补全插件,内置 alt+n 跳出括号
|
38
ilaipi 2019-10-12 09:42:15 +08:00
我基本上是 kj 退出 insert 然后 按 e 或者 w
kj 在 insert 模式映射到了 esc |
39
uyhyygyug1234 2019-10-12 09:50:52 +08:00
直接输入 ) 就会跳出了啊
|
40
darksword21 2019-10-12 10:04:21 +08:00
直接 ) +1
|
41
laumm1314 2019-10-12 10:06:19 +08:00
我用这个插件很方便 Plug 'jiangmiao/auto-pairs'
|
42
wuhuaji 2019-10-12 10:20:44 +08:00
这个情况我也考虑过。和上面很多朋友类似,都是先切换回普通模式,然后再跳转到需要编辑的地方插入。
这里通常是需要跳转到行末,所以 ESC(或者其他自定义普通模式键) + A 即可。 然而这个按键组合还是有点麻烦,我是自定义了一个: imap aa <ESC>A 编辑模式下,直接 aa 就可跳到行末去编辑。 |
43
yiningyang1228 OP @DiamondbacK 我其实是在 Intellij 里面用了 Vim 插件,所以遇到了这个问题😂,好像没有自动移出的功能。
|
44
kindjeff 2019-10-12 10:21:20 +08:00
想了半天为什么我没遇到过,最后发现我是用上下左右
|
45
yiningyang1228 OP @jessun1990 因为 mac 系统自带的全局快捷键一般都是和 Ctrl 绑定的,比如往左是 ctrl+b,往右是 ctrl+f, 到行首是 ctrl+a, 当行末是 ctrl+e, 往上是 ctrl+p,往下是 ctrl+n,等等,所以把大小写改成了 ctrl 这样子方便很多。
|
46
yiningyang1228 OP @xiulu 对对对我也觉得,收放在主键盘区就很舒服
|
47
yiningyang1228 OP @wuhuaji 这个做法有点赞👍
|
48
MaxTan 2019-10-12 10:52:42 +08:00
切回 Normal 模式然后 A 就直接插入到行尾了
esc 绑定到 Caps Lock 上,习惯性小拇指狂按 Caps Lock,非编辑状态下一直保持 Normal 模式,Normal 模式下用 jkeb 再配合 aAoOiI 快速定位插入内容 vim 用好的窍门就是狂按 Caps Lock,也就是狂切 Normal 模式, 有事没事都抽风狂按那种,啥时候能练出帕金森的小拇指就差不多了 |
49
yiningyang1228 OP @MaxTan 哈哈哈太真实了
|
50
Xbluer 2019-10-12 17:32:55 +08:00
我一直是这样的
imap (d ()<Esc>i 插入模式下输入 (d 自动不齐括号,并且光标也在中间。 |
51
james122333 2019-10-12 20:57:47 +08:00
imap 加上判断是否在括号内阿
|
52
zuorn 2020-10-12 06:40:12 +08:00
我绑定了 option + hjkl 为方向键,所以按下 option + l 就好了。
|