vim如何不用o来产生空行,因为o后会进入插入模式,有没有哪个键是直接就在下面插入空行的

3,313 views
Skip to first unread message

Gavin

unread,
Sep 21, 2011, 7:51:49 AM9/21/11
to vim-cn
Hi,

vim如何不用o来产生空行,因为o后会进入插入模式,有没有哪个键是直接就在下面插入空行的
当然,我想要的不是yy一个空行然后p这样

不知有没有这个功能,大家谁知道,指点下

Regards,


--------------
Gavin

args

unread,
Sep 21, 2011, 7:55:41 AM9/21/11
to Vim.cn
貌似没有,自定义吧。

unbutun

unread,
Sep 21, 2011, 7:57:09 AM9/21/11
to vim-cn
那空行用啥来表示呢?
 

unbutun
 
发件人: args
发送时间: 2011-09-21 19:55
收件人: Vim.cn
主题: [Vim-cn:5540] Re: vim如何不用o来产生空行,因为o后会进入插入模式,有没有哪个键是直接就在下面插入空行的
-- 
要退订此论坛,请发邮件至 vim-cn+un...@googlegroups.com
更多选项,请通过 http://groups.google.com/group/vim-cn 访问该论坛

依云

unread,
Sep 21, 2011, 8:08:12 AM9/21/11
to vim...@googlegroups.com
On Wed, Sep 21, 2011 at 07:57:09PM +0800, unbutun wrote:
> 那空行用啥来表示呢?

你们怎么都不看我的 vimrc。。。。

https://github.com/lilydjwg/dotvim/blob/master/vimrc#L532-533

nmap <silent> to :call append('.', '')<CR>j
nmap <silent> tO :call append(line('.')-1, '')<CR>k

--
Best regards,
lilydjwg

Linux Vim Python 我的博客
http://lilydjwg.is-programmer.com/

Jacky Liu

unread,
Sep 22, 2011, 12:48:00 AM9/22/11
to vim...@googlegroups.com


2011/9/21 Gavin <unb...@sohu.com>
--
要退订此论坛,请发邮件至 vim-cn+un...@googlegroups.com
更多选项,请通过 http://groups.google.com/group/vim-cn 访问该论坛

nnoremap    o    o<Esc>
nnoremap    O    O<Esc>


--
http://bluegene8210.is-programmer.com/

AleiPhoenix (A.K.A Areverie)

unread,
Sep 22, 2011, 1:10:26 AM9/22/11
to vim...@googlegroups.com
好长,需要配合manual来一起看XDD

2011/9/21 依云 <lily...@gmail.com>

--
要退订此论坛,请发邮件至 vim-cn+un...@googlegroups.com
更多选项,请通过 http://groups.google.com/group/vim-cn 访问该论坛



--
The enemy is always yourself.

twitter: @areverie
wikipedia: AleiPhoenix
blog: weblog.areverie.org
wiki: wiki.areverie.org


依云

unread,
Sep 22, 2011, 2:46:27 AM9/22/11
to vim...@googlegroups.com
On Thu, Sep 22, 2011 at 01:10:26PM +0800, AleiPhoenix (A.K.A Areverie) wrote:
> 好长,需要配合manual来一起看XDD

设置无误的话在关键字上按 K 就可以看到 manual 了。

aleiphoenix

unread,
Sep 22, 2011, 5:42:54 AM9/22/11
to vim...@googlegroups.com
嗯,一般可以的:)

不过看manual还是有点找不着头绪的感觉。大多数时候都靠google

Jacky Liu

unread,
Sep 22, 2011, 6:07:11 AM9/22/11
to vim...@googlegroups.com


2011/9/21 依云 <lily...@gmail.com>

--
要退订此论坛,请发邮件至 vim-cn+un...@googlegroups.com
更多选项,请通过 http://groups.google.com/group/vim-cn 访问该论坛

这样一次只能加一行,不能 9to

--
http://bluegene8210.is-programmer.com/

依云

unread,
Sep 22, 2011, 8:11:19 AM9/22/11
to vim...@googlegroups.com
On Thu, Sep 22, 2011 at 06:07:11PM +0800, Jacky Liu wrote:
> 2011/9/21 依云 <lily...@gmail.com>
>
> > On Wed, Sep 21, 2011 at 07:57:09PM +0800, unbutun wrote:
> > > 那空行用啥来表示呢?
> >
> > 你们怎么都不看我的 vimrc。。。。
> >
> > https://github.com/lilydjwg/dotvim/blob/master/vimrc#L532-533
> >
> > nmap <silent> to :call append('.', '')<CR>j
> > nmap <silent> tO :call append(line('.')-1, '')<CR>k
>
> 这样一次只能加一行,不能 9to

懒得弄那么复杂了。真要加那么多空行的话,用 9o<Esc> 不就好了嘛。当然,如
果有人愿意写 patch 的话我会很高兴的 ;-P

Jacky Liu

