You could use the command

:s/\n//

But note you may not get exactly the same result as J.  Since the
(example) line ends with a period, when I join those two lines, I get
two blanks between the '.' and the 'T' (see 'joinspaces').

Also, it moves the cursor to the beginning of the line (vs. the join
point); so if your cursor was on, say, the 'i' on the first line, it
would be in the first column afterwards.

If you after doing that sort of thing ins a script, that's why I came
up with SaveLoc() and RestoreLoc():

"
=============================================================================

" FUNCTION: SaveLoc
"       Save the current cursor position (using the given token, if any) so
"       that the same view can be restored (i.e., not just the line/column
of
"       the cursor, but also which line is at the top of the window).

function! SaveLoc(...)
     let token = (a:0 == 1) ? a:1 : 'saved'

     let b:save_{token}_line    = line(".")
     let b:save_{token}_col     = virtcol(".")
     normal! H
     let b:save_{token}_top     = line(".")
     let b:save_{token}_winline = winline()
     let b:save_{token}_adj     = winline() - 1 - &scrolloff

     " Since we just moved the cursor (using H), put it back; we
cannot use ``
     " since the H in the script doesn't go on the "jump stack".
     "
     exe b:save_{token}_line
     exe "normal! " . b:save_{token}_col . "|"
endfunction

"
=============================================================================

" FUNCTION: RestoreLoc
"       Restore the last (given token's, if any) view saved with SaveLoc
"       (above); i.e., not just the line/column of the cursor, but also
which
"       line is at the top of the window.

function! RestoreLoc(...)
     let token = (a:0 == 1) ? a:1 : 'saved'

     " Put the saved line at the top of the window.
     exe b:save_{token}_top
     normal! zt
     let wl     = b:save_{token}_winline
     let adjust = b:save_{token}_adj
     if winline() != wl && adjust > 0
          exe 'normal! ' . adjust . "\<C-Y>"
     endif

     " Put the cursor at the saved column on the saved line.
     exe b:save_{token}_line
     exe "normal! " . b:save_{token}_col . "|"
endfunction

"
=============================================================================

Hope that helps.

-gary

On Dec 13, 8:32 pm, sc <[email protected]> wrote:
> On Sunday 13 December 2009 10:16:20 pm [email protected] wrote:
>
> > Suppose I have two lines like this (indentation only for
> >  makeing it more readable here...)
>
> >     This is the first line.
> >     This is the second line.
>
> > The cursor is in the beginning of the first line.
>
> > Now I want to join the lines with "J" but without moving the
> >  cursor away from where it is before joining.
>
> > Is that possible without scripting?
>
> is using J0 (that's a zero after the J) too much typing for you?  
> or maybe unsatisfactory because the cursor moves then moves back?
>
> sc

-- 
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php

Reply via email to