diff options
Diffstat (limited to 'fa-ir')
-rw-r--r-- | fa-ir/css-fa.html.markdown | 55 | ||||
-rw-r--r-- | fa-ir/java-fa.html.markdown | 1 | ||||
-rw-r--r-- | fa-ir/javascript-fa.html.markdown | 82 | ||||
-rw-r--r-- | fa-ir/vim-fa.html.markdown | 469 |
4 files changed, 579 insertions, 28 deletions
diff --git a/fa-ir/css-fa.html.markdown b/fa-ir/css-fa.html.markdown index 4e222eb2..56a43967 100644 --- a/fa-ir/css-fa.html.markdown +++ b/fa-ir/css-fa.html.markdown @@ -29,21 +29,21 @@ filename: learncss-fa.css <p dir='rtl'>در CSS همه توضیحات داخل ستاره-بروم نوشته میشوند زیرا CSS دستوری برای توضیحات تک خطی مثل C ندارد</p> -```CSS +```css /* comments appear inside slash-asterisk, just like this line! there are no "one-line comments"; this is the only comment style */ ``` <p dir='rtl'>به طور کلی دستورات CSS بسیار ساده هستند که در آن یک انتخابگر (selector) عنصری را در روی صفحه هدف قرار میدهد.</p> -```CSS +```css selector { property: value; /* more properties...*/ } ``` <p dir='rtl'>با استفاده از ستاره می توان برای همه عناصر روی صفحه استایل تعریف کرد</p> -```CSS +```css * { color:red; } ``` @@ -52,132 +52,134 @@ selector { property: value; /* more properties...*/ } ```html <div class='some-class class2' id='someId' attr='value' otherAttr='en-us foo bar' /> ``` + <p dir='rtl'>شما میتوانید با استفاده از نام کلاس آنرا انتخاب کنید</p> -```CSS +```css .some-class { } ``` <p dir='rtl'>یا با استفاده از نام دو کلاس</p> -```CSS +```css .some-class.class2 { } ``` <p dir='rtl'>یا با استفاده از نام id</p> -```CSS +```css #someId { } ``` <p dir='rtl'>یا با استفاده از نام خود عنصر</p> -```CSS +```css div { } ``` <p dir='rtl'>یا با استفاده از `attr`</p> -```CSS +```css [attr] { font-size:smaller; } ``` <p dir='rtl'>یا با استفاده از ارزشی که برای `attr` مشخص شده</p> -```CSS +```css [attr='value'] { font-size:smaller; } ``` <p dir='rtl'>با استفاده از ارزشی که برای `attr` مشخص شده و آن ارزش با `val` شروع میشود در CSS3</p> -```CSS +```css [attr^='val'] { font-size:smaller; } ``` <p dir='rtl'>با استفاده از ارزشی که برای `attr` مشخص شده و آن ارزش با `ue` به پایان میرسد در CSS3</p> -```CSS +```css [attr$='ue'] { font-size:smaller; } ``` <p dir='rtl'>یا با انتخاب بوسیله یکی از ارزشهایی که در لیست `otherAttr` بوسیله فاصله از هم جدا شده اند در CSS3</p> -```CSS +```css [attr$='ue'] { font-size:smaller; } ``` <p dir='rtl'>یا ارزش(`value`) دقیقاً خود ارزش(`value`) یا بوسیله `-` که یونیکد (U+002D) از حرف بعدی جدا شود</p> -```CSS +```css [otherAttr|='en'] { font-size:smaller; } ``` <p dir='rtl'>و مهمتر از همه اینکه میتوان آنها را ترکیب کرد. نکته مهمی که در اینجا باید مد نظر داشته باشید این است که هنگام ترکیب نباید هیچگونه فاصله ای بین آنها قرار گیرد زیرا در این حالت معنای دستور تغییر میکند</p> -```CSS +```css div.some-class[attr$='ue'] { } ``` <p dir='rtl'>CSS این امکان را به شما میدهد که یک عنصر را بوسیله والدین آن انتخاب کنید</p> <p dir='rtl'>برای مثال دستور زیر همه عناصری را که نام کلاس آنها <span dir="ltr">`.class-name`</span> و دارای پدر و مادری با این مشخصه <span dir="ltr">`div.some-parent`</span> هستند را انتخاب میکند.</p> -```CSS +```css div.some-parent > .class-name {} ``` <p dir='rtl'>یا دستور زیر که همه عناصری را که نام کلاس آنها <span dir="ltr">`.class-name`</span> و داخل عنصری با مشخصه <span dir="ltr">`div.some-parent`</span> هستند را در هر عمقی که باشند (یعنی فرزندی از فرزندان <span dir="ltr">`div.some-parent`</span><span dir="ltr"> باشند) انتخاب میکند.</p> -```CSS +```css div.some-parent .class-name {} ``` <p dir='rtl'>نکته ای که در اینجا باید به آن توجه کنید این است که این رستور با فاصله ای بین نام دو کلاس همراه است و با مثال زیر که در بالا هم ذکر شد تفاوت دارد.</p> -```CSS +```css div.some-parent.class-name {} ``` <p dir='rtl'>دستور زیر همه عناصری را که نام کلاس آنها <span dir="ltr">`.this-element`</span> و بلافاصله بعد از عنصری با مشخصه <span dir="ltr">`.i-am-before`</span> قرار دارد را انتخاب میکند.</p> -```CSS +```css .i-am-before + .this-element { } ``` <p dir='rtl'>هر خواهر یا برادری که بعد از <span dir="ltr">`.i-am-before`</span> بیاید در اینجا لازم نیست بلافاصله بعد از هم قرار بگیرند ولی باید دارای پدر و مادری یکسان باشند.</p> -```CSS +```css .i-am-any-before ~ .this-element {} ``` + <p dir='rtl'>در زیر چند نمونه از شبه کلاسها را معرفی میکنیم که به شما اجازه میدهد عناصر را بر اساس رفتار آنها در صفحه انتخاب کنید.</p> <p dir='rtl'>برای مثال زمانی که اشاره گر ماوس روی عنصری بر روی صفحه قرار دارد.</p> -```CSS +```css selector:hover {} ``` <p dir='rtl'>یا زمانی از یک لینک بازید کردید.</p> -```CSS +```css selected:visited {} ``` <p dir='rtl'>یا زمانی از لینکی بازید نشده است.</p> -```CSS +```css selected:link {} ``` <p dir='rtl'>یا زمانی که روی یک عنصر ورودی متمرکز شده.</p> -```CSS +```css selected:focus {} ``` <h3 dir='rtl'>واحدها</h3> -```CSS +```css selector { /* واحدها اندازه */ @@ -247,7 +249,7 @@ selector { <p dir='rtl'>به مثال زیر توجه کنید:</p> -```CSS +```css /*A*/ p.class1[attr='value'] @@ -262,7 +264,6 @@ p {} /*E*/ p { property: value !important; } - ``` <p dir='rtl'>و همچنین به کد زیر:</p> @@ -270,8 +271,8 @@ p { property: value !important; } ```html <p style='/*F*/ property:value;' class='class1 class2' attr='value'> </p> - ``` + <p dir='rtl'>حق تقدم یا اولویت برای مثال بالا به این صورت است:</p> <p dir='rtl'>توجه داشته باشید که حق تقدم برای هر کدام از ویژگیها است نه برای کل مجموعه.</p> diff --git a/fa-ir/java-fa.html.markdown b/fa-ir/java-fa.html.markdown index cb965fc4..a834afcd 100644 --- a/fa-ir/java-fa.html.markdown +++ b/fa-ir/java-fa.html.markdown @@ -854,7 +854,6 @@ public class EnumTest { // Enum types are much more powerful than we show above. // The enum body can include methods and other fields. // You can see more at https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html - ``` ## مطالب بیشتر diff --git a/fa-ir/javascript-fa.html.markdown b/fa-ir/javascript-fa.html.markdown index d4d3a657..16b18a7c 100644 --- a/fa-ir/javascript-fa.html.markdown +++ b/fa-ir/javascript-fa.html.markdown @@ -34,21 +34,26 @@ lang: fa-ir /* and multiline comments start with slash-star and end with star-slash */ ``` + <p dir='rtl'> گزاره ها را میتوانید با نقطه ویرگول پایان دهید ; </p> + ```js doStuff(); ``` + <p dir='rtl'> ولی لزومی به این کار نیست. نقطه ویرگول به صورت خودکار در نظر گرفته میشوند. </p> <p dir='rtl'> وقتی که خط جدیدی شروع میشود. مگر در موارد خاص. </p> + ```js doStuff() ``` + <p dir='rtl'>برای اینگه درگیر آن موارد خاص نشویم، در اینجا از اون ها </p> <p dir='rtl'>صرف نظر میکنیم.</p> @@ -57,97 +62,133 @@ doStuff() <p dir='rtl'>جاوااسکریپت فقط یک نوع عدد دارد و آن عدد اعشاری 64 بیتی IEEE 754 است.</p> <p dir='rtl'>نترسید! و نگران اعداد صحیح نباشید! این اعداد اعشاری دارای 54 بیت مانتیس هستند که قابلیت ذخیره ی </p> <p dir='rtl'>دقیق اعداد صحیح تا مقدار تقریبی 9x10¹⁵ را دارند.</p> + ```js 3; // = 3 1.5; // = 1.5 ``` + <p dir='rtl'> تمامی عملگر های محاسباتی آن طوری که انتظارش را دارید عمل خواهند کرد. </p> + ```js 1 + 1; // = 2 8 - 1; // = 7 10 * 2; // = 20 35 / 5; // = 7 ``` + <p dir='rtl'>و این حتی شامل تقسیم هم میشود.</p> + ```js 5 / 2; // = 2.5 ``` + <p dir='rtl'>عملگر های بیتی هم به همین شکل. وقتی از یک عملگر بیتی استفاده میکنید، عدد اعشاری شما</p> <p dir='rtl'>به عدد صحیح علامت دار *تا 32 بیت* تبدیل میشود.</p> + ```js 1 << 2; // = 4 ``` + <p dir='rtl'>عملیات داخل پرانتز تقدم بالاتری دارند.</p> + ```js (1 + 3) * 2; // = 8 ``` + <p dir='rtl'>سه مقدار خاص وجود دارند که در واقع مقادیر عددی نیستند:</p> + ```js Infinity; // result of e.g. 1/0 -Infinity; // result of e.g. -1/0 NaN; // result of e.g. 0/0 ``` + <p dir='rtl'>مقادیر بولی هم تعریف شده هستند:</p> + ```js true; false; ``` + <p dir='rtl'>رشته ها با آپستروف و یا گیومه تعریف میشوند.</p> + ```js 'abc'; "Hello, world"; ``` + <p dir='rtl'>و منفی کردن شرط با علامت تعجب</p> + ```js !true; // = false !false; // = true ``` + <p dir='rtl'>تساوی دو مقدار با ==</p> + ```js 1 == 1; // = true 2 == 1; // = false ``` + <p dir='rtl'>و عدم تساوی با !=</p> + ```js 1 != 1; // = false 2 != 1; // = true ``` + <p dir='rtl'>و سایر عمیلات های مقایسه</p> + ```js 1 < 10; // = true 1 > 10; // = false 2 <= 2; // = true 2 >= 2; // = true ``` + <p dir='rtl'>رشته ها با علامت جمع به یکدیگر متصل میشوند</p> + ```js "Hello " + "world!"; // = "Hello world!" ``` + <p dir='rtl'>و با علامت برگتر و یا کوچکتر با یکدیگر مقایسه میشوند.</p> + ```js "a" < "b"; // = true ``` + <p dir='rtl'>نوع متغیر برای عملیات مقایسه تطبیق داده میشود</p> + ```js "5" == 5; // = true ``` + <p dir='rtl'>مگر اینکه از سه مساوی استفاده شود!</p> + ```js "5" === 5; // = false ``` + <p dir='rtl'>با استفاده از charAt میتوانید به کارکتر های یک رشته دسترسی پیدا کنید.</p> + ```js "This is a string".charAt(0); ``` + <p dir='rtl'>از null برای نشان دادن عمدی مقدار هیج استفاده میشود.</p> <p dir='rtl'>و از undefined برای نشان دادن اینکه در حال حاظر مقدار موجود نمی باشد، هرچند خود undefined یک مقدار محسوب میشود.</p> + ```js null; // used to indicate a deliberate non-value undefined; // used to indicate a value is not currently present (although undefined // is actually a value itself) ``` + <p dir='rtl'>false, null, undefined, NaN, 0 و "" مقدار نادرست و هر چیز دیگر مقدار درست طلقی میشوند.</p> <p dir='rtl'>توجه داشته باشید که 0 نادرست و "0" درست طلقی میشوند حتی در عبارت 0=="0".</p> @@ -156,11 +197,13 @@ undefined; // used to indicate a value is not currently present (although undefi <p dir='rtl'>متغیر ها با کلید واژه var تعریف میشوند. اشیا در جاوااسکریپت دارای نوع پویا هستند، </p> <p dir='rtl'>بدین شکل که برای تعریف نیازی به مشخص کردن نوع متعیر نیست. </p> <p dir='rtl'>برای مقدار دهی از علامت مساوی استفاده میشود. </p> + ```js var someVar = 5; ``` <p dir='rtl'>اگر کلید واژه var را قرار ندهید، هیچ خطایی دریافت نخواهید کرد... </p> + ```js someOtherVar = 10; ``` @@ -168,34 +211,40 @@ someOtherVar = 10; <p dir='rtl'>در عوض متغیر شما در گستره ی کل برنامه تعریف شده خواهد بود. </p> <p dir='rtl'>متغیر هایی که تعریف شده ولی مقدار دهی نشوند، دارای مقدار undefined خواهند بود. </p> + ```js var someThirdVar; // = undefined ``` <p dir='rtl'>برای اعمال عملگر های محاسباتی، میانبر هایی وجود دارند: </p> + ```js someVar += 5; // equivalent to someVar = someVar + 5; someVar is 10 now someVar *= 10; // now someVar is 100 ``` <p dir='rtl'>حتی از این هم کوتاهتر برای اضافه یا کم کردن یک عدد با مقدار یک. </p> + ```js someVar++; // now someVar is 101 someVar--; // back to 100 ``` <p dir='rtl'>آرایه ها در واقع لیستی مرتب شده از مقادیر مختلف از هر نوعی هستند. </p> + ```js var myArray = ["Hello", 45, true]; ``` <p dir='rtl'>به اعضای یک آرایه میتوان از طریق قرار دادن کروشه در جلوی نام آن دسترسی پیدا کرد. </p> <p dir='rtl'>نمایه ی آرایه از صفر شروع میشود. </p> + ```js myArray[1]; // = 45 ``` <p dir='rtl'>آرایه ها ناپایدار و دارای طول قابل تغییر هستند </p> + ```js myArray.push("World"); myArray.length; // = 4 @@ -203,31 +252,37 @@ myArray.length; // = 4 <p dir='rtl'>در جاوااسکریپت، اشیاء چیزی شبیه دیکشنری و یا نقشه در زبان های دیگر هستند: </p> <p dir='rtl'>یک مجموعه ی نامرتب از جفت های کلید-مقدار. </p> + ```js var myObj = {key1: "Hello", key2: "World"}; ``` <p dir='rtl'>کلید ها از نوع رشته هستند ولی در صورتی که مقدار معتبری برای اسم گزاری باشند نیازی به آوردن آنها درون گیومه نیست. </p> + ```js var myObj = {myKey: "myValue", "my other key": 4}; ``` <p dir='rtl'>اعضای یک شئ را نیز میتوانید با استفاده از کروشه در مقابل نام آنها استخراج کنید. </p> + ```js myObj["my other key"]; // = 4 ``` <p dir='rtl'>...و یا از طریق نقطه در صورتی که اسم عضو مورد نظر اسم معتبری برای اسم گزاری باشد.</p> + ```js myObj.myKey; // = "myValue" ``` <p dir='rtl'>اشیاء ناپایدار و قابل اضافه کردن عضو جدید هستند.</p> + ```js myObj.myThirdKey = true; ``` <p dir='rtl'>اگر سعی کنید عضوی را که وجود ندارد استخراج کنید، مقدار undefined را دریافت خواهید کرد. </p> + ```js myObj.myFourthKey; // = undefined ``` @@ -235,6 +290,7 @@ myObj.myFourthKey; // = undefined <h2 dir='rtl'>3. منطق و ساختار کنترل</h2> <p dir='rtl'>ساختار if به شکلی که انتظارش را دارید کار میکند.</p> + ```js var count = 1; if (count == 3){ @@ -247,6 +303,7 @@ if (count == 3){ ``` <p dir='rtl'>و همینطور حلقه while</p> + ```js while (true) { // An infinite loop! @@ -254,6 +311,7 @@ while (true) { ``` <p dir='rtl'>حلقه do-while شبیه while است با این تفاوت که حداقل یکبار اجرا میشود.</p> + ```js var input do { @@ -263,6 +321,7 @@ do { <p dir='rtl'>حلقه for همانند زبان C و جاوا کار می کند.</p> <p dir='rtl'>مقدار دهی اولیه; شرط ادامه; چرخش حلقه</p> + ```js for (var i = 0; i < 5; i++){ // will run 5 times @@ -270,6 +329,7 @@ for (var i = 0; i < 5; i++){ ``` <p dir='rtl'>عملگر && و || به ترتیب "و" و "یا" ی منطقی هستند.</p> + ```js if (house.size == "big" && house.colour == "blue"){ house.contains = "bear"; @@ -280,6 +340,7 @@ if (colour == "red" || colour == "blue"){ ``` <p dir='rtl'>از || همچنین میتوان برای تعیین مقدار پیشفرض استفاده کرد.</p> + ```js var name = otherName || "default"; ``` @@ -287,6 +348,7 @@ var name = otherName || "default"; <h2 dir='rtl'>4. توابع و مفاهیم گستره و بستار</h2> <p dir='rtl'>توابع در جاوااسکریپت با استفاده از کلیدواژه ی function تعریف میشوند.</p> + ```js function myFunction(thing){ return thing.toUpperCase(); @@ -297,6 +359,7 @@ myFunction("foo"); // = "FOO" <p dir='rtl'>توابع در جاوااسکریپت نوعی شئ پایه محسوب میشوند، بنابر این می توانید آنها را به اشیاء مختلف</p> <p dir='rtl'>اضافه کنید و یا به عنوان پارامتر به توابع دیگر ارسال کنید.</p> <p dir='rtl'>- برای مثال وقتی که با یک رویداد کار میکنید.</p> + ```js function myFunction(){ // this code will be called in 5 seconds' time @@ -309,6 +372,7 @@ setTimeout(myFunction, 5000); <p dir='rtl'>توابع نیازی به داشتن اسم ندارند. برای مثال وقتی تابعی را به تابعی دیگر ارسال میکنید</p> <p dir='rtl'>میتوانید آنرا به صورت بینام تعریف کنید.</p> + ```js setTimeout(function(){ // this code will be called in 5 seconds' time @@ -317,6 +381,7 @@ setTimeout(function(){ <p dir='rtl'>توابع دارای محدوده ی متغیر های خود هستند.</p> <p dir='rtl'>بر خلاف دیگر ساختار ها - مانند if</p> + ```js if (true){ var i = 5; @@ -326,6 +391,7 @@ i; // = 5 - not undefined as you'd expect in a block-scoped language <p dir='rtl'>به همین دلیل الگوی خاصی به نام "تابعی که بلافاصله صدا زده میشود" پدید آمده </p> <p dir='rtl'>تا از اضافه شدن متغیر های قسمتی از برنامه به گستره ی کلی برنامه جلوگیری شود.</p> + ```js (function(){ var temporary = 5; @@ -341,6 +407,7 @@ permanent; // = 10 <p dir='rtl'>یکی از برترین ویژگی های جاوااسکریپت مفهومی با نام بستار است</p> <p dir='rtl'>بدین شکل که اگر تابعی درون تابع دیگری تعریف شود، تابع درونی به تمام متغیر های تابع خارجی دسترسی</p> <p dir='rtl'>خواهد داشت، حتی بعد از اینکه تابع خارجی به اتمام رسیده باشد.</p> + ```js function sayHelloInFiveSeconds(name){ var prompt = "Hello, " + name + "!"; @@ -359,6 +426,7 @@ sayHelloInFiveSeconds("Adam"); // will open a popup with "Hello, Adam!" in 5s <h2 dir='rtl'>5. دیگر اشیاء، سازنده ها و پیشنمونه ها</h2> <p dir='rtl'>اشیاء میتوانند تابع داشته باشند.</p> + ```js var myObj = { myFunc: function(){ @@ -370,6 +438,7 @@ myObj.myFunc(); // = "Hello world!" <p dir='rtl'>وقتی تابع یک شی صدا زده می شود، تابع میتواند به سایر مقادیر درون آن شی </p> <p dir='rtl'>از طریق کلید واژه ی this دسترسی داشته باشد.</p> + ```js myObj = { myString: "Hello world!", @@ -384,6 +453,7 @@ myObj.myFunc(); // = "Hello world!" <p dir='rtl'>اینکه مقدار this چه باشد بستگی به این دارد که تابع چگونه صدا زده شود</p> <p dir='rtl'>نه اینکه تابع کجا تعریف شده است.</p> <p dir='rtl'>بنابر این تابع بالا اگر بدین شکل صدا زده شود کار نخواهد کرد</p> + ```js var myFunc = myObj.myFunc; myFunc(); // = undefined @@ -392,6 +462,7 @@ myFunc(); // = undefined <p dir='rtl'>به همین شکل، تابعی که در جای دیگر تعریف شده را میتوانید به یک شی الحاق کنید</p> <p dir='rtl'>و بدین ترتیب تابع میتواند به مقادیر درون شی از طریق this دسترسی پیدا کند.</p> + ```js var myOtherFunc = function(){ return this.myString.toUpperCase(); @@ -403,6 +474,7 @@ myObj.myOtherFunc(); // = "HELLO WORLD!" <p dir='rtl'>اگر تابعی با کلید new صدا زده شوند، شی جدیدی ایجاد شده و تابع در گستره ی آن صدا زده میشود.</p> <p dir='rtl'>توابعی که بدین شکل صدا زده شوند در واقع نقش سازنده را ایفا می کنند.</p> + ```js var MyConstructor = function(){ this.myNumber = 5; @@ -420,6 +492,7 @@ myNewObj.myNumber; // = 5 <p dir='rtl'>طریق عضو جادویی __proto__ میدهند.</p> <p dir='rtl'>هرچند این به شناخت پیش نمونه ها کمک میکند ولی در حیطه ی جاوااسکریپت استاندارد قرار نمیگیرد.</p> <p dir='rtl'>در ادامه شکل استاندارد پیش نمونه ها مورد بررسی قرار میگیرند.</p> + ```js var myObj = { myString: "Hello world!", @@ -435,12 +508,14 @@ myObj.meaningOfLife; // = 42 ``` <p dir='rtl'>این موضوع در مورد توابع نیز صدق میکند.</p> + ```js myObj.myFunc(); // = "hello world!" ``` <p dir='rtl'>اگر عضو مورد نظر در پیش نمونه ی شی یافت نشود، پیش نمونه ی پیش نمونه جستجو شده و الی آخر</p> + ```js myPrototype.__proto__ = { myBoolean: true @@ -451,6 +526,7 @@ myObj.myBoolean; // = true <p dir='rtl'>توجه داشته باشید که پیش نمونه ها کپی نمی شوند و هر شی جدید به پیش نمونه موجود اشاره میکند</p> <p dir='rtl'>بدین ترتیب اگر تابعی به پیش نمونه اضافه شود تمامی اشیاء میتوانند به آن دسترسی پیدا کنند.</p> + ```js myPrototype.meaningOfLife = 43; myObj.meaningOfLife; // = 43 @@ -460,6 +536,7 @@ myObj.meaningOfLife; // = 43 <p dir='rtl'>ولی دو راه برای ارائه پیش نمونه برای اشیاء جدید وجود دارد.</p> <p dir='rtl'>اولی وقتیست که از تابع Object.create استفاده میشود - که اخیرا به زبان اضافه شده است و بنابراین بر روی همه ی پیاده سازی های آن وجود ندارد.</p> + ```js var myObj = Object.create(myPrototype); myObj.meaningOfLife; // = 43 @@ -469,6 +546,7 @@ myObj.meaningOfLife; // = 43 <p dir='rtl'>راه دوم - که همه جا قابل استفاده است - مربوط به سازنده ها می شود.</p> <p dir='rtl'>سازنده ها دارای عضوی با نام prototype هستند. این پیش نمونه ی خود سازنده نیست</p> <p dir='rtl'>بلکه پیش نمونه ایست که به تمامی اشیاء ساخته شده توسط این سازنده الحاق میشود.</p> + ```js MyConstructor.prototype = { myNumber: 5, @@ -484,6 +562,7 @@ myNewObj2.getMyNumber(); // = 6 <p dir='rtl'>رشته ها و سایر سازنده های پیش ساخته ی زبان نیز دارای این ویژگی هستند.</p> + ```js var myNumber = 12; var myNumberObj = new Number(12); @@ -492,6 +571,7 @@ myNumber == myNumberObj; // = true <p dir='rtl'>به جز این که این سازنده ها دقیقا مانند سازنده های دیگر نیستند.</p> + ```js typeof myNumber; // = 'number' typeof myNumberObj; // = 'object' @@ -508,6 +588,7 @@ if (0){ <p dir='rtl'>گاها به از این خاصیت با عنوان پلی فیل و برای اضافه کردن ویژگی های جدید به مجموعه ای از اشیاء فعلی زبان استفاده میشود </p> <p dir='rtl'>که کاربرد فراوانی در پشتیبانی از نسخه های قدیمیتر مرورگر ها دارد.</p> + ```js String.prototype.firstCharacter = function(){ return this.charAt(0); @@ -518,6 +599,7 @@ String.prototype.firstCharacter = function(){ <p dir='rtl'>برای مثال، پیشتر اشاره کردیم که Object.create در نسخه های جدید پشتیبانی نشده است</p> <p dir='rtl'>ولی میتوان آن را به صورت پلی فیل استفاده کرد.</p> + ```js if (Object.create === undefined){ // don't overwrite it if it exists Object.create = function(proto){ diff --git a/fa-ir/vim-fa.html.markdown b/fa-ir/vim-fa.html.markdown new file mode 100644 index 00000000..f1864619 --- /dev/null +++ b/fa-ir/vim-fa.html.markdown @@ -0,0 +1,469 @@ +--- +category: tool +tool: vim +contributors: + - ["RadhikaG", "https://github.com/RadhikaG"] +translators: + - ["Moein Halvaei", "https://github.com/mo1ein"] +lang: fa-ir +filename: LearnVim-fa.txt +--- + +<p dir="rtl"> +[Vim](http://www.vim.org) (Vi رشدیافته) یک کلون از ادیتور مشهور vi است برای unix. ادیتورمتنیست که برای سرعت و افزایش بهرهوری طراحی شده و در همه جا به ویژه در سیستم های unix-based دیده میشود. شورتکات کلید های بیشماری برای سرعت جهتیابی به نقاط ویژهي فایل ها و تغییر سریع، دارد. +<br /> +`vimtutor` یک برنامهي عالیست که به شما چگونگی استفاده از `vim` را آموزش میدهد. +این به همراه پکیج های vim هنگام نصب کردن، نصب میشود. شما باید بتوانید با ران کردن `vimtutor` در کامندلاین از آموزش ها استفاده کنید. این همهی ویژگی های عمدهی `vim` را به شما راهنمایی میکند. +</p> +<h3> + <p dir="rtl"> +مکانیابی اولیه vim + </p> +</h3> + + +<p dir="rtl"> +باز کردن `<filename>` در ویم +</p> + +``` +vim <filename> # Open <filename> in vim +``` +<p dir="rtl"> +باز کردن help docs های `<topic>` اگر وجود داشته باشد +</p> + +``` +:help <topic> # Open up built-in help docs about <topic> if any exists +``` +``` +:q # خروج از ویم + +:w # ذخیره کردن فایل فعلی + +:wq # ذخیره کردن و خارج شدن از ویم + +ZZ # ذخیره کردن و خارج شدن از ویم + +:q! # خارج شدن بدون ذخیره کردن فایل + +! *forces* :q to execute, hence quiting vim without saving + +ZQ # خارج شدن بدون ذخیره کردن فایل +``` + +<p dir="rtl">ذخیره کردن و خارج شدن از vim ورژن خلاصه شدهی wq:</p> + +``` +:x # Save file and quit vim, shorter version of :wq +``` + +<p dir="rtl">برگشت به عقب</p> + +``` + u # Undo +``` + +<p dir="rtl">رفتن به جلو</p> + +``` +CTRL+R # Redo +``` + +<p dir="rtl">راه رفتن در صفحه</p> + +``` +h # رفتن یک کاراکتر به چپ + +j # رفتن یک کاراکتر به پایین + +k # رفتن یک کاراکتر به بالا + +l # رفتن یک کاراکتر به راست + +Ctrl+B # جابهجا شدن به عقب به اندازه یک صفحه + +Ctrl+F # جابهجا شدن به جلو به اندازه یک صفحه + +Ctrl+D # جابهجا شدن به جلو به اندازه نصف صفحه + +Ctrl+U # جابهجا شدن به عقب به اندازه نصف صفحه +``` + +<p dir="rtl"><strong>جابهجا شدن در خط</strong></p> + +``` +0 # رفتن به اول خط +$ # رفتن به آخر خط +^ # رفتن به اولین کاراکتر غیرخالی در خط +``` + +<p dir="rtl"><strong>جست و جو در متن</strong></p> + +``` +/word # هایلایت کردن همهی کلمه های بعد کِرسر + +?word # هایلایت کردن همهی کلمه های قبل کِرسر + +n # جابهجایی کِرسر به کلمه های بعدی پیدا شده + +N # جابهجایی کِرسر به کلمه های قبلی پیدا شده +``` + +<p dir="rtl">عوض کردن 'foo' به 'bar' در هر خط از فایل</p> + +``` +:%s/foo/bar/g # Change 'foo' to 'bar' on every line in the file +``` + +<p dir="rtl">عوض کردن 'foo' به 'bar' در خط فعلی</p> + +``` +:s/foo/bar/g # Change 'foo' to 'bar' on the current line +``` + +<p dir="rtl">جایگزینی کاراکتر های خط جدید با کاراکتر های خط جدید</p> + +``` +:%s/\n/\r/g # Replace new line characters with new line characters +``` + +<p dir="rtl"><strong>پرش به کاراکتر ها</strong></p> +<p dir="rtl">پرش به جلو و قرار گرفتن روی کاراکتر مورد نظر</p> + +``` +f<character> # Jump forward and land on <character> +``` + +<p dir="rtl">پرش به جلو و قرار گرفتن قبل کاراکتر مورد نظر</p> + +``` +t<character> # Jump forward and land right before <character> +``` + +<p dir="rtl"><strong>برای مثال:</strong></p> + +<p dir="rtl">پرش به جلو و قرار گرفتن روی ></p> + +``` +f< # Jump forward and land on < +``` + +<p dir="rtl">پرش به جلو و قرار گرفتن قبل از ></p> + +``` +t< # Jump forward and land right before < +``` +<p dir="rtl"><strong>جابهجا شدن با کلمه ها</strong></p> + +``` +w # رفتن به جلو به اندازهی یک کلمه +b # رفتن به عقب به اندازهی یک کلم +e # رفتن به آخر کلمهی فعلی +``` +<p dir="rtl"><strong>سایر کاراکتر ها برای جابهجایی</strong></p> +<p dir="rtl">رفتن به اول فایل</p> + +``` +gg # Go to the top of the file +``` +<p dir="rtl">رفتن به آخر فایل</p> + +``` +G # Go to the bottom of the file +``` +<p dir="rtl">رفتن به شمارهی خط مورد نظر (NUM شماره است)</p> + +``` +:NUM # Go to line number NUM (NUM is any number) +``` +<p dir="rtl">رفتن به اول صفحه</p> + +``` +H # Move to the top of the screen +``` +<p dir="rtl">رفتن به وسط صفحه</p> + +``` +M # Move to the middle of the screen +``` +<p dir="rtl">رفتن به آخر صفحه</p> + +``` +L # Move to the bottom of the screen +``` + +<h3> +<p dir="rtl"><strong> +داک های help +</strong></p> +</h3> + +<p dir="rtl"> +Vim دارای یک help doc داخلی است که میتوان با help: <topic> به آن دسترسی داشت. برای مثال help navigation: داک مربوط به مکانیابی در فضای کار را به شما نشان میدهد! <br /><br /> +help: همچنین میتواند بدون option مورد استفاده قرار گیرد. +این یه صورت یک help پیشفرض بالا میآید که شروع vim را قابل دسترس تر میکند! +</p> + +<h3> + <p dir="rtl"><strong>Modes:</strong></p> +</h3> + +<div dir="rtl"> +Vim بر پایهی مفهومیست به نام <strong>modes</strong> +<br /><br /> +<ul> + <li> + Command Mode - ویم در این حالت بالا میآید، برای مکانیابی و نوشتن دستورات استفاده میشود +</li> +<li> + Insert Mode - برای ایجاد تغییر در فایل شما استفاده میشود +</li> +<li> + Visual Mode - برای هایلایت کردن متن و انجام عملی روی آن ها استفاده میشود +</li> +<li> + Ex Mode - برای وارد کردن دستورات توسط ":" در قسمت پایین استفاده میشود +</li> +</ul> +<br /> +</div> + +<p dir="rtl">رفتن به حالت insert, پیش از جایگاه cursor</p> + +``` +i # Puts vim into insert mode, before the cursor position +``` +<p dir="rtl">رفتن به حالت insert, پس از جایگاه cursor</p> + +``` +a # Puts vim into insert mode, after the cursor position +``` + +<p dir="rtl">رفتن به حالت visual</p> + +``` +v # Puts vim into visual mode +``` +<p dir="rtl">رفتن به حالت ex</p> + +``` +: # Puts vim into ex mode +``` +<p dir="rtl">خروج از همهی حالت ها و رفتن به حالت command</p> + +``` +<esc> # 'Escapes' from whichever mode you're in, into Command mode +``` +<p dir="rtl">کپی و پیست در متن</p> + +``` +y # کپی کردن متن انتخاب شده + +yy # کپی کردن خط فعلی + +d # حذف کردن متن انتخاب شده + +dd # حذف کردن خط فعلی + +p # پیست کردن متن کپی شده پس از جایگاه فعلی کِرسر + +P # پیست کردن متن کپی شده پیش از جایگاه فعلی کِرسر + +x # حذف کردن یک کاراکتر از جایگاه کِرسر +``` + +<h3> +<p dir="rtl"><strong>گرامر (Grammer) </strong></p> +</h3> + +<div dir="rtl"> +Vim را می توان به عنوان مجموعه ای از دستورات در قالب (Verb - Modifier - Noun) تصور کرد ، جایی که: +<br /><br /> +<ul> +<li> + Verb - عمل شما +</li> +<li> + Modifier - چگونگی انجام عمل شما +</li> +<li> + Noun - شیئی که عمل شما بر اساس آن عمل می کند +</li> +</ul> +اندکی از مثال های مهم Verbs ,Modifiers, Nouns: +<br /><br /> +</div> + +<p dir="rtl"><strong>فعل ها (Verbs)</strong></p> + +``` +d # حذف +c # تغییر +y # کپی +v # انتخاب +``` +<p dir="rtl"><strong>تغییردهنده ها (Modifiers)</strong></p> + +``` +i # داخل +a # اطراف +NUM # شماره (NUM هر شمارهای است) +f # جست و جو کردن چیزی و متوقف شدن روی آن +t # جست و جو کردن چیزی و متوقف شدن قبل از آن +/ # جست و جو کردن رشتهای پس از کِرسر +? # جست و جو کردن رشتهای پیش از کِرسر +``` +<p dir="rtl"><strong>اسم ها (Nouns)</strong></p> + +``` +w # کلمه +s # جمله +p # پاراگراف +b # بلوک +``` +<p dir="rtl"><strong>جمله ها و کامند های نمونه</strong></p> + +``` +d2w # حذف دو کلمه +cis # تغییر داخل جمله +yip # کپی داخل پاراگراف (از پاراگرافی که داخل آن هستید کپی کنید) +ct< # متن را از جایی که قرار دارید به براکت باز بعدی تغییر دهید +d$ # حذف تا پایان +``` + +<h3> + <p dir="rtl">بعضی از شورتکات ها و ترفند ها</p> +</h3> + +``` +<!--TODO: Add more!--> + +> # ایجاد دندانه به اندازه یک بلوک + +< # حذف دندانه به اندازه یک بلوک + +:earlier 15m # برگرداندن همه چیز به ۱۵ دقیقه قبل + +:later 15m # برعکس کامند قبلی + +ddp # تغییر مکان خطوط متوالی(dd, then p) + +. # تکرار دستور قبلی + +:w !sudo tee % # ذخیره کردن فایل فعلی به عنوان روت + +:set syntax=c # تنظیم سینتکس هایلایتینگ روی 'c' + +:sort # مرتب کردن همهی خطوط + +:sort! # مرتب کردن همهی خطوط به صورت برعکس + +:sort u # مرتب کردن همهی خطوط و پاک کردن تکراری ها + +~ # تبدیل متن انتخاب شده به حروف (اگر بزرگ است، کوچک و اگر کوچک است، بزرگ) + +u # تبدیل متن انتخاب شده به حروف کوچک + +U # تبدیل متن انتخاب شده به حروف بزرگ + +J # اتصال خط فعلی به خط بعدی +``` +<h4> +<p dir="rtl"> +فولد (Fold) +</p> +</h4> + +``` +zf # ایجاد فولد برای متن انتخاب شده +zo # باز کردن فولد فعلی +zc # بستن فولد فعلی +zR # باز کردن همهی فولد ها +zM # بستن همهی فولد ها +``` + +<h3> +<p dir="rtl"> +ماکرو ها (Macros) +</p> +</h3> + +<p dir="rtl"> +ماکرو ها اساسا عمل های قابل ضبط هستند. زمانی که شما شروع میکنید به ضبط ماکرو، هر عمل و دستوری را که استفاده میکنید، تا زمانی که ضبط را متوقف کنید، ضبط میشود. با فراخوانی ماکرو، دقیقاً همان توالی اعمال و دستورات، دوباره روی متن انتخاب شده اعمال میشود. +</p> + +``` +qa # Start recording a macro named 'a' +q # Stop recording +@a # Play back the macro +``` +<h3> +<p dir="rtl"> +کانفیگ vimrc./~ +<p> +</h3> + +<p dir="rtl"> +vimrc. فایلیست که استفاده میشود برای کانفیگ vim هنگام بالا آمدن +<br /> +اینجا یک نمونه فایل vimrc. آورده شده: +</p> + +``` +" Example ~/.vimrc +" 2015.10 + +" Required for vim to be iMproved +set nocompatible + +" Determines filetype from name to allow intelligent auto-indenting, etc. +filetype indent plugin on + +" Enable syntax highlighting +syntax on + +" Better command-line completion +set wildmenu + +" Use case insensitive search except when using capital letters +set ignorecase +set smartcase + +" When opening a new line and no file-specific indenting is enabled, +" keep same indent as the line you're currently on +set autoindent + +" Display line numbers on the left +set number + +" Indentation options, change according to personal preference + +" Number of visual spaces per TAB +set tabstop=4 + +" Number of spaces in TAB when editing +set softtabstop=4 + +" Number of spaces indented when reindent operations (>> and <<) are used +set shiftwidth=4 +" Convert TABs to spaces +set expandtab + +" Enable intelligent tabbing and spacing for indentation and alignment +set smarttab +``` + +<h3> +<p dir="rtl">رفرنس ها</p> +</h3> + +[Vim | Home](http://www.vim.org/index.php) + +`$ vimtutor` + +[A vim Tutorial and Primer](https://danielmiessler.com/study/vim/) + +[What are the dark corners of Vim your mom never told you about? (St + +[Arch Linux Wiki](https://wiki.archlinux.org/index.php/Vim) |