2010-02-18 9 views
9
#include<iostream> 
using namespace std; 
class Example 
{ 
    public: 
     Example(int a,int b,int c):m_a(a),m_b(b),m_c(c) 
    { // Wrong indentation here due to the colon in above line, { should be under E 
     printf("\nThe 3 argument constructor invoked\n"); 
    } // Wrong indentation again 
    private: 
     int m_a; 
     int m_b; 
     int m_c; 
}; 

Hola a todos,muesca vim en la lista de inicialización de constructores C++

Tengo un pequeño problema en la muesca de gvim en la lista de inicialización del constructor en C++. Estoy usando cindent en .gvimrc y no puedo resolver este problema incluso después de cambiar mi .gvimrc varias veces.

¿Puede algún alma benévola darme algún método para configurar esto? Intenté cambiar cinoptions así como cinwords pero nada realmente ayudó.

He resaltado el problema de sangría en el fragmento de código proporcionado anteriormente.

Gracias por su paciencia

Saludos lali

+2

mira esto, así http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=493776 – ghayalcoder

+0

Veo mismo problema con Emacs. – vy32

Respuesta

1

Trate :set smartindent, tuve que desactivar cindent primero en conseguir que funcione.

+0

No, esto no resuelve el problema. Configurar smartindent después de desactivar a cindent solo resuelve este problema, pero también quiero centrarlo para futuras sangrías que no están disponibles si se desactivó. Ya he probado esta solución, gracias de todos modos, pero quiero algo mejor. – ghayalcoder

+1

La página de ayuda 'smartindent' también recomienda el uso de' autoindent', quizás intente usar ambos juntos en lugar de cindent. – Winder

1

También he leído y re-leer el manual vim en

http://vimdoc.sourceforge.net/htmldoc/indent.html#cinoptions-values

Este es un problema muy difícil. Lo más cerca que pude conseguir fue el uso de

:set cino=g3,h3,i0

Es decir, las declaraciones de alcance guión (privado, público, etc.) por 3, guión 3 espacios después de la declaración alcance, y no lo hacen constructor guión aún más.

que se tradujo en

#include 
using namespace std; 
class Example 
{ 
    public: 
     Example(int a,int b,int c):m_a(a),m_b(b),m_c(c) 
     { // Wrong indentation here due to the colon in above line, { should be under E 
     printf("\nThe 3 argument constructor invoked\n"); 
     } // Wrong indentation again

 private: 
    int m_a; 
    int m_b; 
    int m_c; 

    }; 

Esto no es exactamente lo que quería, pero la experimentación con g, h, i puede llegar muy cerca.

Comente si esto ayuda o si he provocado alguna idea. Tal vez el informe de error es la mejor manera de resolver este problema. Aunque una solución alternativa es anular cindent mediante ediciones manuales, por poco glorioso que sea.

0

No sé si esta es una opción, pero podría echar un vistazo a astyle. Usamos TextMate en el trabajo, y el esquema de sangría (¿predeterminado?) No es lo que queremos en algunas ocasiones. Pero sobre todo sigue la sangría de la línea anterior después de presionar enter o algo.

La solución que utilizamos es simplemente conectar el origen completo del archivo a través de astyle (utilizando las opciones adecuadas), y esto está vinculado a una tecla de método abreviado. Esto también es posible con vim.

Cuestiones relacionadas