在 2013年7月11日星期四UTC+8下午7时58分17秒,Christian Brabandt写道: > On Thu, July 11, 2013 09:31, [email protected] 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 [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
