Loading ...
Sorry, an error occurred while loading the content.

Re: do word jump commands without line-wrap?

Expand Messages
  • Paul Isambert
    ... I think the following is slightly less nasty :) fu! MyWordMovement(backward) if search(
    Message 1 of 6 , Apr 3, 2013
    • 0 Attachment
      Selon Christian Brabandt <cblists@...>:

      > Hi neolus!
      >
      > On Mi, 03 Apr 2013, neolus wrote:
      >
      > > Hi! is there any fast neat way to tell vim not to go to next/previous word
      > if
      > > it's on a different line that doesn't require writing a function? e.g. a
      > > flag or something? I looked but can't find anything on it other than
      > > whichwrap but it seems that only applies to hjkl stuff..
      >
      > I am afraid it is not possible without writing a function:
      >
      >
      > fu! MyWordMovement(fwd)
      > if a:fwd
      > return ':call search('.string('\%'.line('.').'l\<'). ',"W")'."\<cr>"
      > else
      > return ':call search('.string('\%'.line('.').'l\<'). ',"bW")'."\<cr>"
      > endif
      > endfu
      > nnoremap <silent> <expr> w MyWordMovement(1)
      > nnoremap <silent> <expr> b MyWordMovement(0)
      >
      > Quoting is a little bit nastyš, but seems to work for me.

      I think the following is slightly less nasty :)

      fu! MyWordMovement(backward)
      if search('\<', 'n' . a:backward, line('.'))
      return len(a:backward) ? "b" : "w"
      else
      return "\<Esc>"
      endif
      endfunction
      nnoremap <silent> <expr> w MyWordMovement("")
      nnoremap <silent> <expr> b MyWordMovement("b")

      Best,
      Paul

      --
      --
      You received this message from the "vim_use" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php

      ---
      You received this message because you are subscribed to the Google Groups "vim_use" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    • neolus
      You guys are awesome for replying so fast :) At least I know now. What I ll do I think is before executing the action, make a mark, save the line number to a
      Message 2 of 6 , Apr 4, 2013
      • 0 Attachment
        You guys are awesome for replying so fast :)
        At least I know now.
        What I'll do I think is before executing the action, make a mark, save the
        line number to a variable, do the command, check to see if it changed and if
        so jump to the mark. That way I could apply it to each word command variant.
        Can anyone think of any weird corner cases where something might throw it
        off? it sounds like a concrete aproach but maybe there's weird values for
        line number in some cases or something y'know?



        --
        View this message in context: http://vim.1045645.n5.nabble.com/do-word-jump-commands-without-line-wrap-tp5714783p5714818.html
        Sent from the Vim - General mailing list archive at Nabble.com.

        --
        --
        You received this message from the "vim_use" maillist.
        Do not top-post! Type your reply below the text you are replying to.
        For more information, visit http://www.vim.org/maillist.php

        ---
        You received this message because you are subscribed to the Google Groups "vim_use" group.
        To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
        For more options, visit https://groups.google.com/groups/opt_out.
      • Tim Chase
        ... which also happens to behave in a way that makes sense with your wrapscan setting. The behavior is slightly different from the stock behaviors, as it
        Message 3 of 6 , Apr 4, 2013
        • 0 Attachment
          On 2013-04-03 10:21, neolus wrote:
          > Hi! is there any fast neat way to tell vim not to go to
          > next/previous word if it's on a different line that doesn't require
          > writing a function? e.g. a flag or something? I looked but can't
          > find anything on it other than whichwrap but it seems that only
          > applies to hjkl stuff..

          You could try the following mappings:

          :nnoremap w /<bslash>%<c-r>=line('.')<cr>l<bslash><lt><cr>
          :nnoremap b ?<bslash>%<c-r>=line('.')<cr>l<bslash><lt><cr>

          which also happens to behave in a way that makes sense with your
          'wrapscan' setting. The behavior is slightly different from the
          stock behaviors, as it looks for a beginning-of-word, so it doesn't
          land on intermediate punctuation. But for most cases it should do
          what you want.

          -tim



          --
          --
          You received this message from the "vim_use" maillist.
          Do not top-post! Type your reply below the text you are replying to.
          For more information, visit http://www.vim.org/maillist.php

          ---
          You received this message because you are subscribed to the Google Groups "vim_use" group.
          To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
          For more options, visit https://groups.google.com/groups/opt_out.
        Your message has been successfully submitted and would be delivered to recipients shortly.