Conemu: Comment créer plusieurs fenêtres de console dans un onglet à partir du fichier de tâches?

29

Comment créer plusieurs fenêtres de console dans un onglet à partir du fichier de tâches? Je veux faire une grille 2 × 2 de consoles dans un onglet. Je peux le faire à la main lorsque je crée de nouvelles consoles et sélectionne les options "À droite" ou "En bas". Mais je veux qu'il soit créé automatiquement au démarrage. L'option «sauvegarde automatique / restauration des tâches ouvertes» est désactivée pour une raison quelconque. La seule façon est donc de le créer en tâche. Alors, comment puis-je créer une grille 2 × 2 dans la tâche?

onetuser
la source

Réponses:

44

Ceci est le contenu de votre tâche. Vérifié dans ConEmu build 120909.

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

Ceci est un exemple. Le fractionnement dans ConEmu peut être aussi complexe que vous le souhaitez, toutes les configurations avec toutes les proportions sont possibles. Lisez le wiki du projet pour plus d'informations -new_consoleet les -cur_consolecommutateurs.

Pour exécuter tout cela sans créer de nouvelle tâche

Il y a /cmdlist ConEmu.exeun interrupteur.

Exemple d'utilisation du contenu des raccourcis (sur le bureau, par exemple):

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

Besoin de l'exécuter à partir d'un autre fichier cmd? Voici un consoles.cmdexemple:

start ConEmu -cmdlist cmd -cur_console:fn ^|^|^| cmd -cur_console:s1TVn ^|^|^| cmd -cur_console:s1THn ^|^|^| cmd -cur_console:s2THn
Maximus
la source
Pouvez-vous me dire comment exécuter cette commande? Je l' ai essayé et c'est ce que je reçois. J'ai la dernière version.
arin
Le mot clé est "Tâche". Pourquoi essayez-vous d'exécuter cela à partir d'un shell déjà démarré? Tâches de configuration.
Maximus
@Maximus J'ai eu l'impression qu'il s'agissait d'une commande shell. Merci.
arin
1
@arin Vous pouvez également l'utiliser depuis le shell, mais cela nécessite -new_console: ... au lieu de -cur_console
Maximus
@Maximus: Comment la taille de la fenêtre est-elle configurée exactement dans cet exemple de tâche? Par exemple, je veux mettre en place quelque chose comme ce que vous avez publié sur Twitter , où ce n'est pas une grille carrée. Y a-t-il une documentation à laquelle vous pourriez me référer?
Isxek
2

J'ai trouvé l'implémentation suivante. Je l'utilise pour des projets de développement web. Consoles pour les exécuteurs de tâches (ex: gulp), git, compilateurs javascript (ex: typescript), etc. Le but était d'ouvrir 4 fenêtres de console et de changer de répertoire dans le répertoire où j'ai exécuté le * .cmd. Je ne voulais pas avoir plusieurs copies du script batch car je devais le changer. Je ne voulais pas que le shell soit batch et je voulais que le shell soit bash. Je suis sur Windows, donc, cygwin est nécessaire pour le shell bash.

J'ai créé un fichier .cmd arbitrairement nommé. J'ai appelé le mien 4 consoles.cmd. Cygwin est installé (la version 64 bits dans mon cas). Le cherepackage Cygwin est également installé et requis.

4 consoles.cmd contenu:

@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"

J'ai mis 4 consoles.cmdun service d'hébergement de fichiers à des fins de sauvegarde au cas où mon disque dur tombe en panne. Aussi pour plus de commodité lors du partage entre des machines de développement.

Le script de commandes changera le répertoire pour les 4 fenêtres de la console dans le répertoire où le .cmd existe. J'ai donc créé des liens symboliques durs dans le répertoire où je veux que les 4 fenêtres de la console changent de répertoire. Les liens symboliques renvoient au canonique .4 consoles.cmd

Exécutez un lien symbolique et les 4 répertoires de travail des shells de la console seront l'emplacement où se trouve le lien symbolique sur le système de fichiers

Mon code runner de tâche gulp pour toute personne intéressée

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);
    }));
});
meffect
la source