From a84dbd8f66a0d8bdcbbe04a684b4846cbb97d9b5 Mon Sep 17 00:00:00 2001 From: hugodu69 Date: Wed, 3 Oct 2018 18:48:05 +0200 Subject: [PATCH] init --- .screenrc | 37 ++++++++ .vimrc | 81 ++++++++++++++++ README.txt | 17 ++++ git.txt | 33 +++++++ lexique.txt | 54 +++++++++++ node.txt | 265 ++++++++++++++++++++++++++++++++++++++++++++++++++++ react.txt | 3 + screen.txt | 28 ++++++ shell.txt | 27 ++++++ sites.txt | 33 +++++++ vim.txt | 122 ++++++++++++++++++++++++ 11 files changed, 700 insertions(+) create mode 100644 .screenrc create mode 100644 .vimrc create mode 100644 README.txt create mode 100644 git.txt create mode 100644 lexique.txt create mode 100644 node.txt create mode 100644 react.txt create mode 100644 screen.txt create mode 100644 shell.txt create mode 100644 sites.txt create mode 100644 vim.txt diff --git a/.screenrc b/.screenrc new file mode 100644 index 0000000..5a4a1c9 --- /dev/null +++ b/.screenrc @@ -0,0 +1,37 @@ +startup_message off + +chdir /home/simplonco/Bureau/ + +#pour afficher une ligne avec des infos +hardstatus on +#pour qu'elle s'affiche en bas +hardstatus alwayslastline +#tout ce qui n'est pas precede de % s'affiche tel quel +#tout ce qui est entre {} formate le texte +# = format texte inchange +# KW couleur arriere bright black, couleur texte bright white +# %n numero de windows +# %t title de windows +# %= remplis les espaces vides +# %c current time +# %d day +# %m month +# %y year +hardstatus string "%{= KW}%n %t %=%c %D %d-%m-%y" +#hide hardstatus: ctrl-a f +bind f eval "hardstatus ignore" +#show hardstatus: ctrl-a f +bind F eval "hardstatus alwayslastline" + +#screen open a new windows +# -t assigne un titre +# vim appel vim avec l'option -n pour eviter les .swp +screen -t shell vim -n $HOME/config/shell.txt +screen -t git vim -n $HOME/config/git.txt +screen -t screen vim -n $HOME/config/screen.txt +screen -t node vim -n $HOME/config/node.txt +screen -t react vim -n $HOME/config/react.txt +screen -t sites vim -n $HOME/config/sites.txt +screen -t vim vim -n $HOME/config/vim.txt + +screen diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..2b3a1ed --- /dev/null +++ b/.vimrc @@ -0,0 +1,81 @@ +"autocmd BufEnter * let &titlestring = ' ' . expand("%:t") +"set title + +"directory indique a vim où mettre les swap files a la place du dossier courrant +"le double slash demande a vim de donner au swap file un nom avec son chemin d'acces pour eviter que deux fichiers du meme noms posent un probleme +set directory=~/.vim/swapfiles// + +colo torte "utilise la coloration 'torte' +set tabstop=2 "regle une tabulation egale a deux espaces +set autoindent "indent chaque nouvelle ligne comme la precedente +set number "ajout les numeros de ligne +"set mouse=a "permet d'utiliser la souris + +"pour mettre en gras ce qui est écrit entre asterisks +set concealcursor=n +set conceallevel=3 +"les trois lignes suivantes sont lancees par des auto commands pour declancher leur action malgre que les hilighting groups soient nettoyes par la commande 'hi clear' du fichier $VIMRUNTIME/color/default.vim +"autocmd ColorScheme * +hi AsteriskBold ctermfg=Green cterm=bold +autocmd BufEnter * syn match Asterisks contained "**" conceal +autocmd BufEnter * syn match AsteriskBold "\*\*[^*]\+\*\*" contains=Asterisks + + +"remplis les elements de base d'un fichier html +command! Html 0s/^/\r\r\t\r\t\t\r\t\t\r\t\t<\/title>\r\t\t<link href=".\/style.css" type="text\/css" rel="stylesheet">\r\t\t<script type="text\/javascript" src="script.js" defer><\/script>\r\t<\/head>\r\r\t<body>\r\t<\/body>\r<\/html> + + + +"---------------------------------------------------------------- +"pour transformer un text html et/ou css en sa version affichable +"---------------------------------------------------------------- +"remplace < et > par < et > +command! Compare %s/</\</g <bar> %s/>/\>/g +"remplir les lignes vides avec des <br> +command! Ligne %s/^\n/<br>\r +"ajoute <p> et </p> en debut et fin de lignes +command! Paragraph %s/^/<p>/g <bar> %s/$/<\/p>/g +"remplace les indentations par deux espaces   +command! Indenta %s/\t/\ \ \ /g +"remplace les < et > autour des commentaires par CS et CE +command! Savecomment %s/<!--/CS/g <bar> %s/-->/CE/g +"entoure les tag apres < ou </ par <span id="tag"></span> +command! Tag %s#<[;/]*\zs[a-z0-9]*\ze#<span id=\"tag\">\0</span>#g +"entoure les signes < et > et / et { et } par <span id="sign"></span> +command! Sign %s#<\zs/\ze#<span id=\"sign\">\0</span>#g <bar> %s#&[lg]t;#<span id=\"sign\">\0</span>#g <bar> %s#[{}]#<span id=\"sign\">\0</span>#g +"entoure les pseudos elements +command! Pseudo %s#:\zs[a-z]*\ze.<span id="sign">{#<span id=\"pseudo\">\0</span>#g +"entoure les selecteurs css avant les { par <span id="selec"></span> +command! Selec %s#<p>\zs[^:{]*\ze.*<span id="sign">{#<span id=\"selec\">\0</span>#g +"entoure les actions css avant les : par <span id="action"></span> +command! Action %s# \zs[-a-zA-Z0-9]*\ze:#<span id=\"action\">\0</span>#g +"entoure toutes les specifications des tags html par <span id="special"><span> +command! Special %s#</span>\zs[^>]*\ze<span id="sign">>#<span id=\"special\">\0</span>#g +"entoure les commentaires par <span id="comment"></span> +command! Comment %s#\(CS\)\(.*\)\(CE\)#<span id=\"comment\">\<!--\2--\></span>#g <bar> %s#/\*.*\*/#<span id=\"comment\">\0</span>#g + + +function! Editax() + Compare + Ligne + Paragraph + Indenta + Savecomment + Tag + Sign + Pseudo + Selec + Action + Special + Comment + Start + End +endfunction + + +"ajoute toutes les lignes du debut +command! Start 0s/^/<!DOCTYPE html>\r<html>\r<head>\r<style>\r#cadre {\r position: fixed;\r top: 10vh;\r left: calc(50% - 250px);\r width: 500px;\r max-width: 80vw;\r height: 80vh;\r padding: 10px;\r overflow: hidden;\r border-radius: 10px;\r background-color: rgba(50, 50, 50, 0.9);\r}\r#scroll {\r height: 100%;\r width: calc(100% + 25px);\r box-sizing: border-box;\r padding-right: 10px;\r overflow-y: scroll;\r}\r#scroll p {\r margin: 0;\r padding: 0;\r color: #d3d3d3;\r}\r#tag {\r color: #669999;\r}\r#sign {\r color: white;\r}\r#action {\r color: #cc66cc;\r}\r#selec {\r color: #ff6633;\r}\r#pseudo {\r color: yellow;\r}\r#special {\r color: #8585ad;\r}\r#comment {\r color: #909090;\r}\r<\/style>\r<\/head>\r<body>\r<div id=\"cadre">\r<div id=\"scroll">\r\r<p>\<!DOCTYPE html\><\/p>\r +"ajoute toutes les lignes de la fin +command! End $s/$/\r\r<\/div>\r<\/div>\r<\/body>\r<\/html> +"---------------------------------------------------------------- +"---------------------------------------------------------------- diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..c86d5f6 --- /dev/null +++ b/README.txt @@ -0,0 +1,17 @@ +# put this folder "config" into the $HOME directory +# and execute the following commands or +# just run this README.txt file as an +# executable with sh README.txt + +ln -s $HOME/config/.screenrc $HOME/.screenrc +ln -s $HOME/config/.vimrc $HOME/.vimrc + +# it will create a symbolic lynk to the +# .vimrc and .screenrc files +# located in the config folder + +# of course if there already are .vimrc +# and .screenrc files in home directory +# it will not work, so you need to check +# manually what you need to transfer from +# these files to the already existing ones diff --git a/git.txt b/git.txt new file mode 100644 index 0000000..fdbeb4c --- /dev/null +++ b/git.txt @@ -0,0 +1,33 @@ +**git init** creates a new git repository" +**git status** inspects the contents of the working directory and staging area +**git add** adds files from the working directory to the staging area + **git add -a** . the -a ensures even file deletions are included + **git reset <filename>** to remove a file or files from the staging area + **git diff** shows the difference between the working directory and the staging area +**git commit** permanently stores file changes from the staging area in the repository +**git remote add origin https://github.com/nomutilisateur/monprojet** origin indicate a new place where files will be stored, remote describe origin and indicate that origin is distant, not local but online + **git push -u remote_name branch_name** (git push -u origin master) pushes a local branch to a remote, the -u tells git to remember the parameters, so that next time we can simply run git push +**git push** pushes the modifications to the distant repository github (remote) +**git remote -v** lists all distant origins, remotes, your local git project knows (in other words it lists a git project's remotes) +**git remote show origin** show the state of the remote and its branches + **git remote rm remote_name** supprimer un remote + **git pull** pull any changes from the remote + **git clone** creates a local copy of a remote +**git branch** lists all a git project's branches +**git branch branch_name** creates a new branch +**git checkout branch_name** used to switch from one branch to another +**git log** shows a list of all previous commits +**git log --summary** show more informations +**git merge branch_name** join file changes from branch_name into current branch +**git branch -d branch_name** deletes the branch specified +**git checkout commit_name** detach head from branch into commit, to move in commits +**git checkout branch_name^** move head one commit upwards +**git checkout branch_name~4** move 4 commits upwards +**git checkout HEAD^** if head is not on a branch_name but on a commit +**git branch -f master HEAD~3** moves the master branch to 3 parents behind head do not amend a public commit, it will reset the commit the others are working on +**git commit --amend** do a commit replacing the last one, even if there was nothing to commit +**git commit --amend --no-edit** do a new commit with new things replacing the last one and keepping the last message +**git commit --amend -m 'message'** do a new commit that replace the last one with the same content but a new message +**git stash** saves the uncommited changes besides for later use +**git stash pop** reapply the stashed changes and removes them from the stash area +**git stash apply** reaply the stashed changes and keep them in the stash area diff --git a/lexique.txt b/lexique.txt new file mode 100644 index 0000000..95ebd3b --- /dev/null +++ b/lexique.txt @@ -0,0 +1,54 @@ +Lexique du développeur +Le vocabulaire du petit scarabée : + +un navigateur +Site dynamique +site statique +nom de domaine +URL +framework +SEO +un serveur +XML +algorithme +ASCI +BackOffice +Base de donnée +cache +cookie +FAQ +HTTP/HTTP2 +IMAP +ping +ROI +W3C +devOps +Stack +Pull Request (PR) +CI/CD +Veille +wireframe +GIT +TERMINAL +SSH - +NODE.JS +ES6 +HTML5 +WEBPACK +REDUX +FRONT/BACK END +SOLID +KISS +YAGNI +CRUD +REST FULL +API +JASMINE +methode SCRUM +methode KANBAN +methode KATA +methode RANDORI +methode TDD +methode SPRINT + + diff --git a/node.txt b/node.txt new file mode 100644 index 0000000..c05075c --- /dev/null +++ b/node.txt @@ -0,0 +1,265 @@ +**take node_login** + [] +**npm init -y** + [package.json] +**npm i express backpack-core mongoose volleyball dotenv babel-preset-stage-3** + [node_modules] + [package.json] + [package-lock.json] + **(express)** simplifie le code de node + **(backpack)** recharge le serveur en live (npm start) + **(babel)** comprend l'es6 (marche avec backpack) + **(mongoose)** permet d'uiliser la base de donnée Mongodb + **(volleyball)** informe en direct sur ce que tu fais + **(dotenv)** cacher les variable environnement + +**----------------------** + +**node_login/package.json** +remplacer "test": "echo \"Error: no test specified\" && exit 1" +par "start": "backpack" + +**node_login** +take src +touch index.js + +**node_login** +npm start //demare backpack et genere build/ + +**node_login** +touch .env .babelrc + +**node_login/.babelrc** +{ + "presets": [ + "backpack-core/babel", + "stage-3" + ] +} + +**node_login** +mongod +(il va peut-être falloir creer le fichier db dans le dossier data a la racine "sudo mkdir -p /data/db" -p pour creer un fichier dans un dossier et aussi donner tous les droits a db "sudo chmod 777 /data/db") + +**node_login/.env** +SERVER_PORT=3000 +DBUrl = "mongodb://localhost/users_db" + +**node_login/src/index.js** +import "dotenv/config"; +import express from "express"; +import volleyball from "volleyball"; +import mongoose from "mongoose"; +import passport from "passport"; +import bcrypt from "bcrypt"; + +const app = express(); +const {SERVER_PORT, DBUrl} = process.env; +const url = DBUrl; +const options = {promiseLibrary:Promise} + +mongoose.connect(url, options); +mongoose.connection.on("connected", () => { + console.log("the mongo is working 27017") +}) + +app.use(express.json()); +app.use(express.urlencoded({extended:true})); +app.use(volleyball); + +app.listen(SERVER_PORT, () => { + console.log(`server is listening port... ${SERVER_PORT}`) +}); + +app.get('/', (req,res)=>{ + res.send('life is good with Hajar') +}) + +**node_login** +mkdir public src/models src/routes src/views + +**node_login/src/models/user.js** +import mongoose from "mongoose"; +const Schema = mongoose.Schema; +const userSchema = new Schema({ + name: {type:String, required:true}, + email: {type:String, required:true}, + username: {type:String, required:true}, + password: {type:String, required:true}, +}) + +const User = mongoose.model("User", userSchema); +export {User}; + +**node_login/src/routes/routes.js** +import express from "express"; +import {User} from "../models/user"; + +const userRouter = express.Router(); + +userRouter.post("/new_user", (req,res)=>{ + let newUser = new User(req.body) + newUser.save((err,user)=>{ + if(err) res.send(err) + res.json(user) + }) +}) + +export {userRouter}; + +**node_login/src/index.js** +ajouter : +import {userRouter} from "./routes/routes"; +et +app.use("/users", userRouter) //utiliser userRouter pour les url /users + +**node_login/src/views** +touch layout.pug user_add.pug + +**node_login/src/views/layout.pug** +doctype html +html + head + title + link(href="/css/") + + body + h1 formulaire + block content + +**node_login/src/views/user_add.pug** +extends layout +block content + h2 sign in + + form(action="/users/new_user", method="post") + div + h5 name + input(type="text", name="name", placeholder="enter name") + input(type="text", name="email", placeholder="enter email") + input(type="text", name="username", placeholder="enter username") + input(type="password", name="password", placeholder="enter password") + input(type="password", name="confirm", placeholder="confirm password") + div + h5 validate + input(type="submit", value="enter") + +**node_login/src/routes/routes.js** +ajouter +userRouter.get("/new_user", (req, res)=>{ + res.render("user_add") +}) + +**node_login/src/index.js** +ajouter +import path from "path"; +et +app.use(express.static(path.join(__dirname+"/public"))) +app.set("views", path.join(__dirname + "/views")) +app.set("view engine", "pug") + + + +----------------------------------------------- +----------------------------------------------- + +**express generator** creer le contenu de base automatiquement +**bodyparser** envois les informations d'un formulaire à mongoose + + +**ngrok https://nrgok.com** pour heberger le site en ligne pendant quelques heures pour le tester + + + +-------------------------------- + + +**base .env** +PORT=3000 + +**base src index.js** +import express from "express" +import "dotenv/config" +const app = express(); + +const { PORT } = process.env + +app.listen(PORT, () => { + console.log(`ca marche : ${ PORT }`) +}) + +app.get("/coucou", (req, res) => { + res.json("coucou les amis") +}) + +**base src routes basic.js** +import express from "express" + +const basicRouter = express.Router(); + +basicRouter.get("/:name", (req, res) => { //jsute un test (:name recupere + res.json(`je suis ${req.params.name}`) //des parametres depuis l'url +}) + +export {basicRouter} + +**--> base src index.js** +import { basicRouter } from "./routes/basic" + +app.use("/", basicRouter) + +**base src routes books.js** +import express from "express" + +const booksRouter = express.Router(); + +booksRouter.get("/add_book", (req, res) => { + res.json("ca marche") +}) + +export {booksRouter} + +**------------------------------** + +**create-react-app nom** creer react dans un dossier "nom" +**npm start** lance react +**take server** +**npm init -y** creer node dans server (server a la racine) +**/server npm i express backpack-core mongoose volleyball dotenv babel-preset-stage-3** +**vim /server/.babelrc** compilateur es6 pour js + { + "presets": [ + "backpack-core/babel", + "stage-3" + ] + } +**vim /server/.env** + PORT=3001 **(3000 est deja utilise par react)** + DBUrl= "mongodb://localhost/blog_db" +**take /server/src** +**vim /server/src/index.js** + import "dotenv/config" + import express from "express" + const app = express(); + import mongoose from "mongoose" + import volleyball from "volleyball" + app.use(volleyball); + const { PORT, DBUrl } = process.env; +**vim /server/package.json** + ("test"...) supression + "start": "backapck" +**npm start** (blog/server/) lance node +**vim /server/src/index.js** + app.listen(PORT, () => { + console.log(`server is listening port... ${PORT}`) + }) +**vim /server/.env** + DBUrl= "mongodb://localhost**:27017**/blog_db" +**vim /server/src/index.js** + const options = {promiseLibrary:Promise, useNewUrlParser:true} + + mongoose.connect((DBUrl), options) + mongoose.connection.on("connected", () => { + console.log("the mongo is working 27017") + }) +**mongod** (/server) diff --git a/react.txt b/react.txt new file mode 100644 index 0000000..fa6bd97 --- /dev/null +++ b/react.txt @@ -0,0 +1,3 @@ +**first time** npm install -g create-react-app +**otherwise** create-react-app name_folder +**then** npm start diff --git a/screen.txt b/screen.txt new file mode 100644 index 0000000..c17ccb6 --- /dev/null +++ b/screen.txt @@ -0,0 +1,28 @@ +**screen** sudo apt-get install screen pour avoir plusieurs terminals + **ctrl-a |** split vertically + **ctrl-a S** split horizontally + **ctrl-a Q** unsplit all + **ctrl-a X** close current pane + **ctrl-a K** kill current pane + **ctrl-a \** kill all sessions + **ctrl-a d** get out of screen without killing it then run: screen -r to recover session + **ctrl-a tab** switch from one splited window to another + **ctrl-a n** or **p** move to the next or previous windows + **ctrl-a c** start new terminal (in the new window) + **ctrl-a space** next terminal + **ctrl-a backspace** previous terminal + **ctrl-a ctrl a** flip flop between to terminal + **ctrl-a "** switch between terminal with a list + **,** move windows number down + **.** move windows number up + **ctrl-a A** rename + **ctrl-a l** resize + **ctrl-a w** show windows name + **ctrl-a esc** go in scroll mode (press esc again to axit) + +to configure actions when launch : +**vim ~/.screenrc ** go to or create file screenrc, then write inside: + **startup_message off** avoid message at start + **chdir -directorie-** change the working directorie + **screen -t -name- -action-** start a windows with a name and execute action (for example: screen -t shell vim /Bureau/fiche/chell.txt) + **focus** focus on next screen diff --git a/shell.txt b/shell.txt new file mode 100644 index 0000000..9a3ad15 --- /dev/null +++ b/shell.txt @@ -0,0 +1,27 @@ +**screen size** pour 2*2: 137*38 / pour 1*1: 68*19 (37 et 18 si barre des menus cachee) +**ctrl c** termine l'action en cours du terminal +**ctrl s** bloque l'affichage du terminal +**ctrl q** rétablit la communication avec le terminal +**ctrl z** stop le travail en cours et le met sur pause +**fg** relance le dernier travail mis sur pause +**mkdir file{1..10}** creer 10 dossiers nommés de file1 à file10 +**pwd** print working directory + +**pdftotext** transforme un pdf en un fichier texte +**^** designe le debut d'une ligne +* n'importe quel caractere autant de fois que possible +**ls** ** montre tous les dossiers et sous-dossiers recursivement +**chmod 755 fichier** chmod change les droits des fichiers, organisés en : rwxrwxrwx avec pour valeur r=4 w=2 x=1 donc r-w == r + w == 4 + 1 == 5 + +**zsh** + **sudo apt-get install zsh** + **which zsh** donne le chemin d'acces de zsh (/usr/bin/zsh) + **chsh -s /usr/bin/zsh** change shell (chsh) pour zsh + (reboot le systeme pour que les changements prennent effet) + **echo $SHELL** pour voir quel shell est utilisé + (uncomment **line --DISABLE_AUTO_TITLE="true"--** in ~/.zshrc file pour empecher screen de donner un nom automatique aux sessions) + +**sass name.scss name.css** create a css file from a scss file +**sass --watch name.scss:name.css** make the transformations of scss in css file +**'tree' like :** +find | sort | grep -ve "node_modules/" -e ".git/" | sed 's#[^/]*/#|__ #g;s#__ |# |#g;s#| # #g;s#\(node_modules\|.git[ignore]*\)#\1 ...#;$a\ ' diff --git a/sites.txt b/sites.txt new file mode 100644 index 0000000..df7c226 --- /dev/null +++ b/sites.txt @@ -0,0 +1,33 @@ +tools www.preparetocode.io +design http://www.dailyui.co/ +js https://github.com/myjinxin2015/Katas-list-of-Training-JS-series +js https://www.javascript.com/ +js https://github.com/mrdavidlaing/javascript-koans +js http://exercism.io/ +jquery http://try.jquery.com/ +secu https://www.root-me.org/?/lang=en +secu https://www.hackerone.com/ (si tu resouds des bugs tu es payé) +secu https://bountyfactory.io/en/index.html (payé pour resoudre des bugs) +script https://codecombat.com/ +script https://screeps.com/ +script https://repl.it/repls/PuzzlingSugaryWrenchbird +script http://gamejam.toxicode.fr/ +script http://www.toxicode.fr/learn +shell https://explainshell.com/ +shell http://overthewire.org/wargames/bandit/bandit7.html +shell https://cmdchallenge.com/ +git https://try.github.io/levels/1/challenges/1 +git https://learngitbranching.js.org/?demo +git https://github.com/jlord/git-it-electron +css https://flukeout.github.io/ +css http://flexboxfroggy.com/#fr +css http://www.flexboxdefense.com/ +css http://cssgridgarden.com/#fr + +npm init +backpack-core +express +mongoose +volleyball +babel-preset-stage-3 +dotenv diff --git a/vim.txt b/vim.txt new file mode 100644 index 0000000..c84765d --- /dev/null +++ b/vim.txt @@ -0,0 +1,122 @@ +/MODE INSERTION/ +**i** mode insertion (écrire du texte) +**o** mode insertion a la ligne +**3iTEXT** ecrira trois fois TEXT +**ctrl r** * colle depuis le clipboard en mode insertion + +/COMMANDES/ +**:w** enregistrer +**:q** quitter +**:wq** ou **ZZ** enregister et quitter +**:q!** force a quitter +**:** mode commande +**:%y+** copie toutes les lignes DANS LE CLIPBOARD +**:set paste** copier sans les effets des tabulations +**: up** affiche les dernieres commandes +**:set number** ecrit les numeros de lignes +**:set syntax=ON** active la coloration du texte +**:set tabstop=4** montre les tabulations (meme existantes) de longueur 4 +**:set expandtab** en appuyant tab on rentre l'equivalent en espaces +**:set expandtab!** enleve le mode tab = espaces +**:set autoindent** copie l'indentation de la ligne precedente +**:source ~/.vimrc** actualise le fichier vimrc sans redémarrer vim +**:sav newname** save as with a new name + **:!rm oldname** or **:!rm <ctr r>#** to delete the old copy +**:sp** split windows (**<ctr w arrow>** to navigate) +**:vsp** split verivally +**:sp filename** open a new or already existing filename in split mode +**:sp %:h/filename** open new file in the same directory (**%** refers to the current directory, **:h** current directory minus file name and slash) +**:colo** active un systeme de coloration a choisir parmis : + -- darkblue -- blue -- default -- delek -- desert -- elflord -- + -- evening -- koehler -- morning -- murphy -- pablo -- + -- peachpuff -- ron -- shine -- slate -- torte -- zellner -- + (pour le modifier de manniere permanente : + - pour l'utilisateur courant: ouvrir ou creer le fichier ~.vimrc + et ajouter dedans: colo "nom du jeu de couleur"; + - pour tous les utilisateurs: ouvrir le fichier /etc/vim/vimrc + et y ajouter: colo "nom du jeu de couleur") + +/MODE VISUEL/ +**v** mode visuel, selectionne avec le deplacement du curseur +**v** **:s/o/n** remplace la premiere occurence par ligne en mode visuelle +**v :s/o/n/g** remplace toutes les selections de chaque ligne +**v :s/o/n/gc** demande confirmation (y:yes, n:no, a:all remaining, q:quit, l:last) + +/MODE REMPLACEMENT/ +**R** mode remplacement (esc pour sortir) + +/MODE VISUAL BLOCK/ +**ctrl v** passe en mode remplacement + 1-mettre le curseur au debut d'un ligne a commenter + 2-passer en visual block mode + 3-avec les fleches descendre jusqu'a la derniere ligne + 4-appuyer sur shift+i pour passer en mode insertion + 5-inserer le.s signe.s de commentaire (par exemple: //) + 6-appuyer sur esc (ttes les lignes vont se commenter) + +/MODE INTERACTIF/ +**esc** quitte le mode insertion pour rentrer en mode interactif +**x** supprime une lettre +**r** remplace une lettre (rs remplace la lettre par s) +**u** annuler +**0** et **$** debut et fin de ligne +**gg** et **G** aller a la premiere et derniere ligne +**w** avancer le curseur au debut du mot suivant +**b** reculer le curseur au debut du mot actuel +**e** avancer le curseur a la fin du mot actuel +**5G** aller a la ligne 5 +**g,** va a la position du curseur avant la derniere modification +**ctrl r** refaire +**ctrl n** auto-completion +**dd** coupe une ligne +**dw** coupe du curseur a la fin du mot +**diw** coupe le "inner" mot +**bde** pareil (begining delete end) +**bdw** pareil mais en mangeant en plus l'espace en trop avec le mot suivant +**d0** coupe du curseur jusqu'au debut de ligne +**d$** coupe du curseur jusqu'a la fin de ligne +**yy** copie la ligne +**p** colle une ligne +**.** repete la derniere commande +**"ayy** copie la ligne dans le buffer a +**"ap** colle la ligne du buffer a +**gUU** passe la ligne en uppercase +**guu** passe la ligne en lowercase +**bgUw** change le mot en uppercase +**~** change casse du caractere sous le cursor +* va a la prochaine occurence du mot sous le curseur +**q:** affiche les dernieres commandes +**==** rétablit la bonne indentation pour la ligne +**=G** rétablit la bonne indentation pour toute la page + +/REMPLACER/ +**:s/old/new** remplace la 1ere occurence de ancien par nouveau +**:%s/old/new** remplace toutes les occurences +**:s/o/n/gi** i veut dire case insensitive +**:s/A\zsB\zeC/X** remplace ABC par AXC +**:s/A\zs[0-9]** * **\zeC/#\0@** remplace A865C par A#865@C, ou A123C par A#123@C +replacement : **/old** va a la premiere prochaine occurence de 'old' + **n** va a la prochaine occurence + **:s//new** remplace 'old' par 'new' + **N** va a la precedente occurence + **&** repete la substitution + **u** annule la deniere substitution + etc... +replacement2: **vim old %** va a la toute premiere occurence de 'old' + **:s/old/new** remplace 'old' par 'new' + **:cn** va a la prochaine occurence + **&** repete la substitution + **:p** va a la precedente occurence + **u** annule la derniere sunstitution + etc... + +**command! Name %s//** a écrire dans le fichier ~/.vimrc, créer une fonction + **Name** (tjrs avec une majuscule) qui s'execute quand on + l'appel. => **:command! Name %s/a/b <bar> %s/A/B** <=> grace à + <bar> on peut écrire plusieurs fonctions a la suite +**function! Test()** dans ~/.vimrc définit une fonction qui execute plusieurs + commandes. Il faut les appeler avec :exec Test(), le ! est + tres important pour que la fonction se réecrive a chaque + fois, sinon conflit + +