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

":normal /pattern" can't take effect in gVim 7.3.46

Expand Messages
  • xjtuei@...
    Hi All I want to use the below command in command line to search my specified pattern in the text ... However, it doesn t take effect in my current
    Message 1 of 4 , Jul 11, 2013
    • 0 Attachment
      Hi All
      I want to use the below command in command line to search my specified pattern in the text
      :normal /pattern

      However, it doesn't take effect in my current version:gVim 7.3.46

      anyone knows how to correct this command or other comments?

      My request is from below case:
      used for I want to set my own command to search the pattern when I did the selection on the konsole terminal


      currently I could use below succesfully to insert some text which I selected on the konsole.
      :command Joe :exec "normal i" . @*

      but can't I can't use below to search the pattern text which I selected on the konsole.
      :command Joe2 :exec "normal /" . @*

      and I guess it's due to the "normal /" is not a correct or complete command here.






      I have read the webpage:
      http://vim.wikia.com/wiki/Using_normal_command_in_a_script_for_searching

      but I can't understand why they do that.


      :execute "normal /pattern/e+1\<CR>"

      --
      --
      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.
    • Christian Brabandt
      ... Well, when you are searching using / you need to press enter to stop entering pattern and actually start the search. So you are at least missing the
      Message 2 of 4 , Jul 11, 2013
      • 0 Attachment
        On Thu, July 11, 2013 09:31, xjtuei@... wrote:
        > Hi All
        > I want to use the below command in command line to search my specified
        > pattern in the text
        > :normal /pattern
        >
        > However, it doesn't take effect in my current version:gVim 7.3.46
        >
        > anyone knows how to correct this command or other comments?
        >
        > My request is from below case:
        > used for I want to set my own command to search the pattern when I did the
        > selection on the konsole terminal
        >
        >
        > currently I could use below succesfully to insert some text which I
        > selected on the konsole.
        > :command Joe :exec "normal i" . @*
        >
        > but can't I can't use below to search the pattern text which I selected on
        > the konsole.
        > :command Joe2 :exec "normal /" . @*
        >
        > and I guess it's due to the "normal /" is not a correct or complete
        > command here.
        >
        Well, when you are searching using '/' you need to press enter to stop
        entering pattern and actually start the search. So you are at least missing
        the ."\<cr>" part at the end of your command. But using normal for this
        is clumsy and I would do it like this:

        :com Joe :let @/=@*|norm! n

        Depending on your pattern, you might need to escape certains things, e.g.
        to search literally use something like this:

        :com Joe :let @/='\V'.escape(@*, '\\')|norm! n


        BTW: you usually want :norm! instead of :norm

        See also the help:
        :h escape
        :h :norm

        regards,
        Christian

        --
        --
        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.
      • xjtuei@...
        在 2013年7月11日星期四UTC+8下午7时58分17秒,Christian Brabandt写道: ... thanks Christian, I have read some pages and :he normal and :help exec
        Message 3 of 4 , Jul 11, 2013
        • 0 Attachment
          在 2013年7月11日星期四UTC+8下午7时58分17秒,Christian Brabandt写道:
          > On Thu, July 11, 2013 09:31, xjtuei@... wrote:
          >
          > > Hi All
          >
          > > I want to use the below command in command line to search my specified
          >
          > > pattern in the text
          >
          > > :normal /pattern
          >
          > >
          >
          > > However, it doesn't take effect in my current version:gVim 7.3.46
          >
          > >
          >
          > > anyone knows how to correct this command or other comments?
          >
          > >
          >
          > > My request is from below case:
          >
          > > used for I want to set my own command to search the pattern when I did the
          >
          > > selection on the konsole terminal
          >
          > >
          >
          > >
          >
          > > currently I could use below succesfully to insert some text which I
          >
          > > selected on the konsole.
          >
          > > :command Joe :exec "normal i" . @*
          >
          > >
          >
          > > but can't I can't use below to search the pattern text which I selected on
          >
          > > the konsole.
          >
          > > :command Joe2 :exec "normal /" . @*
          >
          > >
          >
          > > and I guess it's due to the "normal /" is not a correct or complete
          >
          > > command here.
          >
          > >
          >
          > Well, when you are searching using '/' you need to press enter to stop
          >
          > entering pattern and actually start the search. So you are at least missing
          >
          > the ."\<cr>" part at the end of your command. But using normal for this
          >
          > is clumsy and I would do it like this:
          >
          >
          >
          > :com Joe :let @/=@*|norm! n
          >
          >
          >
          > Depending on your pattern, you might need to escape certains things, e.g.
          >
          > to search literally use something like this:
          >
          >
          >
          > :com Joe :let @/='\V'.escape(@*, '\\')|norm! n
          >
          >
          >
          >
          >
          > BTW: you usually want :norm! instead of :norm
          >
          >
          >
          > See also the help:
          >
          > :h escape
          >
          > :h :norm
          >
          >
          >
          > regards,
          >
          > Christian

          thanks Christian,
          I have read some pages and :he normal and :help exec and have some new findings now. My issue has been resolved...



          For the normal and execute usage:
          Refer to
          http://vim.wikia.com/wiki/Using_normal_command_in_a_script_for_searching
          http://vim.wikia.com/wiki/Searching_for_expressions_which_include_slashes
          https://groups.google.com/forum/#!searchin/vim_use/normal/vim_use/s0Q3RYiwupY/Y5L_jaWb0kMJ

          when use the :normal ? or :normal /
          it expects an finish signal, such as \n (return) or ^M (first type Ctrl-V then Ctrl-M to input it on the command line), all these are known as <CR>, but we can’t type <CR> or <Enter> here, due to <CR> and <Enter> are only used in command line or .vimrc or other vim scripts.


          So we could use below:

          1) Single use :normal




          :normal /pattern^M (here ^M is first type Ctrl-V then Ctrl-M)


          2) Together With execute ,supposed the pattern is plain text and contains no symbols.


          :exec “normal /pattern\n”
          :exec “normal /pattern\<CR>”


          Or
          :exe “normal /pattern” . “\n”
          :exe “normal /pattern” . “\<CR>”
          Or




          :exe ‘normal /pattern’ . “\n”
          :exe ‘normal /pattern’ . “\<CR>”

          Or
          :exe “normal /” . “pattern” . “\n”
          :exe “normal /” . “pattern” . “\<CR>”


          So, use below command to search the pattern which is selected in a konsole terminal or other.


          :execute "normal /". @* . "\<CR>"

          :execute "normal ?". @* . "\<CR>"

          --
          --
          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.
        • xjtuei@...
          在 2013年7月11日星期四UTC+8下午7时58分17秒,Christian Brabandt写道: ... Your below point ... is used to search text which may include slash or
          Message 4 of 4 , Jul 11, 2013
          • 0 Attachment
            在 2013年7月11日星期四UTC+8下午7时58分17秒,Christian Brabandt写道:
            > On Thu, July 11, 2013 09:31, xjtuei@... wrote:
            >
            > > Hi All
            >
            > > I want to use the below command in command line to search my specified
            >
            > > pattern in the text
            >
            > > :normal /pattern
            >
            > >
            >
            > > However, it doesn't take effect in my current version:gVim 7.3.46
            >
            > >
            >
            > > anyone knows how to correct this command or other comments?
            >
            > >
            >
            > > My request is from below case:
            >
            > > used for I want to set my own command to search the pattern when I did the
            >
            > > selection on the konsole terminal
            >
            > >
            >
            > >
            >
            > > currently I could use below succesfully to insert some text which I
            >
            > > selected on the konsole.
            >
            > > :command Joe :exec "normal i" . @*
            >
            > >
            >
            > > but can't I can't use below to search the pattern text which I selected on
            >
            > > the konsole.
            >
            > > :command Joe2 :exec "normal /" . @*
            >
            > >
            >
            > > and I guess it's due to the "normal /" is not a correct or complete
            >
            > > command here.
            >
            > >
            >
            > Well, when you are searching using '/' you need to press enter to stop
            >
            > entering pattern and actually start the search. So you are at least missing
            >
            > the ."\<cr>" part at the end of your command. But using normal for this
            >
            > is clumsy and I would do it like this:
            >
            >
            >
            > :com Joe :let @/=@*|norm! n
            >
            >
            >
            > Depending on your pattern, you might need to escape certains things, e.g.
            >
            > to search literally use something like this:
            >
            >
            >
            > :com Joe :let @/='\V'.escape(@*, '\\')|norm! n
            >
            >
            >
            >
            >
            > BTW: you usually want :norm! instead of :norm
            >
            >
            >
            > See also the help:
            >
            > :h escape
            >
            > :h :norm
            >
            >
            >
            > regards,
            >
            > Christian
            Your below point
            :com Joe :let @/=@*|norm! n
            is used to search text which may include slash or not
            :com Joe :let @/='\V'.escape(@*, '\\')|norm! n
            is used to search any text literally which may have ",@,/,\ ...etc and without extra manual escape process.
            is like something they are talked about in

            http://vim.wikia.com/wiki/Searching_for_expressions_which_include_slashes

            this issue has been resolved.
            thanks a lot.

            --
            --
            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.