Vim Tips Wiki
Deterb (talk | contribs)
(Change <tt> to <code>, perhaps also minor tweak.)
(4 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
|previous=382
 
|previous=382
 
|next=384
 
|next=384
|created=December 6, 2002
+
|created=2002
 
|complexity=basic
 
|complexity=basic
 
|author=zzapper
 
|author=zzapper
 
|version=6.0
 
|version=6.0
 
|rating=0/7
 
|rating=0/7
  +
|category1=
  +
|category2=
 
}}
 
}}
 
When writing/debugging code you often want to jump from where a subroutine/function is called to where it actually is . Hitting the "*" key is frustrating if the sub/func is called many times. The following mapping solves the problem. (Notice how it can be altered for other lanaguages)
 
When writing/debugging code you often want to jump from where a subroutine/function is called to where it actually is . Hitting the "*" key is frustrating if the sub/func is called many times. The following mapping solves the problem. (Notice how it can be altered for other lanaguages)
   
nmap gx yiw/^\(sub\&lt;bar&gt;function\)\s\+&lt;C-R&gt;"&lt;CR&gt;
+
nmap gx yiw/^\(sub\<Bar>function\)\s\+<C-R>"<CR>
   
Instructions: Place cursor over called function (normal mode) and type <tt>gx</tt>
+
Instructions: Place cursor over called function (normal mode) and type <code>gx</code>
   
 
==How it works==
 
==How it works==
 
;yiw : Yank inner work to un-named register
 
;yiw : Yank inner work to un-named register
   
;/^\(sub\&lt;bar&gt;function\)\s\+ : search for sub or function followed by 1 or more spaces
+
;/^\(sub\<Bar>function\)\s\+ : search for sub or function followed by 1 or more spaces
   
;&lt;C-R&gt;" : Retrieve un-named register
+
;<C-R>" : Retrieve un-named register
   
;&lt;CR&gt; : Start Search
+
;<CR> : Start Search
   
 
Information also included in [[VimTip305]].
 
Information also included in [[VimTip305]].
Line 34: Line 36:
 
:Probably perl, which also uses sub for functions
 
:Probably perl, which also uses sub for functions
 
----
 
----
  +
I suggest to modify mapping:
  +
nmap gx mryiw/^\(sub\<Bar>function\)\s\+<C-R>"<CR>
  +
  +
thus allowing reverse jump by typing `r
  +
----
  +
I think this would be much better accomplished using Vim's excellent Ctags interface. {{help|ctags}}. Exuberant Ctags has support for Perl. --[[User:Fritzophrenic|Fritzophrenic]] 20:03, 18 February 2009 (UTC)

Revision as of 05:27, 13 July 2012

Tip 383 Printable Monobook Previous Next

created 2002 · complexity basic · author zzapper · version 6.0


When writing/debugging code you often want to jump from where a subroutine/function is called to where it actually is . Hitting the "*" key is frustrating if the sub/func is called many times. The following mapping solves the problem. (Notice how it can be altered for other lanaguages)

nmap gx yiw/^\(sub\<Bar>function\)\s\+<C-R>"<CR>

Instructions: Place cursor over called function (normal mode) and type gx

How it works

yiw
Yank inner work to un-named register
/^\(sub\<Bar>function\)\s\+
search for sub or function followed by 1 or more spaces
<C-R>"
Retrieve un-named register
<CR>
Start Search

Information also included in VimTip305.

References

Comments

What language is this supposed to work in? Basic??

Probably perl, which also uses sub for functions

I suggest to modify mapping: nmap gx mryiw/^\(sub\<Bar>function\)\s\+<C-R>"<CR>

thus allowing reverse jump by typing `r


I think this would be much better accomplished using Vim's excellent Ctags interface. :help ctags. Exuberant Ctags has support for Perl. --Fritzophrenic 20:03, 18 February 2009 (UTC)