unread,
Sep 22, 2011, 8:39:27 AM9/22/11
to vim...@googlegroups.com


2011/9/22 依云 <lily...@gmail.com>

On Thu, Sep 22, 2011 at 06:07:11PM +0800, Jacky Liu wrote:
> 2011/9/21 依云 <lily...@gmail.com>
>
> > On Wed, Sep 21, 2011 at 07:57:09PM +0800, unbutun wrote:
> > > 那空行用啥来表示呢?
> >
> > 你们怎么都不看我的 vimrc。。。。
> >
> > https://github.com/lilydjwg/dotvim/blob/master/vimrc#L532-533
> >
> > nmap <silent> to :call append('.', '')<CR>j
> > nmap <silent> tO :call append(line('.')-1, '')<CR>k
>
> 这样一次只能加一行,不能 9to

懒得弄那么复杂了。真要加那么多空行的话,用 9o<Esc> 不就好了嘛。当然,如
果有人愿意写 patch 的话我会很高兴的 ;-P


楼主的意思,大概是要免按这个 Esc 才是主要目的。但是我刚翻了一下 help,好像没有什么方法可以获得已输入的 [count] 。

--
http://bluegene8210.is-programmer.com/

依云

unread,
Sep 22, 2011, 9:00:12 AM9/22/11
to vim...@googlegroups.com

:h v:count

Jacky Liu

unread,
Sep 22, 2011, 9:07:31 AM9/22/11
to vim...@googlegroups.com


2011/9/22 依云 <lily...@gmail.com>
On Thu, Sep 22, 2011 at 08:39:27PM +0800, Jacky Liu wrote:
> 2011/9/22 依云 <lily...@gmail.com>
>
> > On Thu, Sep 22, 2011 at 06:07:11PM +0800, Jacky Liu wrote:
> > > 2011/9/21 依云 <lily...@gmail.com>
> > >
> > > > On Wed, Sep 21, 2011 at 07:57:09PM +0800, unbutun wrote:
> > > > > 那空行用啥来表示呢?
> > > >
> > > > 你们怎么都不看我的 vimrc。。。。
> > > >
> > > > https://github.com/lilydjwg/dotvim/blob/master/vimrc#L532-533
> > > >
> > > > nmap <silent> to :call append('.', '')<CR>j
> > > > nmap <silent> tO :call append(line('.')-1, '')<CR>k
> > >
> > > 这样一次只能加一行,不能 9to
> >
> > 懒得弄那么复杂了。真要加那么多空行的话,用 9o<Esc> 不就好了嘛。当然,如
> > 果有人愿意写 patch 的话我会很高兴的 ;-P
> >
> >
> 楼主的意思,大概是要免按这个 Esc 才是主要目的。但是我刚翻了一下 help,好像没有什么方法可以获得已输入的 [count] 。

:h v:count


Oh yea ... 我刚还正在试另一个解决方案:

nnoremap \\ :call <SID>TestFunction()<CR>

function! s:TestFunction() range
    let l:cnt= a:lastline - a:firstline + 1
    echomsg 'count ' . l:cnt . ' specified !'
endfunction

是行得通的,但你这个似乎更好:

nnoremap \\ :call <SID>TestFunction()<CR>

function! s:TestFunction()
    echomsg 'count ' . v:count . ' specified !'
endfunction

--
http://bluegene8210.is-programmer.com/

依云

unread,
Sep 22, 2011, 10:21:15 AM9/22/11
to vim...@googlegroups.com

上面那个有问题的。你试试在一个空文件里输入 10\\。

Jacky Liu

unread,
Sep 22, 2011, 11:29:23 AM9/22/11
to vim...@googlegroups.com


2011/9/22 依云 <lily...@gmail.com>
On Thu, Sep 22, 2011 at 09:07:31PM +0800, Jacky Liu wrote:
> 2011/9/22 依云 <lily...@gmail.com>
>
> > On Thu, Sep 22, 2011 at 08:39:27PM +0800, Jacky Liu wrote:
> > >
> > > 楼主的意思,大概是要免按这个 Esc 才是主要目的。但是我刚翻了一下 help,好像没有什么方法可以获得已输入的 [count] 。
> >
> > :h v:count
> >
> >
> Oh yea ... 我刚还正在试另一个解决方案:
>
> nnoremap \\ :call <SID>TestFunction()<CR>
>
> function! s:TestFunction() range
>     let l:cnt= a:lastline - a:firstline + 1
>     echomsg 'count ' . l:cnt . ' specified !'
> endfunction
>
> 是行得通的,但你这个似乎更好:
>
> nnoremap \\ :call <SID>TestFunction()<CR>
>
> function! s:TestFunction()
>     echomsg 'count ' . v:count . ' specified !'
> endfunction

上面那个有问题的。你试试在一个空文件里输入 10\\。


恩,所以除了 v:count 木有别的办法。

patch:

nnoremap to :<C-u>call <SID>InsertEmptyLines('o')<CR>
nnoremap tO :<C-u>call <SID>InsertEmptyLines('O')<CR>

