انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => انجمن عمومی => نویسنده: sajadspeed در 16 شهریور 1402، 10:12 ب‌ظ

عنوان: غیرفعال کردن حذف خودکار تب در vim
ارسال شده توسط: 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 ویم رو غیرفعال بکنم صرفا بگم کاری به تب‌های اضافه من نداشته باشه و پاکشون نکنه؟
عنوان: پاسخ : غیرفعال کردن حذف خودکار تب در vim
ارسال شده توسط: دانیال بهزادی در 16 شهریور 1402، 11:13 ب‌ظ
احتمالاً نباید ‪y}}p‬ رو بزنید؟
عنوان: پاسخ : غیرفعال کردن حذف خودکار تب در vim
ارسال شده توسط: sajadspeed در 17 شهریور 1402، 01:32 ق‌ظ
نه اصلا کلا جواب نمی‌ده، می‌پره آخرین خط اون تابع که مثلا دارم توش کار می‌کنم. توی این فایل خالی تست هم می‌پره به آخر فایل. یعنی { و } اصلا آکولاد و کروشه‌ها رو به عنوان بلاک نمی‌شناسن.
البته این آبجکتی که مثال زدم فقط مثال بود. ممکن متن دیگری باشه و بخوام در خط بعد paste کنم. اگر این جواب هم می‌داد در همه‌ی موارد کار آدم رو راه نمی‌انداخت.
عنوان: پاسخ : غیرفعال کردن حذف خودکار تب در vim
ارسال شده توسط: دانیال بهزادی در 17 شهریور 1402، 02:48 ق‌ظ
به نظر می‌رسه مشکل شناخت syntax داری. حالا جدای اون، من نفهمیدم چرا o رو می‌زنی؟ خب خود p رو بزن.
عنوان: پاسخ : غیرفعال کردن حذف خودکار تب در vim
ارسال شده توسط: sajadspeed در 17 شهریور 1402، 11:38 ق‌ظ
فکر نمی‌کنم ربطی به تشخیص سینتکس داشته باشه چون توی 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 شده در یک خط جدید»
عنوان: پاسخ : غیرفعال کردن حذف خودکار تب در vim
ارسال شده توسط: دانیال بهزادی در 18 شهریور 1402، 03:32 ق‌ظ
می‌تونی ‪pi<CR>‬ رو بزنی.
عنوان: پاسخ : غیرفعال کردن حذف خودکار تب در vim
ارسال شده توسط: sajadspeed در 18 شهریور 1402، 06:57 ب‌ظ
خوب بله اینکه می‌شه، می‌دونید در واقع مشکل بنده کجا ایجاد می‌شه، اینجا که من برای کلید اینتر در حالت نرمال این مپ رو نوشتم:
map <Enter> o<ESC>
بعد الان برای اینکه در خط بعدی paste کنم فقط کافیه یه اینتر و p بزنم. تمومه. ولی مشکل دقیقا همین حذف تب‌هایی است که توی حالت Insert وجود داشته. یعنی وقتی اینتر رو می‌زنم cursor(فکر کنم تو فارسی می‌گیم اشاره‌گر) به این شکل درمیاد:
(https://www.uplooder.net/img/image/70/fb6a2f283e4aa67944006244259aa5de/4.jpg)
یعنی اگه این مشکل حذف الکی فاصله‌ها رو درست کنم مشکل کاملا مرتفع می‌شه.

اینکه مستقیما این مورد رو مطرح نکردم برای این بود که شاید بنده به قول معروف ز کل داشتم اشتباه می‌زدم و اگه به این شکل بود متوجه قضیه بشم. شما رو هم اذیت نکنم.