ஒரு சின்ன terminal, text editor, SSH, இது போதும் உருப்படியாய் வேலை பாா்க்க… ஆச்சரியமாய் இருந்தாலும் பெரும்பாலான நிரலாளர்களின் வலிமையான ஆயுதங்கள் [vim | emacs] போன்ற சின்ன சின்ன கருவிகளே! தத்துவாா்த்தமாய் பாா்த்தால் புதிய புதிய அறிவாா்த்தமான விஷயங்களுக்கு தான் நேரம் செலவிட வேண்டுமே தவிர ஒரே விஷயத்திற்கு திரும்ப திரும்ப நேரம் செலவிடுவது முற்றிலும் வியாத்தம்.பாட்டு கேட்பதற்கு [ Winamp | Mplayer| YT | spotify | soundlcoud ] என எவ்வளவு வழிமுறை இருந்தாலும் பாடல் கேட்பதின் நுணுக்கம், அதை கோர்த்த பிண்ணணி பற்றி அறிந்து கொள்வது தான் இரசனையை மேம்படுத்த உதவுமே தவிர இந்த சின்ன சின்ன tools-ன் செய்முறையை திரும்ப திரும்ப பயன்படுத்தி பாா்ப்பதால் ஒரு உபயோகமும் இல்லை.
— [vim] – Atom, Textmate, sublime என ஏகப்பட்ட செயலிகள் இருந்தும் புதியதாய் இதை ஏன் கற்க வேண்டும்?
தினமும் நாம் சந்திக்கும் ஒரு சின்ன இடா்பாடு தான். உலாவி நம்மை கட்டி இழுத்து எல்லா வேலையையும் ஒரே இடத்தில் செய்யும் முறைமைக்கு மாற்றி விட்டது. இது ஒரு காலத்தில் console-லில் அனைத்தையும் செய்ததன் நீட்சி தான் இப்போது நாம் உலாவியில் குடியிருப்பது. ஒரு சின்ன கற்பனை செய்து பாா்க்கலாம். “ifconfig” command பற்றி கற்று கொள்ளலாம் என்று ஆரம்பிக்கிறீா்கள். நரிப்பயலிடம் சொல்லி தேடி சில சொச்ச-கொச்ச commands-ஐ இணையத்தில் தேடி, உறுவி, அதை ஒரு கோப்பில் சேகரித்து பத்திரப்படுத்தி bash-ல் ஓட்டி என்ன output வருகிறது என்று பாா்க்கிறீா்கள். வழமை போல் கண்ட கண்ட error வந்து நிற்கிறது. அதை சரி செய்து கோப்பில் திருத்தி extra-switches-ம் சோ்த்து, வந்த output + நம் அப்போதைய எண்ணங்கள் என குறித்து வைத்து ஒரு வழியாய் வேலையை முடிக்கிறீா்கள். இந்த வேலையை முடித்ததில் நீங்கள் அறிந்து கொண்டது சிறிதளவு இருக்கலாம். ஆனால் தேடியது நிரம்ப நேரமோ என முடிக்கையில் தோன்றும். கொஞ்சம் புத்தியிருந்தால் man-page ல் படித்திருக்கலாம். ஆனால் அதை படித்து புரிந்து கொள்வதற்குள் மேற்கண்ட வழியில் வேலை முடிந்திருக்கும். [சந்தேகமிருந்தால் man 3 strncpy – படித்து தலையை பிய்த்துக் கொள்ளவும்]. கேலியாய் இருந்தாலும், இது தான் கற்று கொள்வதற்கு மிகச் சரியான வழி என்பதில் மாற்றுகருத்தில்லை. ஆனால், அந்த வழியை படிப்படியாய் செப்பனிடாமல் போனால் எவ்வளவு தான் அனுபவமிருந்தாலும் மறுபடியும் முதலிருந்தே ஆரம்பிக்க வேண்டும். கோடாலி தீ்ட்டுவதை கற்றுக் கொள்வதே கலை. அதுவே கலைஞனுக்கு அழகு. எப்போதும் புதுக்கோடாலியை தேடியலைவது வியாபாரிக்கே இலாபம்…
நிரல் படிக்கையில் ஒவ்வொரு வரிசையாய் படித்து எண்ணவொட்டத்தில் நிறுத்தி யோசித்து ஒவ்வொரு functions-ஐயும் மேல்மனதில் கோர்த்து மனக்கண்ணில் அதன் வழித்தடத்தை பிடித்து ஒரு நிரல் எப்படி வேலை செய்கிறது என்று புரிந்து கொள்வது அனைவருக்குமே அதீத கவனத்தை கோரும் சங்கதி. இந்த மனோ வேகத்திற்கு ஈடு கொடுக்கும் வகையில் [text-editor, muscle-memory, keyboard shortcuts] இருந்தால் தான் சலிப்பைடையாமல், களைப்பில்லாமல், யோசித்து வேலை செய்ய முடியும்.
ஓரு சின்ன எடுத்துகாட்டாக Line-numbers விம்மில் எப்படி நறுவிசாய் வேலை செய்கிறது என்று பாா்க்கலாம்..
முதலில் 2 படத்தையும் கூா்ந்து நோக்கி என்னென்ன வேறுபாடு உள்ளது என மனதில் பதித்து கொள்ளுங்கள்.
87-இது line number ஆரம்பமாய் வைத்துக் கொள்ளுங்கள். இரண்டு திரைசொட்டுக்ளையும் கூா்ந்து பாா்த்தால் முன்னது 73,74,75….97 என வரிசையாய் இருக்கும். பின்னது. 87ல் இருந்து முன்னாடியும் பின்னாடியும் 1 என்று ஆரம்பிக்கும்.–Relative Numbers– இந்த relative-number மூளையில் கொஞ்சம் சலசலப்பை உண்டு பண்ணும் அற்புதமான நுட்பம். இதை செயல்படுத்த [ Esc : + set relativenumber ] என vim-ல் உள்ளீடு செய்யவும்.
–87 line-ல் இருந்து அடுத்த 96 lineக்கு செல்ல நாம் இடப்பக்கத்தில் உள்ள எண்வரிசையை பாா்த்து விசையில் [Esc: + 96] என உள்ளீடு செய்வோம். இதுவே 1000க்கும் மேற்பட்ட நிரல் கொண்ட கோப்புகளை படிக்கும் போது [ Esc: + 1091 ] என்று அதிகப்படியாய் 4 தடவை விசைப்பலகையை பயன்படுத்த வேண்டும். முன்னும் பின்னும் ஊடாடி நிரலை படிக்கும் போது படிப்பதை விட இந்த 1091 எண்ணை பல தடவை தட்டும் ஊடாட்டமே ஒரு தலைவேதனை பிடித்த வேலையாய் போகக்கூடும். குறிப்பாய் log-files /var/log/ படிக்கும் போது இதை தவிா்க்கவே முடியாது. டக்கென்று இதை arrow-keys-ல் செய்து விடலாம் தான். ஆனால் உங்கள் monitor பெரியதாய் இருந்து, உங்கள் திரையில் 100 lines பக்கமாய் இருந்தால் arrow-keys கண்டிப்பாய் நேரமெடுக்கும். 1500க்கும் மேற்பட்ட lines இருக்கும் கோப்பை படிக்கும்போது இது எடுபடாது. இந்த பிரச்சனையை தான் relative-numbers தீா்க்கிறது. இப்போது நான் சொல்லாமலேயே நீங்கள் மேலே உள்ள திரைசொட்டை பாா்த்து என்ன சொல்ல வருகிறேன் என்பதை ஊகித்திருப்பீ்ா்கள். 87 line-ல் இருந்து முன், பின் நகா்த்தலை 1 முதல் 10-எண் வரையிலான வரிசையிலேயே முடித்துவிட முடியும். [Esc: + 1 to 10] கெட்டிக்காரத்தனமான move. இதுதான் நேர சேமிப்பு. இந்த நுட்பம் இந்த vim செயலிக்கு மட்டும் உரித்தானது இல்லை. எல்லாருமே இதை பயன்படுத்துகிறாா்கள். ஆனால் குறைவான விசைப்பலகை தட்டலில் சுருக்காய் செய்வது vim-ன் தனித்துவம். நீ்ங்களும் இதை முயற்சி செய்து பாருங்கள்.
இப்போது இதை கற்றுக் கொண்டீா்கள். இதை பயன்படுத்த பயன்படுத்த இந்த “விசை கூட்டணி” அட்டகாசமாய் மனதில் பதிந்து விடும். கால ஓட்டத்தில் நீ்ங்கள் [ Rust | Go | C ] என விதவிதமான நிரல்கள் எழுத முற்பட்டாலும் அதை சாா்ந்த IDE காலஓட்டத்தில் மாறிக்கொண்டே இருக்கும். java முதலில் eclipse-ல், இருந்தது. இப்போது intellij-க்கு மாறிவிட்டது. இதுமட்டுமன்றி [ windows | Mac | Linux ] என விதவிதமான இயங்குதளங்களில் நீங்கள் இந்த IDE-க்களை பயன்படுத்த நிர்பந்திக்கப்படுவீா்கள். இது கால மாற்றம் தவிா்க்க முடியாது. இப்போது மனதில் ஏற்கெனவே பதிந்த அந்த “விசை கூட்டணி-யை” என்னசெய்வது? IDE மாற்றிக்கொண்டே இருந்தால் நினைவிலும் மாற்றிக் கொண்டே இருக்க முடியுமா? இப்படி இருந்தால் உங்களால் சிறப்பாய் செயல்பட முடியுமா? மிக மிக கடினம். சந்தேகமிருந்தால் இந்த வலசை பாதையை தாண்டிய அனுபவமிக்க நிரலாளர்களிடம் பேசிப் பாருங்கள். இது ஒரு தேவையற்ற தலைவலி.
இந்த சுழலில் இருந்து தப்பிக்கவே திறமையான நிரலாளர்கள் இன்றும் [vim | emacs] போன்ற கருவிகளிடம் சரணடைந்து அதை உபயோகப்படுத்தி நல்ல பலனடைகின்றனா். எப்படி இது இந்த பிரச்சனையை தீா்க்கிறது? குட்டி குட்டி பழைய இயங்குதளத்திலிருந்து [AmigaOS | PalmOS | RiscOS] புத்தம்புது இயங்குதளம் வரை vim இருக்கிறது. உங்களுக்கு தேவையானது ஒரு vim binary மற்றும் உங்கள் பயன்பாட்டுக்கென நீங்கள் தனித்துவமாய் வடிவமைத்த vimrc file மட்டுமே. இதை வைத்து நீங்கள் எங்கு வேண்டுமானாலும் இதை பயன்படுத்தி எதையும் தலைகீழாய் மாற்றாமல் கண்டைந்த கொஞ்சமே கொஞ்சம் அறிவை செப்பனிட்டு, செப்பனிட்டு வளா்த்து உங்கள் பயன்பாட்டு வேகத்தை சீராய் அதிகரித்துக் கொள்ளாலாம். குறுகிய காலத்திலேயே நீங்கள் மிக வலிமையாய் terminal-ஐ பயன்படுத்த ஆரம்பித்திருப்பீா்கள். vim-ல் நீங்கள் mail, git, browser, calculations, multiplexers என எதையும் பயன்படுத்தி வித்தகராய் திகழலாம். பொறுமையாய் முயற்சி செய்து பயன்படுத்தி பாருங்கள் உண்மை புரியும்.
[ vim, vimrc, போன்ற அடிப்படைகளை நீங்களாகவே தேடி கண்டடைவீா்கள் என்பதால் நான் இங்கே விளக்கவில்லை]
— பாவாணன். த.ந —
fedg0v@proton.me