从开始写代码的时候,老师就教如果写括号,要先写括号,再写括号里面的内容
例如下面的代码:
普通的 text 的书写顺序是:(<-代表左箭头,->代表右箭头)
在 Vim 的书写顺序是什么呢? 这是我的写法 感觉好复杂- -
1 xss 2017-02-20 16:51:25 +08:00 少年, 你需要插件 surround.vim |
![]() | 2 passion336699 2017-02-20 16:59:21 +08:00 while 左手小拇指按住 shift ,打(); 左手无名指按 ESC ,右手中指按 I ,打()里面的代码; ()里条件打完,同操作按 ESC ,左手小拇指按住 shift ,同时左手中指按$,同操作按 I ,再进行其他输入。。 这个指法如何 @_@ |
![]() | 3 daviswei 2017-02-20 16:59:26 +08:00 别扮酷用 hjkl 来移动光标嘛。。。有专门的上下左右撒 |
![]() | 4 lululau 2017-02-20 17:02:29 +08:00 少年, 你需要插件 unimpaired.vim |
6 lzhCoooder 2017-02-20 17:14:51 +08:00 这种插件很多,我觉得你那样也不是很别扭比去按上下左右好多了 |
![]() | 7 ltux 2017-02-20 17:15:36 +08:00 |
![]() | 8 Tiande PRO ![]() 善用各种 map 即可。 譬如下面这个 map , 当你处于 i 模式输入 $t ,会插入书名号 <> ,且光标会移动到 <> 中间。(不需要 Esc 后调整光标位置) 当你处于 v 模式输入 $t ,会用书名号 <> 立即包裹你选中的部分。 ``` vnoremap $t <esc>`>a><esc>`<i<<esc> inoremap $t <><esc>i ``` 括号同理。 |
9 kongse 2017-02-20 17:40:49 +08:00 可以用 Autokey 自己编一个, WIn + 1 插入一对括号, Win + 2 插入两个括号, WIn + Shift + 1 插入<>等,插入后自动移动到中间位置。编好了每个编辑器都能通用。 |
10 majixian621 2017-02-20 18:28:39 +08:00 配置自己的代码习惯吧, vim 里面默认$是行尾,但是$的位置确实有点尴尬,我自己就配置了两个快捷键, le,跳至行尾, lb 跳至行首,同时还可配置文本首尾的跳,还是比较方便的。 vimrc 如下,多练习就好了,我一直觉得码字的速度不是影响写代码的啊。。。。 nmap lb ^ nmap le $ nmap lt H nmap ln L nmap lm M |
![]() | 11 wudanyang 2017-02-20 18:43:04 +08:00 while () <c-[>isomething<c-[>Asomthing |
12 woohaha 2017-02-20 18:48:47 +08:00 先装 surround.vim,再定义^l 为右键 |
13 TerrenceSun 2017-02-20 19:31:49 +08:00 可以试试 ctrl+o ,临时进可视模式 |
![]() |
![]() | 15 loading 2017-02-20 19:38:38 +08:00 via Android 难道不是按 (,然后直接出 (光标) 现在连手机输入法都是直接出一对啦…… |
![]() | 16 rrfeng 2017-02-20 19:53:20 +08:00 不应该是各语言的自动 snippet 插件搞定吗? |
17 DiamondbacK 2017-02-20 20:39:31 +08:00 我自己没什么需求,全是手动打括号。 ``` inoremap jk <Esc> inoremap <Esc> <Nop> ``` while ()jki<code-in>jkla<code-after> 已经够简单了。如果非要搞一个 mapping 来省这么一点点力气,我这儿有个土法炮制刚出炉的: ``` inoremap ( (<Esc>:call AutoParen(nr2char(getchar()))<CR> function! AutoParen(char) call feedkeys('a', a:char, 'n') if a:char != ')' call feedkeys(")\<Esc>i", 'n') endif endfunction ``` 这要智能一些,将连续输入 '()' 作为例外处理了。 while (<code-in>jkla<code-after> 少打 ')jki' 几个字。 |
![]() | 18 loryyang 2017-02-20 20:46:46 +08:00 “从开始写代码的时候,老师就教如果写括号,要先写括号,再写括号里面的内容” 这个是怕你写错括号的匹配吗?感觉意义不大,我都是分开打的。一般括号里面的内容不多,都不会漏的。万一真漏了,编译( cpp )或者运行( python )时都会提醒的 不过你那样写也没问题,并不是很麻烦 |
19 DiamondbacK 2017-02-20 20:46:51 +08:00 typo: call feedkeys('a', a:char, 'n') correct: call feedkeys('a'. a:char, 'n') |
20 klesh 2017-02-20 20:55:32 +08:00 |
![]() | 22 chemzqm 2017-02-20 21:50:00 +08:00 感觉 lz 更需要 https://github.com/SirVer/ultisnips |
![]() | 23 iRiven 2017-02-20 22:06:28 +08:00 同问 |
24 noclyt 2017-02-20 23:21:58 +08:00 天哪, VIM 打个括号竟然这么麻烦! Emacs 围观 ing |
![]() | 25 ywt474000158 2017-02-20 23:29:19 +08:00 习惯之后感觉会记得没闭合的括号吧, 难道是我写的都太简单了... |
![]() | 26 pysama 2017-02-21 00:24:57 +08:00 自动补全配置,输入左括号自动补全后括号,并进入 insert 模式 " 括号自动补全 func! AutoClose() :inoremap ( ()<ESC>i :inoremap " ""<ESC>i :inoremap ' ''<ESC>i :inoremap { {}<ESC>i :inoremap [ []<ESC>i endf 不谢~ |
![]() | 27 pysama 2017-02-21 00:26:29 +08:00 哦,还得补上这个执行语句: ``` au FileType php,c,python,Javascript,html,css exe AutoClose() ``` |
![]() | 28 Immortal 2017-02-21 09:18:59 +08:00 已经脱离纯 vim 了 一直是 idea+vim 插件的方案 idea 下的 vim 操作还是相对接近原生 也有自己的可配置文件 又能使用 idea 这类 ide 带来的便利 |
29 nG29DOMuRYTWfcSr 2017-02-21 13:22:40 +08:00 via Android 何不尝试 SpaceVim. SpaceVim 主页 https://spacevim.org SpaceVim 文档 https://spacevim.org/documentation 当然你也可以看这篇博客,如何打造一个 Java IDE http://spacevim.org/use-vim-as-a-java-ide/ |
![]() | 30 flniu 2017-02-21 13:25:15 +08:00 在 Vim 下一直习惯先打开括号、打完内容、再打闭括号。`set showmatch` 之后,漏打多打闭括号都不太可能。 autoclose 类的插件没有用过。如果能做到 idea 系的效果也是不错的:输入开括号时自动在光标后添加闭括号,若手工再输入闭括号则自动覆盖(相当于向右移动光标)。这样在关注括号里内容时可以省略输入闭括号,在需要输入括号后内容时可以最大限度避免思路中断。 |
![]() | 31 iEverX 2017-02-21 17:23:37 +08:00 忘了从哪个博客里看到的,用的挺顺手的 inoremap ( ()<esc>i inoremap ) <c-r>=ClosePair(')')<cr> inoremap [ []<esc>i inoremap ] <c-r>=ClosePair(']')<cr> inoremap { {}<esc>i inoremap } <c-r>=ClosePair('}')<cr> inoremap (<cr> (<cr>)<esc>O inoremap [<cr> [<cr>]<esc>O inoremap {<cr> {<cr>}<esc>O function! ClosePair(char) if getline('.')[col('.')-1] == a:char return "\<Right>" else return a:char endif endfunction |
![]() | 32 waruqi 2017-02-21 18:21:37 +08:00 写个括号。没必要整的这么复杂吧。。直接顺序手打 ( . ) 下就行了。。 |
![]() | 33 JamesRuan 2017-02-21 20:05:53 +08:00 谁让你们一开始就把括号闭起来的啦,最后闭合一点问题都没有。 |