انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: sajadspeed در 16 شهریور 1402، 10:12 بظ
-
سلام دوستان ببینید مثلا من میخوام این آبجکت رو کپی کنم، پس اون رو انتخاب میکنم:
(https://www.uplooder.net/img/image/32/5b40eb0d6f91df588c68c489176845ca/1.jpg)
حالا میام آخر آبجکت و چون میخوام توی خط بعدی کپیش بکنم و کلیدی هم پیدا نکردم که بتونه توی حالت NORMAL خط خالی باز بکنه یا متنی که انتخاب و yank شده رو توی خط بعدی paste بکنه پس ناچارم که از کلید o برای ایجاد خط خالی و استفاده بکنم.
میرم آخر آبجکت:
(https://www.uplooder.net/img/image/77/369ebabe19956330b4e52655b1ce437e/2.jpg)
از کلید o استفاده میکنم و بعد از ایجاد یک خط خالی به حالت INSERT میرم:
(https://www.uplooder.net/img/image/17/9f891dc075a14293b9b0c2dcfc5434c2/3.jpg)
الان مشکل اینجاست که وقتی میخوام به حالت NORMAL برگردم و کلید p را بزنم، فکر کنم auto-indent خود vim اون تبهای قبل از متن رو پاک میکنه:
(https://www.uplooder.net/img/image/70/fb6a2f283e4aa67944006244259aa5de/4.jpg)
الان اینجا دو تا سوال مطرح میشه:
۱. آیا در شرایطی که من میخوام یک تکه متن خاصی رو کپی و در خط بعدی جای دیگر paste کنم راهکاری بهتر از این هست؟(در شرایطی نمیشه از yy و p استفاده کرد)
۲. اگر جواب سوال اول خیر است پس چطور میتونم بدون اینکه auto-indent ویم رو غیرفعال بکنم صرفا بگم کاری به تبهای اضافه من نداشته باشه و پاکشون نکنه؟
-
احتمالاً نباید y}}p رو بزنید؟
-
نه اصلا کلا جواب نمیده، میپره آخرین خط اون تابع که مثلا دارم توش کار میکنم. توی این فایل خالی تست هم میپره به آخر فایل. یعنی { و } اصلا آکولاد و کروشهها رو به عنوان بلاک نمیشناسن.
البته این آبجکتی که مثال زدم فقط مثال بود. ممکن متن دیگری باشه و بخوام در خط بعد paste کنم. اگر این جواب هم میداد در همهی موارد کار آدم رو راه نمیانداخت.
-
به نظر میرسه مشکل شناخت syntax داری. حالا جدای اون، من نفهمیدم چرا o رو میزنی؟ خب خود p رو بزن.
-
فکر نمیکنم ربطی به تشخیص سینتکس داشته باشه چون توی neovim که LSP خود زبان هم نصب هست امتحان کردم. توی پایتون و JS و متن ساده هم تست کردم بازم همین مشکل بود.
این که از کلید o استفاده میکنم به این خاطر است. مثلا میام آخر آبجکت:
(https://www.uplooder.net/img/image/77/369ebabe19956330b4e52655b1ce437e/2.jpg)
اگر فقط p را بزنم اینجوری میشه:
(https://www.uplooder.net/img/image/71/63b34707a2d470219d5f6f97bbe373cd/5.jpg)
در صورتی که من میخوام به این شکل دربیاد:
(https://www.uplooder.net/img/image/48/21ad8c970600857cefcc4239c845c757/6.jpg)
در یک جمله: «Paste کردن متن yank شده در یک خط جدید»
-
میتونی pi<CR> رو بزنی.
-
خوب بله اینکه میشه، میدونید در واقع مشکل بنده کجا ایجاد میشه، اینجا که من برای کلید اینتر در حالت نرمال این مپ رو نوشتم:
map <Enter> o<ESC>
بعد الان برای اینکه در خط بعدی paste کنم فقط کافیه یه اینتر و p بزنم. تمومه. ولی مشکل دقیقا همین حذف تبهایی است که توی حالت Insert وجود داشته. یعنی وقتی اینتر رو میزنم cursor(فکر کنم تو فارسی میگیم اشارهگر) به این شکل درمیاد:
(https://www.uplooder.net/img/image/70/fb6a2f283e4aa67944006244259aa5de/4.jpg)
یعنی اگه این مشکل حذف الکی فاصلهها رو درست کنم مشکل کاملا مرتفع میشه.
اینکه مستقیما این مورد رو مطرح نکردم برای این بود که شاید بنده به قول معروف ز کل داشتم اشتباه میزدم و اگه به این شکل بود متوجه قضیه بشم. شما رو هم اذیت نکنم.