Conemu: ¿Cómo hago varias ventanas de consola en una pestaña desde el archivo de tareas?

29

¿Cómo hacer varias ventanas de consola en una pestaña desde el archivo de tareas? Quiero hacer una cuadrícula 2 × 2 de consolas en una pestaña. Puedo hacerlo a mano cuando creo nuevas consolas y selecciono las opciones "Hacia la derecha" o "Hacia abajo". Pero quiero que se cree automáticamente al inicio. La opción "guardar automáticamente / restaurar tareas abiertas" no está habilitada por alguna razón. Entonces, la única forma es crearlo en una tarea. Entonces, ¿cómo puedo crear una cuadrícula de 2 × 2 en la tarea?

onetuser
fuente

Respuestas:

44

Este es el contenido de tu tarea. Comprobado en ConEmu build 120909.

>cmd -cur_console:n
cmd -cur_console:s1TVn
cmd -cur_console:s1THn
cmd -cur_console:s2THn

Esto es un ejemplo. La división en ConEmu puede ser tan compleja como desee, es posible cualquier configuración con cualquier proporción. Lea el wiki del proyecto para obtener más información -new_consoley -cur_consolecambios.

Para ejecutar todo eso sin crear una nueva tarea

Hay /cmdlist ConEmu.exeun interruptor.

Ejemplo de uso para contenidos de acceso directo (en el escritorio, por ejemplo):

ConEmu -cmdlist cmd -cur_console:fn ||| cmd -cur_console:s1TVn ||| cmd -cur_console:s1THn ||| cmd -cur_console:s2THn

¿Necesita ejecutar eso desde otro archivo cmd? Aquí hay un consoles.cmdejemplo:

start ConEmu -cmdlist cmd -cur_console:fn ^|^|^| cmd -cur_console:s1TVn ^|^|^| cmd -cur_console:s1THn ^|^|^| cmd -cur_console:s2THn
Maximus
fuente
¿Me puede decir cómo ejecutar este comando? Lo he intentado y esto es lo que obtengo. Tengo la última compilación.
arin
La palabra clave es "Tarea". ¿Por qué intentas ejecutar esto desde el shell ya iniciado? Configurar tareas.
Maximus
@Maximus Tenía la impresión de que se trataba de un comando de shell. Gracias.
Arin
1
@arin También puede usar esto desde shell, pero necesita -new_console: ... en lugar de -cur_console
Maximus
@Maximus: ¿Cómo se configura exactamente el tamaño de la ventana en ese ejemplo de tarea? Por ejemplo, quiero configurar algo como lo que publicaste en Twitter , donde no es una cuadrícula cuadrada. ¿Hay alguna documentación a la que me pueda recomendar?
Isxek
2

Se me ocurrió la siguiente implementación. Lo uso para proyectos de desarrollo web. Consolas para corredores de tareas (ej: gulp), git, compiladores javascript (ej: mecanografiado), etc. El objetivo era abrir 4 ventanas de consola y cambiar el directorio al directorio donde ejecuté el * .cmd. No quería tener varias copias del script por lotes en caso de que tuviera que cambiarlo. No quería que el shell fuera un lote y quería que el shell fuera bash. Estoy en Windows, entonces, Cygwin es necesario para bash shell.

Creé un archivo arbitrariamente llamado .cmd. Yo llamé al mío 4 consoles.cmd. Cygwin está instalado (la versión de 64 bits en mi caso). También cherese instala y requiere el paquete Cygwin .

4 consoles.cmd contenido:

@echo off

for %%i in ("%~dp0..\..") DO (set dirVar=%%~ni)
for %%i in ("%~dp0.") DO (set dir2Var=%%~ni)

set finalValue=%dirVar% %dir2Var%

start C:\"Program Files"\ConEmu\ConEmu64.exe -cmdlist ^
C:\cygwin64\bin\bash -c "/bin/xhere /bin/bash.exe" -cur_console:fna:t:"%finalValue%":C:"C:\cygwin64\Cygwin.ico" ^|^|^| ^
C:\cygwin64\bin\bash -c "/bin/xhere /bin/bash.exe" -cur_console:s1TVna:t:"%finalValue%":C:"C:\cygwin64\Cygwin.ico" ^|^|^| ^
C:\cygwin64\bin\bash -c "/bin/xhere /bin/bash.exe" -cur_console:s1THna:t:"%finalValue%":C:"C:\cygwin64\Cygwin.ico" ^|^|^| ^
C:\cygwin64\bin\bash -c "/bin/xhere /bin/bash.exe" -cur_console:s2THna:t:"%finalValue%":C:"C:\cygwin64\Cygwin.ico"

Puse 4 consoles.cmden un servicio de alojamiento de archivos con fines de copia de seguridad en caso de que mi disco duro falla. También para mayor comodidad al compartir entre máquinas de desarrollo.

El script por lotes cambiará el directorio de las 4 ventanas de la consola al directorio donde existe el .cmd. Así que creé enlaces de Hard Symbolic en el directorio donde quiero que las 4 ventanas de consola cambien el directorio. Los enlaces simbólicos apuntan a lo canónico 4 consoles.cmd.

Ejecute un enlace simbólico y los 4 directorios de trabajo de la consola serán la ubicación en la que se encuentra el enlace simbólico en el sistema de archivos

Mi código de corredor de tarea de Gulp para cualquiera que esté interesado

package.json

