Portál AbcLinuxu, 30. dubna 2025 09:04

vim a matlab

14.5.2006 22:48 | Přečteno: 1659× | takruzne | poslední úprava: 16.6.2006 17:27

keywords vim matlab script m-file

Nevím, jak jsou na tom verze matlabu nyní, ale tento skript edit.m nahrazuje matlabí edit. Používal jsem jej pro gnome-terminal, ale pak jsem přešel na aterm. Proto je kód pro gnome-terminál ponechán zakomentovaný. Překvapil mne kamarád, že jej používá a bez problémů. Psal jsem to před 2 lety kvůli diplomce, protože jsem prostě na vim zvyklý.

Logika argumentů je divoká, ale nějak mě to zatím nezradilo.

Skript je k použítí v xkách. Matlab je dobré spouštet v terminálu jako matlab -nosplash -nojvm -nodesktop

Soubor nakopírujte do ~/matlab. Použijte help edit
function [C, A ] = vim( varargin ) 

%           EDIT  
%           EDIT arg1 arg2 
%           EDIT ./arg1 ./arg2
%           EDIT /.../arg1 /.../arg2 
% [C, A ] = EDIT
% [C, A ] = EDIT( 'arg1', 'arg2', ... )
% [C, A ] = EDIT( '-c \"<editor command>\"', 'arg1', 'arg2' )  
%
% EDIT overrides a default matlab script EDIT.m.
% EDIT opens the file in a text editor.  
%
% By default, The EDIT editor is used. The user may 
% specify a different editor by modifying the shell command 
% in the M-file.
%
% EDIT X Y Z ... will atempt to open all specified files in an
% editor. Each argument is directly passed into an editor argument.
% Instead of the first file you can use the editor (EDIT) command 
% as well. But this command has to be the first argument 
% in the string. 
%         
% EDIT '-c \"w\"' FILE1.M FILE2.M 
%  
% passes the command "save FILE1.M" to EDIT. Be aware of placing
% a gap between both the editor command and the file name.  
%
%
% EDIT, by itself, opens up a new editor window.
%
%
% EDIT returns two strings:
%  	C is the command passed into the terminal input.
% 	A is the command passed into the editor input. 
%Copyleft 2004 elviin


if ~iscellstr( varargin )
   error( 'The input must be a string.' );
   return;
end



cellFileArg = '#'; %Use this character instead of a white space. 
		   %There are problems with leading and trailing spaces. 
                   
                   %Because in gnome-terminal is needed full file-path.
                   %Say vim to open it. (I don't know why it doesn't work.)
%gnome-terminal
%vimOpenFile = '-c#\"e#';
%aterm
vimOpenFile = '-c#"e#';

	          %Set the proper directory for edited file.		
curDir = strcat( pwd, '/' ); 

%gnome-terminal	          %Set the proper directory for editor;		
%changeDirOptionTail = strcat( curDir, '\"' );
%aterm
changeDirOptionTail = strcat( curDir, '"' );

%for gnome-terminal
%changeDirOption = strcat( '#-c#\"cd#', changeDirOptionTail );

%for aterm
changeDirOption = strcat( '#-c#"cd#', changeDirOptionTail );

		  %Fill the buffer with arguments.
