Vim Tips Wiki
(minor tweaks)
No edit summary
Tag: Visual edit
 
(9 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 
{{TipImported
 
{{TipImported
 
|id=288
 
|id=288
|previous=287
+
|previous=286
 
|next=290
 
|next=290
 
|created=2002
 
|created=2002
Line 11: Line 11:
 
|category2=Java
 
|category2=Java
 
}}
 
}}
This mapping makes it much simpler to write new java classes by automating a repetitive coding task, the creation of setters and getters.
+
This mapping makes it much simpler to write new java classes by automating a repetitive coding task, the creation of setters and getters. Note that a ready-made [[#Plugins|plugin]] exists to do much the same thing.
   
 
To use, first write a basic class with the following format:
 
To use, first write a basic class with the following format:
Line 17: Line 17:
 
public class MyClass
 
public class MyClass
 
{
 
{
private <type> <varname> = <initvalue>;
+
private boolean isActive
private <type> <varname> = initvalue>;
 
// getters
 
// setters
 
 
}
 
}
 
</pre>
 
</pre>
Line 48: Line 45:
 
</pre>
 
</pre>
   
This will create the first getter/setter and then move up to the next variable. A user can continue typing <tt>jgs</tt> until all the getters/setters have been generated.
+
This will create the first getter/setter and then move up to the next variable. A user can continue typing <code>jgs</code> until all the getters/setters have been generated.
   
==See also==
+
==Plugins==
  +
*The {{script|id=490|text=java_getset.vim}} script makes it dead simple to auto generate getters and setters, plus its easy to install and configure.
{{script|id=490}} handles this task similarly and a number of other repetitive coding tasks
 
  +
*[http://code.google.com/p/lh-vim/wiki/lhRefactor lh-refactor] handles getters and setters among other refactorings (and languages)
   
 
==Comments==
 
==Comments==
This is a great idea, but this implementation is a little lacking. When I first used it, it put my getters and setters in comments (since it searchers for // getters, and doing an <tt>$a<CR></tt> on that line continues the comment). Additionally, it assumes a tabstop of 8 instead of letting the file type indent do the work, plus the spacing is a little messed up.
+
This is a great idea, but this implementation is a little lacking. When I first used it, it put my getters and setters in comments (since it searchers for // getters, and doing an <code>$a<CR></code> on that line continues the comment). Additionally, it assumes a tabstop of 8 instead of letting the file type indent do the work, plus the spacing is a little messed up.
   
What I usually do is type all my private members. I got to the first one and hit <tt>qa</tt> to start macro recording to register ''a''. Then I make my getter and setter using only commands that operate on words and not characters. When done, hit <tt>q</tt> again, and now register a has your macro.
+
What I usually do is type all my private members. I got to the first one and hit <code>qa</code> to start macro recording to register ''a''. Then I make my getter and setter using only commands that operate on words and not characters. When done, hit <code>q</code> again, and now register a has your macro.
  +
  +
Comment from Jeremy; This mapping caused a delay on the last j press in normal mode for me. It was quite irritating. I would suggest pointing the mapping to a different key sequence where the first key is not a common navigation key.

Latest revision as of 17:13, 16 February 2021

Tip 288 Printable Monobook Previous Next

created 2002 · complexity intermediate · author Sheer El-Showk · version 5.7


This mapping makes it much simpler to write new java classes by automating a repetitive coding task, the creation of setters and getters. Note that a ready-made plugin exists to do much the same thing.

To use, first write a basic class with the following format:

public class MyClass
{
  private boolean isActive
}

Note the getters/setters comment -- these are important as they are used to place the getters and setters.

The mapping is which should be added to the .vimrc file is:

map jgs mawv/ <CR>"ty/ <CR>wvwh"ny/getters<CR>$a<CR><CR><Esc>xxapublic
<Esc>"tpa<Esc>"npbiget<Esc>l~ea()<CR>{<CR><Tab>return
<Esc>"npa;<CR>}<Esc>=<CR><Esc>/setters<CR>$a<CR><CR><Esc>xxapublic void
<Esc>"npbiset<Esc>l~ea(<Esc>"tpa <Esc>"npa)<CR>{<CR><Tab>this.<Esc>"npa=
<Esc>"npa;<CR>}<Esc>=<CR>`ak

The above should be one long line with no spaces between the end of the lines above.

To use this to generate a class go to the variable that should have a setter/getter and place the curser at the beginning of the 'private':

private <type> <variable> = <initvalue>'
^

Then type:

jgs

This will create the first getter/setter and then move up to the next variable. A user can continue typing jgs until all the getters/setters have been generated.

Plugins[]

  • The java_getset.vim script makes it dead simple to auto generate getters and setters, plus its easy to install and configure.
  • lh-refactor handles getters and setters among other refactorings (and languages)

Comments[]

This is a great idea, but this implementation is a little lacking. When I first used it, it put my getters and setters in comments (since it searchers for // getters, and doing an $a<CR> on that line continues the comment). Additionally, it assumes a tabstop of 8 instead of letting the file type indent do the work, plus the spacing is a little messed up.

What I usually do is type all my private members. I got to the first one and hit qa to start macro recording to register a. Then I make my getter and setter using only commands that operate on words and not characters. When done, hit q again, and now register a has your macro.

Comment from Jeremy; This mapping caused a delay on the last j press in normal mode for me. It was quite irritating. I would suggest pointing the mapping to a different key sequence where the first key is not a common navigation key.