function! s:InsertEmptyLines(op)
    if a:op == 'o'
        exe 'normal! ' . v:count1 . "o\<Esc>"
    else
        exe 'normal! ' . v:count1 . "O\<Esc>"
        if v:count1 > 1
            exe 'normal! ' . (v:count1-1) . 'k'
        endif
    endif
endfunction

我已经加到我的 .vimrc 里了,但没有加那个 't'。

--
http://bluegene8210.is-programmer.com/

依云

unread,
Sep 23, 2011, 2:47:23 AM9/23/11
to vim...@googlegroups.com
On Thu, Sep 22, 2011 at 11:29:23PM +0800, Jacky Liu wrote:
> 恩,所以除了 v:count 木有别的办法。
>
> patch:
>
> nnoremap to :<C-u>call <SID>InsertEmptyLines('o')<CR>
> nnoremap tO :<C-u>call <SID>InsertEmptyLines('O')<CR>
>
> function! s:InsertEmptyLines(op)
> if a:op == 'o'
> exe 'normal! ' . v:count1 . "o\<Esc>"
> else
> exe 'normal! ' . v:count1 . "O\<Esc>"
> if v:count1 > 1
> exe 'normal! ' . (v:count1-1) . 'k'
> endif
> endif
> endfunction
>
> 我已经加到我的 .vimrc 里了,但没有加那个 't'。

这个叫 code snip 不叫 patch.....
另外,我就是为了避免模式切换才会去做这个映射的。fcitx 3.6 的时候有些问题,
快速的调用 fcitx-remote 会导致死锁之类的。而我的 vim
在 Insert{Leave,Enter} 时会调用它。

Jacky Liu

unread,
Sep 23, 2011, 5:04:40 AM9/23/11
to vim...@googlegroups.com


2011/9/23 依云 <lily...@gmail.com>

On Thu, Sep 22, 2011 at 11:29:23PM +0800, Jacky Liu wrote:
> 恩,所以除了 v:count 木有别的办法。
>
> patch:
>
> nnoremap to :<C-u>call <SID>InsertEmptyLines('o')<CR>
> nnoremap tO :<C-u>call <SID>InsertEmptyLines('O')<CR>
>
> function! s:InsertEmptyLines(op)
>     if a:op == 'o'
>         exe 'normal! ' . v:count1 . "o\<Esc>"
>     else
>         exe 'normal! ' . v:count1 . "O\<Esc>"
>         if v:count1 > 1
>             exe 'normal! ' . (v:count1-1) . 'k'
>         endif
>     endif
> endfunction
>
> 我已经加到我的 .vimrc 里了,但没有加那个 't'。

这个叫 code snip 不叫 patch.....
另外,我就是为了避免模式切换才会去做这个映射的。fcitx 3.6 的时候有些问题,
快速的调用 fcitx-remote 会导致死锁之类的。而我的 vim
在 Insert{Leave,Enter} 时会调用它。


我也用了那个自动命令:

autocmd! InsertLeave *    if system('fcitx-remote') != 0 | call system('fcitx-remote -c') | endif

但是没用 InsertEnter。fcitx 是 3.6.3 版,目前没遇到过死锁。

--
http://bluegene8210.is-programmer.com/

surmise

unread,
Sep 28, 2011, 4:37:48 AM9/28/11
to Vim.cn
这样加空行还是很方便的,比如想加10个空行
10 o esc
就好了,而且不在插入模式。

On 9月21日, 下午7时51分, Gavin <unbu...@sohu.com> wrote:

Patrick Wai

unread,
Oct 9, 2014, 1:20:22 PM10/9/14
to vim...@googlegroups.com
新发现一个命令, 使用点(.)重复上一个命令,如果是编辑代码或其他文本,需要插入很多空行,可以这样子:先用o打开一个空行,然后ESC,接着就可以用.来操作了。每一次点.会在当前行的下面打开一个空行,并且不会进入编辑模式。

在 2011年9月21日星期三UTC+8下午7时51分49秒,gavin写道:

Kent

unread,
Oct 12, 2014, 6:57:49 PM10/12/14
to vim-cn
vim 还有个命令: map

--
要退订此论坛,请发邮件至 vim-cn+un...@googlegroups.com
更多选项,请通过 http://groups.google.com/group/vim-cn 访问该论坛

---
您收到此邮件是因为您订阅了Google网上论坛中的“Vim.cn”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到vim-cn+un...@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

Message has been deleted

Shidong Wang

unread,
Apr 22, 2017, 1:14:07 AM4/22/17
to Vim.cn
"Quickly add empty lines 
nnoremap <silent>[<space>  :<c-u>put! =repeat(nr2char(10), v:count1)<cr> 
nnoremap <silent>]<space>  :<c-u>put =repeat(nr2char(10), v:count1)<cr>
在 2011年9月21日星期三 UTC+8下午7:51:49,gavin写道:
Reply all
Reply to author
Forward
0 new messages