,EVERY SYSTEM TASK ENDS AT AN EDITOR EVERY CONFIG FILE1 EVERY SCRIPT1 EVERY FSTAB1 EVERY AUTHORIZED.-KEYS4 ,TWO NAMES ANCHOR IT3 VI THE ,,POSIX-MANDATED EDITOR1 PRESENT ON EVERY ,UNIX EVER AND VIM1 WHICH IS WHAT VI ACTUALLY RUNS ON NEARLY EVERY ,LINUX "4 ,,POSIX VI IS THE SPECIFICATION2 VIM IS THE PROGRAM THE 6 MARKS IN THE GRAMMAR TABLE SEPARATE THEM4 NANO RIDES ALONG AS THE KIND DEFAULT ON MOST DISTROS4 ,THIS CHAPTER TEACHES VI FLUENCY AS A SURVIVAL SKILL AND A FLUENCY1 NANO AS THE FRIENDLY FALLBACK1 AND WHEN EACH IS THE RIGHT TOOL4 VI THE ONE THAT'S ALWAYS THERE ,VI'S CORE TRICK3 MODES I TO INSERT1 ,ESC BACK TO NORMAL1 WHERE EVERY KEY IS A COMMAND4 ,THE DISCIPLINE FEELS ALIEN FOR A DAY1 THEN BECOMES HOW YOU THINK3 ,,ESC NORMAL MODE " I _/ A _/ O INSERT BEFORE _/ AFTER _/ NEW LINE 3;W WRITE 3;Q QUIT 3WQ SAVE"6QUIT 3;Q6 FORCE-QUIT 3;X SAVE"6QUIT ,,ZZ SAVE"6QUIT DD DELETE LINE YY YANK ;P PASTE ;U UNDO ,CTRL-;,R REDO #J _/ @S LINE START_/END GG _/ ;,G FILE START_/END _/PATTERN SEARCH ;N NEXT 8 SEARCH BACK 3.0S_/OLD_/NEW_/G SED INSIDE THE EDITOR 3WQ THE COMMAND EVERY TUTORIAL DRILLS ,THE VERBS COMPOSE3 ;D "6 MOTION "7 DELETE "2 ;Y "6 MOTION "7 YANK2 ;C "6 MOTION "7 CHANGE4 #E;DD DELETES FIVE LINES2 CI0 CHANGES INSIDE QUOTES2 ;V SELECTS VISUALLY2 4 REPEATS THE LAST COMMAND4 ,THE LANGUAGE IS GRAMMAR VERB "6 MOTION AND FLUENCY IS LEARNING TO SPEAK IT4 VIM VI'S EMPIRE VIM ADDS SYNTAX HIGHLIGHTING1 MULTIPLE FILES1 SPLITS1 PLUGINS ON MOST ,LINUXES VI IS VIM IN COMPATIBLE MODE4 VIMTUTOR IS THE BUILT-IN TUTORIAL #BJ MINUTES1 GENUINELY SUFFICIENT4 ,THE SURVIVAL SET FOR CONFIG WORK3 I_/,ESC1 3WQ1 DD1 ;U1 _/1 3SET NUMBER4 ,EVERYTHING ELSE IS DEPTH4 NANO THE KIND ONE NANO FILE ,CTRL-,O WRITE OUT ,CTRL-;,X EXIT ,CTRL-;,W FIND ,CTRL-;,K CUT LINE ,CTRL-;,U UNCUT ,CTRL-;,G HELP ,THE SHORTCUTS ARE PRINTED AT THE BOTTOM THE EDITOR THAT EXPLAINS ITSELF4 ,FOR QUICK EDITS AND FOR ANYONE NOT LIVING IN THE TERMINAL1 NANO IS CORRECT4 _/ETC_/ALTERNATIVES_/DISTRO DEFAULTS SET ,,EDITOR_/,,VISUAL EXPORT ,,EDITOR"7NANO MAKES IT THE SYSTEM'S DEFAULT "4 VI THE COMPLETE GRAMMAR "<,,POSIX VI COVERS THE CORE2 ROWS MARKED 6 ARE VIM-ONLY VISUAL MODE1 TEXT OBJECTS1 SPLITS1 REDO PRESENT ON EVERY ,LINUX .*VI.*1 ABSENT ON A TRUE ,,POSIX VI4"> ,,MODES3 ,ESC NORMAL I_/A_/O_/,O INSERT V_/,V_/,CTRL-;V VISUAL6 3 EX ;,R REPLACE ,CTRL-O ONE NORMAL CMD FROM INSERT6 GV RESELECT LAST VISUAL6 ,,MOTIONS "3 #J @S @5 LINE START_/END_/FIRST-NONBLANK ;W ;B ;E WORD FWD_/BACK_/END ,,,;W ;B ;E,' ,,WORD GG6 ;,G FILE START_/END 3;N _/ N,G LINE ;N ;F ;,F ;T ;,T CHAR-TARGET MOTIONS1 2 1 REPEAT THEM _< _> PARAGRAPH "< "> SENTENCE .0 MATCHING BRACKET "9 _? WORD UNDER CURSOR6 ,,VERBS "6 ,,MOTIONS THE COMPOSITIONAL LANGUAGE3 ;D DELETE ;Y YANK ;C CHANGE ;V SELECT @> INDENT @< DEDENT "7 REFORMAT DD YY CC LINE FORMS D#C;W #C;DW DELETE #C WORDS ;D@S TO END DF2 TO THE 2 CI0 CA"< CIW INNER_/AROUND QUOTED_/PAREN_/WORD6 CIP CHANGE PARAGRAPH6 D_/TEXT TO THE PATTERN Y,G TO END OF FILE ,,OPERATORS3 ;X CHAR ;,X BEFORE ;S SUBSTITUTE CHAR ;,S LINE ;,J JOIN LINES ;P ;,P PASTE AFTER_/BEFORE 4 ,,REPEAT LAST COMMAND THE SUPERPOWER ;U ;,U ,CTRL-;,R UNDO_/LINE_/REDO6 @9 SWAP CASE GU G,U LOWER_/UPPER6 ;R REPLACE CHAR ZZ ZT ZB RECENTER_/TOP_/BOTTOM6 ,,EX ,,COMMANDS "<3">3 3;W 3;Q 3WQ 3;X 3;Q6 ,,ZZ ,,ZQ WRITE_/QUIT COMBOS 3;E6 REVERT TO DISK 3SET NUMBER _/ NONU LINE NUMBERS6 3SET PASTE _/ NOPASTE THE PASTE-MODE FIX FOR BRACKETED PASTES6 3S_/OLD_/NEW_/. SED INSIDE .0 "7 WHOLE FILE1 ;G "7 GLOBAL1 ;C "7 CONFIRM 3G_/PAT_/D DELETE EVERY MATCHING LINE GLOBAL"6CMD 3V_/PAT_/D DELETE EVERY ,,NON-MATCHING 3;R FILE READ A FILE IN 3;R6 CMD INSERT A COMMAND'S OUTPUT 36 CMD SHELL OUT 3;W 6SUDO TEE .0 SAVE-AS-ROOT THE CLASSIC FIX6 3SPLIT 3VSPLIT 3TABNEW ,CTRL-;W SPLITS "6 TABS6 3NOH CLEAR SEARCH HIGHLIGHT6 3HISTORY 3BUFFERS 3LS THE STATE6 3MARK A1 'A NAMED MARKS 3REGISTERS THE YANK REGISTERS6 3;X LIKE 3WQ BUT ONLY WRITES IF CHANGED VIM THE ADDITIONS WORTH IT VIM FILE "6#BJ _? OPEN AT LINE #BJ VIM FILE "6_/PAT _? OPEN AT FIRST MATCH VIM -;,R FILE _? READ-ONLY VIM -;D A ;B _? VIMDIFF SIDE-BY-SIDE DIFF VIM FILE#A FILE#B _? MULTIPLE 3;N 3PREV 3ARGS VIM -O_/-,O_/-;P A ;B _? SPLITS VS TABS VIMTUTOR _? THE TUTORIAL RUN IT 3SET NU RNU _? ABSOLUTE "6 RELATIVE NUMBERS THE MOTION MATH 3SET LIST SHOW TABS_/TRAILING 3SET HLSEARCH INCSEARCH SEARCH BEHAVIOR 3SYNTAX ON_/OFF HIGHLIGHTING 3RETAB TABSSPACES PER TS GG"7,G REINDENT THE WHOLE FILE ;Q3 Q_/ ;Q8 THE COMMAND_/SEARCH HISTORY ,,WINDOWS ,CTRL-A ,CTRL-;X INC_/DEC NUMBERS UNDER CURSOR NANO THE FULL SET ,CTRL-,O WRITE ,CTRL-;,X EXIT ,CTRL-;,W FIND ,ALT-;,W NEXT ,CTRL-_* REPLACE ,CTRL-;,K CUT ,CTRL-;,U UNCUT ,CTRL-;,Y PREV-PAGE ,CTRL-;,V NEXT-PAGE ,ALT-,A MARK ,ALT-#F COPY ,CTRL-.- GO-TO-LINE ,CTRL-;,C CURSOR POS ,CTRL-;,T SPELL ,ALT-;,U UNDO ,ALT-;,E REDO ,CTRL-;,G HELP NANO -;L -;C FILE _? LINE NUMBERS "6 CURSOR POS ED THE ANCESTOR ED FILE A APPEND I INSERT ;C CHANGE ;D DELETE ;P PRINT ;N NUMBERED PRINT 1;P PRINT ALL #A1E;P LINES _/PAT_/ SEARCH S_/OLD_/NEW_/ SUBSTITUTE ;W WRITE ;Q QUIT ED IS WHERE SED'S S_/_/_/1 VI'S 3 COMMANDS1 AND GREP'S G_/RE_/P ALL DESCEND FROM THE ORIGINAL LINE EDITOR4 ,THE OTHERS WORTH KNOWING - ED THE LINE EDITOR ANCIENT1 SCRIPTABLE1 THE ANCESTOR OF SED AND VI'S 3 COMMANDS ED SURVIVES IN ,,POSIX - SED -I EDITING WITHOUT AN EDITOR SED -I4BAK 'S_/A_/B_/G' IS THE SCRIPTED EDIT - EMACS THE OTHER GIANT A LISP ENVIRONMENT THAT EDITS TEXT - CODE_/NVIM_/HELIX THE MODERNS ,,VS ,CODE1 ,NEOVIM1 ,HELIX ,THE CONFIG-FILE CRAFT ,REAL EDITING IS CONFIG WORK _/ETC_/FSTAB1 SSHD.-CONFIG1 4BASHRC3 SUDOEDIT _/ETC_/FSTAB _? EDITS AS USER1 WRITES AS ROOT SAFER THAN SUDO VI VI _/ETC_/SSH_/SSHD.-CONFIG _? THE CLASSIC NANO @9_/4BASHRC ,THE DISCIPLINES3 BACK UP BEFORE EDITING "1 LEARN THE FILE'S SYNTAX "1 SYNTAX-CHECK AFTER "4 ,A BROKEN _/ETC_/FSTAB BOOTS TO EMERGENCY MODE2 A BROKEN SUDOERS LOCKS OUT SUDO KNOW THE CHECK COMMAND BEFORE SAVING4 ,WHERE EDITORS GO WRONG ,SYMPTOM ,CAUSE ,TYPING PRODUCES COMMANDS1 NOT TEXT VI IN NORMAL MODE I 3WQ DIDN'T QUIT ,STILL IN INSERT ,ESC FIRST SUDO VI FILE LEAVES ROOT-OWNED FILES SUDOEDIT OR SUDO -;E IS CLEANER GIT COMMIT OPENS AN ALIEN EDITOR EXPORT ,,EDITOR"7NANO VI'S COLORS UNREADABLE 3SYNTAX OFF1 OR ,,TERM BROKEN ,SAVED BUT THE CHANGE DIDN'T TAKE ,THE FILE NEEDED A SERVICE RESTART _/ RE-SOURCE ,EXERCISES #A4 VIMTUTOR ONCE THROUGH1 HONESTLY4 #B4 ,EDIT A SCRATCH FILE3 DD A LINE1 ;U UNDO1 _/SEARCH1 3.0S_/X_/Y_/G4 #C4 EXPORT ,,EDITOR"7NANO2 CRONTAB -;E SEE THE DEFAULT TAKE EFFECT4 #D4 SED -I4BAK 'S_/A_/B_/G' A FILE THE NO-EDITOR EDIT4 #E4 ,OPEN _/ETC_/FSTAB IN VI READ-ONLY PRACTICE1 3;Q6 OUT4 ,SEE ALSO - ,SHELL ,TEXT ,PROCESSING ,CORE ,UTILITIES ,LINUX