A. S. Budden Sent on December 07, 2006:
  >On 07/12/06, Karsten Gerloff <[EMAIL PROTECTED]> wrote:
  >> On Wed, Dec 06, 2006 at 02:32:12PM +0000, A. S. Budden wrote:
  >>> On 06/12/06, Karsten Gerloff <[EMAIL PROTECTED]> wrote:
  >>>> Hi,
  >>>> 
  >>>> I'm currently writing a lot of text in vim that will later
  >>>> need to transfer to a word processor (OpenOffice 2.0 in this
  >>>> case).
  >>>>
  >>>> Since it makes reading easier, I want to make lines wrap at
  >>>> 66 chars; this has long worked fine with
  >>>> 
  >>>>         set textwidth=66
  >>>> 
  >>>> But this inserts hard line breaks (<EOL>), which I don't want
  >>>> to show up later in the word processor. No luck at vim.org.
  >>>> So I tried the vim FAQ at
  >>>> 
  >>>>         http://vimdoc.sourceforge.net/vimfaq.html
  >>>> 
  >>>> and it told me to put the following into my .vimrc:
  >>>> 
  >>>>     :set wrap
  >>>>     :set linebreak
  >>>>     :set textwidth=0
  >>>>     :set showbreak=>>>
  >>>> 
  >>>> which works nicely as far as the EOLs are concerned. But the
  >>>> lines still run over the whole width of the screen. Setting
  >>>> textwidth=66 re-introduces the unwanted EOLs.
  >>>>
  >>>> Any hints?
  >>>
  >>> I find that the easiest way is to set tw to whatever you want
  >>> it to be, write the text and then (just before pasting into
  >>> OpenOffice):
  >>>
  >>> :set tw=10000
  >>> gggqG
  >>> gg"+G
  >>>
  >>> To reformat the text with long lines. Assuming formatoptions
  >>> is set to something sensible, this works a treat.
  >>
  >> It does indeed! Thanks for this great hint -- especially useful
  >> since I already have large amounts of text I need to move into
  >> OpenOffice.
  >>
  >> To make it still more convenient, I turned it into a macro and
  >> mapped it to F4:
  >>
  >>         map <F4> :set tw=10000<CR>gggqGgg"+G
  >>
  >> The only thing I haven't managed yet is to set textwidth back
  >> to 66 after that. Simply appending
  >>
  >>         :set tw=66<CR>
  >
  > I haven't tried it, but I imagine you'd need:
  > 
  > map <F4> :set tw=10000<CR>gggqGgg"+G:set tw=66<CR>gggqG
  > 
  > see:
  > 
  > :he gg
  > :he gq
  > :he G
  > 
  > to ensure that the reformatting is done again. You could make it
  > even more clever by adding something like mq on the start and `q
  > on the end: it should then return the cursor to it's initial
  > position.
  > 
  > :he m
  > :he `
  
  After setting tw=66, gggqG might not bring the buffer to the
  "original" formatting -- better to do just do undo after :set tw=66.  

  :help undo

  --Suresh

Reply via email to