web-dev-qa-db-fra.com

Comment copier une ligne dans vi et la coller dans la console?

Il y a un fichier texte avec les commandes bash.

Est-il possible de copier une ligne de ce fichier en utilisant vi et de le coller dans la console? Ce peut être nano aussi.

Il s’agit d’une installation en console uniquement. Pas de souris pour être clair.

3
Pilot6

GPM, "General Purpose Mouse" fournit des fonctions de souris dans une console, le plus utile est peut-être couper et coller.

De la page de manuel:

Ce paquet tente d’être un serveur de souris utile pour les applications exécutées sur la console Linux. Il est basé sur le package "selection", et une partie de son code provient de la sélection elle-même. Ce paquet est destiné à remplacer "sélection" en tant que mécanisme copier-coller; il fournit également des installations supplémentaires.

Des fonctionnalités supplémentaires sont décrites dans la section "Commandes spéciales".

Sudo apt-get install gpm

Généralement, cela fonctionne hors de la boîte, au moins je n'ai pas eu à le configurer manuellement.

mais un bon aperçu de la façon de le configurer voir http://www.cyberciti.biz/tips/howto-linux-configure-the-mouse-at-a-text-based-terminal -for-copy-and-paste-operation.html

ou la page de manuel

http://manpages.ubuntu.com/manpages/vivid/man8/gpm.8.html

4
Panther

Dans vi il existe un mode visuel qui vous permet de sélectionner visuellement du texte. Vous pouvez accéder à ce mode en appuyant sur v. Une fois que vous avez entré ce mode, vous pouvez utiliser les touches fléchées pour sélectionner le texte que vous souhaitez copier et coller. Puis utiliser y copier, p coller (à l’emplacement de votre choix), et enfin vous pouvez utiliser d pour couper du texte (ou le supprimer).

Il existe une version spéciale de vim que vous pouvez obtenir et qui supporte X et permet donc l’accès au presse-papiers du système. Mais comme il est plus facile de ne pas en avoir beaucoup (la version par défaut n’ayant pas ces fonctionnalités étendues), il est bon de compiler à partir de la source sous la forme cette personne a suggéré . Donc, pour faire cela d’abord, assurez-vous d’avoir installé Mercurial et sinon, installez-le:

Sudo apt-get install Mercurial

Une fois que vous êtes sûr que c'est installé, obtenez les dépendances de compilation de vim:

Sudo apt-get build-dep vim

Ensuite, obtenez la source avec:

hg clone https://vim.googlecode.com/hg/ vim_source

Enfin, nous devons le compiler:

cd vim_source
./configure \
    --enable-perlinterp=dynamic \
    --enable-pythoninterp=dynamic \
    --enable-rubyinterp=dynamic \
    --enable-cscope \
    --enable-gui=auto \
    --enable-gtk2-check \
    --enable-gnome-check \
    --with-features=huge \
    --with-x \
    --with-compiledby="Your Name <[email protected]>" \
    --with-python-config-dir=/usr/lib/python2.7/config
make && Sudo make install

VEUILLEZ NOTER: Ceci l'installera dans /usr/local, vous devez donc vous assurer qu'il est dans votre PATH avant /usr pour qu’elle soit utilisée à la place de la version par défaut d’Ubuntu.

Ensuite, vous devriez être capable de faire fonctionner cela avec:

"+y

Pour copier dans le presse-papiers du système. Et:

"+p

Pour en coller.

2
user364819

En bash, il est possible d’éditer la commande current dans un éditeur, en appuyant sur CtrlxCtrle.

Alors:

  1. Commencez avec une nouvelle invite, appuyez sur CtrlxCtrle. Cela ouvrira un nouvel éditeur vierge, de préférence Vim (je crois que l'éditeur est décidé par les variables VISUAL et EDITOR.).
  2. Ouvrez le fichier contenant les commandes dans un nouvel onglet ou fractionné.
  3. Copiez les commandes appropriées dans le tampon d'origine (probablement appelé quelque chose comme bash-fc-xxxxxxxx).
  4. Sauvegarder et quitter. Et voilà!
2
muru

Je ne sais pas s'il existe un tampon global dans la console Linux.

J'ai trouvé une solution de contournement. Il est possible de copier et coller dans vi ou nano.

Si une commande, une partie d'une commande an ou une commande modifiée doit être exécutée, je la copierais en fin de fichier, puis fermer l'éditeur et exécuter

tail -1 file.txt | bash

Certaines lignes du fichier peuvent être exécutées par

sed -n <line_number> file.txt | bash

ou

grep <pattern> file.txt | bash

Mais cela ne répond pas tout à fait à ma question. C'est une sorte de solution de contournement.

1
Pilot6