Thursday, January 24, 2008

Vim tips again, about ^M.

If you work in a mixed environment you will often open files that have ^M's in them. An example would be this:

------------------------------------------------------------------
import java.util.Hashtable; ^M
import java.util.Properties; ^Mimport java.io.IOException;
import org.xml.sax.AttributeList; ^M
import org.xml.sax.HandlerBase; ^Mimport org.xml.sax.SAXException;

/**^M
* XMLHandler: This class parses the elements contained^M
* within a XML message and builds a Hashtable^M

[snip]
------------------------------------------------------------------

Notice that some programs are not consistent in the way they insert the line breaks so you end up with some lines that have both a carrage return and a ^M and some lines that have a ^M and no carrage return (and so blend into one). There are two steps to clean this up.

1. replace all extraneous ^M:

:%s/^M$//g

BE SURE YOU MAKE the ^M USING "CTRL-V CTRL-M" NOT BY TYPING "CARROT M"! This expression will replace all the ^M's that have carriage returns after them with nothing. (The dollar ties the search to the end of a line)

2. replace all ^M's that need to have carriage returns:

:%s/^M/ /g

Once again: BE SURE YOU MAKE the ^M USING "CTRL-V CTRL-M" NOT BY TYPING "CARROT M"! This expression will replace all the ^M's that didn't have carriage returns after them with a carriage return.

Voila! Clean file. Map this to something if you do it frequently.

:help ffs - for more info on file formats


For more details, check this.

Thursday, January 10, 2008

Matlab debuging

By using debug function in Matlab, it is possible to trace the error and warning code effectively. Beside using the GUI dialog to define the debug options, this can also be done through command line code.

There are many options about debug setup. Check the documment if needed. Basically, we may use the following debug model often.

  • dbstop if error
  • dbstop if caught error
  • dbstop if warning
  • dbstop if caught error
If there is a error, the processing will paused at the error breakpoint, you can check the related variabls for the error reason. This does not mean the program is stop, so if you want to stop the running, you should type in dbquit.