{
  "name": "MyApp",
  "version": "1.0.0",
  "description": "",
  "main": "gulpfile.js",
  "private": true,
  "devDependencies": {
    "del": "^1.2.0",
    "gulp": "^3.9.0",
    "gulp-batch": "^1.0.5",
    "gulp-concat": "^2.5.2",
    "gulp-imagemin": "^2.2.1",
    "gulp-minify-css": "^1.1.6",
    "gulp-ng-annotate": "^1.0.0",
    "gulp-plumber": "^1.0.1",
    "gulp-rename": "^1.2.2",
    "gulp-sourcemaps": "^1.5.2",
    "gulp-uglify": "^1.2.0",
    "gulp-watch": "^4.2.4",
    "imagemin-pngquant": "^4.1.0"
  },
  "author": "Author",
  "license": "ISC"
}

bower.json

{
  "name": "MyProject",
  "version": "1",
  "license": "MIT",
  "private": true,
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components"
  ],
  "dependencies": {
    "bootstrap": "~3.3.4",
    "jquery": "~2.1.3",
    "angular": "~1.4.0",
    "angular-route": "~1.4.0",
    "angular-animate": "~1.4.0",
    "font-awesome": "~4.3.0",
    "underscore": "~1.8.3",
    "bootstrap-datepicker": "~1.4.0",
    "angularjs-toaster": "~0.4.12",
    "angular-scroll": "~0.7.0",
    "moment": "~2.10.2",
    "angular-loading-bar": "~0.7.1"
  }
}

gulpfile.js

'use strict';

var gulp = require('gulp');
var batch = require('gulp-batch');
var sourcemaps = require('gulp-sourcemaps');
var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var concat = require('gulp-concat');
var del = require('del');
var plumber = require('gulp-plumber');
var watch = require('gulp-watch');
var imagemin = require('gulp-imagemin');
var pngquant = require('imagemin-pngquant');
var ngAnnotate = require('gulp-ng-annotate');

gulp.task('default', ['clean'], function () {
    gulp.start('images', 'vendorCss', 'applicationCss', 'fontIcons', 'vendorJavascript', 'applicationJavascript');
});

gulp.task('clean', function (cb) {
    del(['./dist/*'], cb);
});

gulp.task('images', function () {
    return gulp.src([
            './content/img/**/*'
    ])
        .pipe(imagemin({
            optimizationLevel: 3,
            progressive: true,
            interlaced: true,
            svgoPlugins: [{ removeViewBox: false }],
            use: [pngquant()]
        }))
        .pipe(gulp.dest('./dist/img'));
});

gulp.task('fontIcons', function () {
    return gulp.src([
        './bower_components/bootstrap/dist/fonts/**.*',
        './bower_components/font-awesome/fonts/**.*'
    ])
        .pipe(gulp.dest('./dist/fonts'));

});

gulp.task('vendorCss', function () {
    return gulp.src([
        './bower_components/bootstrap/dist/css/bootstrap.css',
        './bower_components/font-awesome/css/font-awesome.css',
        './bower_components/angularjs-toaster/toaster.css',
        './bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.css',
        './bower_components/angular-loading-bar/build/loading-bar.css'
    ])
        .pipe(concat('vendor.css'))
        .pipe(gulp.dest('./dist/css'))
        .pipe(rename({ suffix: '.min' }))
        .pipe(minifycss())
        .pipe(gulp.dest('./dist/css'));
});

gulp.task('vendorJavascript', function () {
    return gulp.src([
            './bower_components/jquery/dist/jquery.js',
            './bower_components/angular/angular.js',
            './bower_components/angular-route/angular-route.js',
            './bower_components/angular-resource/angular-resource.js',
            './bower_components/angular-animate/angular-animate.js',
            './bower_components/angular-scroll/angular-scroll.js',
            './bower_components/angular-loading-bar/build/loading-bar.js',
            './bower_components/angularjs-toaster/toaster.js',
            './bower_components/bootstrap/dist/js/bootstrap.js',
            './bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.js',
            './bower_components/underscore/underscore.js',
            './bower_components/moment/moment.js'
    ])
        .pipe(sourcemaps.init())
        .pipe(concat('vendor.js'))
        .pipe(gulp.dest('./dist/script'))
        .pipe(uglify())
        .pipe(rename('vendor.min.js'))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('./dist/script'));
});

gulp.task('applicationCss', function () {
    return gulp.src([
            './content/css/site.css',
            './content/css/animation.css'
    ])
        .pipe(plumber())
        .pipe(concat('app.css'))
        .pipe(gulp.dest('./dist/css'))
        .pipe(rename({ suffix: '.min' }))
        .pipe(minifycss())
        .pipe(gulp.dest('./dist/css'));
});

gulp.task('applicationJavascript', function () {
    return gulp.src([
            './angular/**/*.js'
    ])
        .pipe(plumber())
        .pipe(ngAnnotate())
        .pipe(sourcemaps.init())
        .pipe(concat('app.js'))
        .pipe(gulp.dest('./dist/script'))
        .pipe(uglify())
        .pipe(rename('app.min.js'))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('./dist/script'));

});

gulp.task('watchApplicationJavascript', ['applicationJavascript'], function () {
    watch('./angular/**/*.js', batch(function (events, done) {
        gulp.start('applicationJavascript', done);
    }));
});

gulp.task('watchApplicationCss', ['applicationCss'], function () {
    watch(['./content/css/site.css', './content/css/animation.css'], batch(function (events, done) {
        gulp.start('applicationCss', done);
    }));
});
efecto
fuente