for i = 1:nargin
  cVarargin = char( varargin(i) );
  switch cVarargin(1)
    case {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}
      Err = sprintf('Remove heading ''%s'' from the name.', cVarargin(1));, ...
      disp(Err)
      return
    case '-', ...
      cellFileArg = strcat( cellFileArg, cVarargin );, ...
      cellFileArg = strcat( cellFileArg, '#' );
    case {'~', '/', '.', '\'}, ...
      if length(cVarargin) < 2
        disp('File name is too short.')
        return
      end
      nameLength = length( cVarargin );
      if strfind( cVarargin( nameLength-1: nameLength ), '.m' )
        cVarargin = strcat( vimOpenFile, cVarargin );
        %for gnome-terminal
        %cVarargin = strcat( cVarargin, '\"' ); %terminate the command
        %for aterm
        cVarargin = strcat( cVarargin, '"' ); %terminate the command
        cellFileArg = strcat( cellFileArg, cVarargin );, ...
        cellFileArg = strcat( cellFileArg, '#' );
      else
        cVarargin = strcat( cVarargin, '.m' );, ...
        cVarargin = strcat( vimOpenFile, cVarargin );, ...
        %for gnome-terminal
        %cVarargin = strcat( cVarargin, '\"'); %terminate the command
        %for aterm
        cVarargin = strcat( cVarargin, '"'); %terminate the command
        cellFileArg = strcat( cellFileArg, cVarargin );, ...
        cellFileArg = strcat( cellFileArg, '#' );
      end
    otherwise     %No exact file name is specified. 
                  %Try to select a file:
      parPath = which( cVarargin ); 
      if ( strcmp( parPath, '' ) )
        nameLength = length(cVarargin);
                  %If the file name is long enough...
        if ( nameLength > 1 )
                  %If .m extension is missing...
          if ( strfind( cVarargin( nameLength-1: nameLength ), '.m' ) )
            cVarargin  = strcat( curDir, cVarargin );
            cellFileArg = strcat( cellFileArg, cVarargin );
            cellFileArg = strcat( cellFileArg, '#' );       
          else  
            cVarargin = strcat( cVarargin, '.m' );
            cVarargin  = strcat( curDir, cVarargin );
            cellFileArg = strcat( cellFileArg, cVarargin );
            cellFileArg = strcat( cellFileArg, '#' );       
          end
        else      %Edit the file in spite of too short name.
          cVarargin = strcat( cVarargin, '.m' );
          cVarargin  = strcat( curDir, cVarargin );
          cellFileArg = strcat( cellFileArg, cVarargin );
          cellFileArg = strcat( cellFileArg, '#' );
          Err = sprintf('File name ''%s''is possibly too short to specify m-file.', cVarargin);, ...
          disp(Err);
        end
      else        %We have found a path to reach the file.
        cellFileArg  = strcat( cellFileArg, parPath );
        cellFileArg = strcat( cellFileArg, '#' );
      end
  end
end;


		  %Convert values of the type cell to the string.  
cFileArg = char( cellFileArg );
		  
		  %Include arguments in to the shell command.
		  %You can edit both the name of a file manager and an editor. 
		  %Change editting directory:	
cFileArg = strcat( changeDirOption, cFileArg );
                  %--zoom arg is useless in Gnome 
commandGnomeTerminal = strcat( 'gnome-terminal --window-with-profile=matlab --zoom=1.333333333 --geometry=80x25  --command "vim' , cFileArg );

commandATerm = strcat( 'aterm -T Matlab -e vim', cFileArg );
command = commandATerm; %commandGnomeTerminal
% command = strcat( command, '"' ); %commandGnomeTerminal terminator
		  

                  %The way how to disable gtk warning messages:
                  %** (gnome-terminal:2240): WARNING **: [Invalid UTF-8]
                  %in case your default xwindow manager is not Gnome.
execommand = strcat( command, '#');
execommand = strcat( execommand, '>#/dev/null#2>&1#&');
execommand = strcat( 'nohup#', execommand );

		  %Replace the character '#' with ' ' and execute the command.
execommand = strrep( execommand, '#', ' ' );


                  %Execute the command attached to vim editor: 
unix( execommand );



nout = max(nargout,1)-1;
                  %Disable  output messages (0).
                  %List the enabled ones (1, 2). 
switch nout
	case 2,
		C = execommand;,
		A = strrep( cFileArg, '#', ' ' );
	case 1,
		C = execommand;
		A = strrep( cFileArg, '#', ' ' );
	case 0,   %(*) explicit obstruction from stdout
			
	otherwise
		disp('To many output arguments.')	
end;
	



       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.