从开始写代码的时候,老师就教如果写括号,要先写括号,再写括号里面的内容
例如下面的代码:
普通的 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 2017-02-20 17:21:33 +08:00 1
善用各种 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 ,临时进可视模式
|
14
binux 2017-02-20 19:38:04 +08:00
对的,我就是用那种最复杂的方式写括号,然后 ESC 移动再插入的。
插件帮我闭合了我还不习惯! |
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
谁让你们一开始就把括号闭起来的啦,最后闭合一点问题都没有。
|