ভিমে বর্তমান ফাইলটির নামকরণ করা হচ্ছে


392

আমি কীভাবে আমার বর্তমান ফাইলটির নাম ভিমে রাখতে পারি?

উদাহরণ স্বরূপ:

  • আমি সম্পাদনা করছি person.html_erb_spec.rb
  • আমি এটির নামকরণ চাই person.haml_spec.rb
  • আমি সম্পাদনা চালিয়ে যেতে চাই person.haml_spec.rb

আমি কীভাবে মার্জিতভাবে এটি করতে যাব?

উত্তর:


87

একটি ছোট্ট প্লাগইন রয়েছে যা আসুন আপনি এটি করুন।


9
রেনাম.ভিমের এই আপডেট হওয়া সংস্করণটি সিডাব্লুডি সঠিকভাবে পরিচালনা করে - সর্বদা মূলের ডিরেক্টরিতে ফাইল সংরক্ষণ করে।
সেরিল

48
প্রশ্ন: "কোন ধরণের আর্থসামান্য চিকিত্সা দির নামে স্থান রাখে?" - এ: যে লোকটি প্রকল্পের সূচনা করেছিল অনেক আগে যিনি এখন আপনার মনিব ... তাঁর দক্ষতার সত্যিকারের ক্ষেত্রের কোডিংয়ের বাইরে উন্নীত হয়েছে: নিম্নলিখিত বিকাশ পদ্ধতিটি ফ্যাড এবং দলে জোর করে।
স্টেলেডোগ

3
@ অ্যারোনমাহান আমি পুনরায় নামকরণ 2.vim স্থির করেছি (স্মার্ট কিন্তু আরও জটিল দেলভারওয়ার্ল্ড সংস্করণ উপেক্ষা করে) পাথগুলিতে ফাঁকা স্থান দেওয়ার জন্য এবং এটি এখানে কাঁটাচামচ করেছেন: github.com/aehlke/vim-rename3 এমনকি বুদ্ধিমান কার্যকারিতা জন্য টান অনুরোধ জমা দিতে নির্দ্বিধায়!
এহেলকে

4
মাইক্রোসফ্ট, স্পষ্টতই Program Files (x86)। এই ডিরেক্টরিটি যে কোনও সময় এর সাথে কাজ করা দরকার যখনই উদ্ধৃতিতে মোড়ানো প্রয়োজন। যা আহ, অনেক।
জ্যাকহাসা কেইবোর্ড

5
@ জ্যাকহাসা কীবোর্ড: +১০। "প্রোগ্রাম ফাইল (x86)" অপারেটিং সিস্টেমের সর্বকালের "সবচেয়ে খারাপ" ডিরেক্টরী নাম জিতেছে যা সিমলিংকের অভাবে রয়েছে "" :)
স্টেলেডোগ

451

কমান্ডটি বলা হয় :saveas, তবে দুর্ভাগ্যক্রমে এটি আপনার পুরানো ফাইলটি মুছে ফেলবে না, আপনাকে এটি ম্যানুয়ালি করতে হবে। দেখতে :help saveasআরও তথ্যের জন্য।

সম্পাদনা করুন:

বেশিরভাগ ভিআইএম ইনস্টলেশনগুলিতে একটি সমন্বিত ফাইল এক্সপ্লোরার থাকে, যা আপনি এই জাতীয় ক্রিয়াকলাপের জন্য ব্যবহার করতে পারেন। :Exploreকমান্ড মোডে চেষ্টা করুন (আমি আসলে এটি ফাংশন কীতে মানচিত্র করব, এটি খুব সহজ) very উদাহরণস্বরূপ আপনি ফাইলগুলির সাথে নাম পরিবর্তন করতে Rবা এগুলি মুছতে পারেন D। তবে <F1>এক্সপ্লোরার টিপুন আপনাকে আরও ভাল ওভারভিউ দেবে।


6
আমি মনে করি না যে এটি অন্যান্য সম্পাদকদের তুলনায় এটি অস্বস্তিকর যেখানে আপনি সাধারণত কোনও ফাইল স্থানান্তর করতে পারবেন না। পরিবর্তে আপনাকে নিজের পছন্দের ফাইল ম্যানেজারে যেতে হবে, ফাইলটির নাম পরিবর্তন করতে হবে এবং আপনার সম্পাদকের কাছে ফিরে যেতে হবে। আপনি যদি ভাগ্যবান হন তবে আপনাকে এডিটরটি ফাইল নাম পরিবর্তন বিজ্ঞপ্তি না পেয়ে ছেড়ে দিতে হবে এবং পুনরায় চালু করতে হবে।
রাফায়েল বুগাজিউস্কি

130
আপনিও পছন্দ করতে পারেন: লিঙ্গ ( বিভক্তির জন্য শর্টহ্যান্ড :-))
পিটার জাঙ্কুলিয়াক

6
এছাড়াও, e বর্তমান ফলকে এক্সপ্লোরার খুলবে। এর চেয়ে কম উত্তেজনাপূর্ণ: লিঙ্গ তবে আরও দক্ষ;)।
জোশ

56
নিখুঁত জন্য, উল্লম্ব: লিঙ্গ: ভেক্স
hobbes3

5
@ জোশ: ই আমার জন্য কাজ করে: এবং এটি আমার পক্ষে কাজ করে না। আমি ব্যবহার করি: ই একই উইন্ডোতে অন্য ফাইল সম্পাদনা করতে।
ওমর

159

আপনি Git ব্যবহার এবং ইতিমধ্যে tpope এর প্লাগ-ইন থাকে fugitive.vim তারপর কেবল:

:Gmove newname

এটা হবে:

  1. আপনার ফাইলটিকে ডিস্কে নামকরণ করুন।
  2. গিট রেপোতে ফাইলটির নতুন নাম দিন।
  3. বর্তমান বাফারে ফাইলটি পুনরায় লোড করুন।
  4. পূর্ববর্তী ইতিহাস সংরক্ষণ করুন।

যদি আপনার ফাইলটি এখনও গিট রেপোতে যুক্ত না হয় তবে প্রথমে এটি যুক্ত করুন:

:Gwrite

4
আমার চোখ থেকে অশ্রু বের হচ্ছে। সঠিক উত্তর!
ফরিদ নুরি নেশাত

3
এই উত্তরের সম্মানে আমি দুটি ছাগল বলি দিয়েছি! তবে আমার এটির সাথে একটি ছোট সমস্যা আছে, কারণ আপনাকে কার্যকারী গাছের গোড়া থেকে পথটি টাইপ করতে হবে; এবং এটি প্রায়শই কোনও প্রকল্পে বরং দীর্ঘায়িত হয়। এটার কি কোনো সমাধান আছে?
xor

1
দারুণ! পলাতকটি করতে পারে এমন নতুন জিনিস আমি সন্ধান করি।
ধনী চুর্চার

8
@xxor: মেসকো এর উত্তরে উল্লিখিত হিসাবে আপনি বর্তমান ফাইল নাম সন্নিবেশ করতে Ctrl + R% ব্যবহার করতে পারেন, যা পরে সম্পাদনা করা যেতে পারে।
ডেলটাব

4
কয়েকটি মন্তব্য এখানে একত্রিত করতে: :Gmoveনতুন ফাইলের নামের জন্য আপেক্ষিক পথ প্রয়োজন। এটি করার একটি দুর্দান্ত উপায় হ'ল টাইপ করা :Gmove <ctrl-r>%যা বর্তমান পথ / ফাইলের নাম সংযুক্ত করে।
shmup

80

আমি NERDTree প্লাগইন দিয়ে এটি করছি:

:NERDTreeFind

তারপরে টিপুন m

নাম পরিবর্তন করতে আপনি (m)ove the current nodeফাইলের নাম চয়ন এবং পরিবর্তন করতে পারেন । এছাড়াও মুছুন, অনুলিপি, সরানো, ইত্যাদি মত বিকল্প আছে ...


1
আপনি কি জানেন,
জিনিসটির

2
এই এক সত্যিই ভাল কাজ করে। অবশ্যই এটি সুপারিশ।
ম্যাট সেটার 9

আইডিয়া পছন্দ। এটি এখন আমার প্রধান পরিবর্তন ফাইলের নাম পদ্ধতি হবে।
এসএলএন

72
  • সম্পাদনা করার সময় ফাইলটি লিখুন - :w newname- একটি অনুলিপি তৈরি করতে।
  • নতুন অনুলিপি সম্পাদনা শুরু করুন - :e#
  • (Ptionচ্ছিকভাবে) পুরানো অনুলিপি মুছে ফেলুন - :!rm oldname

উইন্ডোজে 3rdচ্ছিক তৃতীয় পদক্ষেপটি কিছুটা পরিবর্তন করে:

  • (Ptionচ্ছিকভাবে) পুরানো উইন্ডোজ অনুলিপি মুছে ফেলুন - :!del oldname

3
আমি এই পন্থাটি সর্বদা ব্যবহার করি, তবে, খারাপ দিকটি হ'ল আপনি আপনার পূর্বাবস্থায় গাছটি হারাচ্ছেন - সুতরাং আপনি কোনও কিছু পূর্বে করতে পারবেন না: ই
রায়পুন

7
খুশী হলাম। দৃশ্যত Ctrl-6 একই কাজ করে: ই #
গ্লেন জ্যাকম্যান

আপনি ডিরেক্টরিটি খুলতে পারেন, ফাইলটিতে কার্সারটি সরান এবং একটি ফাইল মুছতে "ডি" টিপুন।
পেডার

38
আরও সোজা উপায় ইমো 1) বর্তমান বাফারটির নতুন নামকরণ :f newname2) এটি সংরক্ষণ করুন :w3) (allyচ্ছিকভাবে) !rm oldname। সুবিধাটি হ'ল আপনার পূর্ববর্তী ইতিহাস সংরক্ষণ করা হয়েছে pre
কিনান

3
:saveasএই বিষয়ে আরও ভাল, @ রায়প্যাম্পিন - এবং @ কেনন যা লিখেছেন তা করে।
লিরিকসন

36

ফাইলটি ইতিমধ্যে সংরক্ষণ করা থাকলে:

:!mv {file location} {new file location}
:e {new file location}

উদাহরণ:

:!mv src/test/scala/myFile.scala src/test/scala/myNewFile.scala
:e src/test/scala/myNewFile.scala

অনুমতি প্রয়োজনীয়তা:

:!sudo mv src/test/scala/myFile.scala src/test/scala/myNewFile.scala

সংরক্ষণ করুন:

:!mv {file location} {save_as file location}
:w
:e {save_as file location} 


উইন্ডোজ যাচাই করা নেই

:!move {file location} {new file location}
:e {new file location}

5
আপনি কেন এই উত্তরটি ভোট দিয়েছেন তা আপনি অন্তত ব্যাখ্যা করতে পারেন।
বেঞ্জামিন

31

আমি :Renameএর জন্য টপপের নপুংসক থেকে সুপারিশ করব ।

এটিতে অন্যান্য হ্যান্ডি কমান্ডগুলির একটি গুচ্ছও অন্তর্ভুক্ত রয়েছে।

নাম পরিবর্তন কমান্ড বর্তমানে এটি নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়েছে (কোনও আপডেটের জন্য রেপো পরীক্ষা করুন!):

command! -bar -nargs=1 -bang -complete=file Rename :
  \ let s:file = expand('%:p') |
  \ setlocal modified |
  \ keepalt saveas<bang> <args> |
  \ if s:file !=# expand('%:p') |
  \   call delete(s:file) |
  \ endif |
  \ unlet s:file

31

আপনি নেটও ব্যবহার করে এটি করতে পারেন

এক্সপ্লোর কমান্ড ওপেন ফাইলের ডিরেক্টরিতে নেট-র খোলে

:E

আপনি যে ফাইলটি নাম পরিবর্তন করতে চান তাতে কার্সারটি সরান:

R

নতুন নামে টাইপ করুন, এন্টার টিপুন, y টিপুন।


মহান! নেট নেট সম্পর্কেও আমি জানতাম না।
জাভাদবা

31

সংক্ষিপ্ত, সুরক্ষিত, প্লাগইন ছাড়াই:

:sav new_name
:!rm <C-R>#  // or !del <C-R># for windows

control+ R, #টিপানোর আগে তাত্ক্ষণিকভাবে একটি বিকল্প-ফাইল (বর্তমান উইন্ডোতে পূর্বে সম্পাদিত পথ) এ প্রসারিত হবে Enter। এটি আমাদের ঠিক কী মুছতে চলেছে তা পর্যালোচনা করতে সহায়তা করে। এই |জাতীয় ক্ষেত্রে পাইপ ব্যবহার করা নিরাপদ নয় , কারণ যদি savকোনও কারণে ব্যর্থ হয় তবে #এখনও অন্য কোনও জায়গায় নির্দেশ দেওয়া হবে (বা কিছুই নয়)। এর অর্থ !rm #বা delete(expand(#))সম্পূর্ণ আলাদা ফাইল মুছতে পারে! সুতরাং এটি হাত দিয়ে সাবধানে করুন বা ভাল স্ক্রিপ্ট ব্যবহার করুন (তাদের এখানে অনেক উত্তরে উল্লেখ করা হয়েছে)।

শিক্ষাবিষয়ক

... বা নিজে একটি ফাংশন / কমান্ড / স্ক্রিপ্ট তৈরি করার চেষ্টা করুন। সহজ থেকে শুরু করুন:

command! -nargs=1 Rename saveas <args> | call delete(expand('#')) | bd #

ভিএমআরসি পুনরায় লোডের পরে, কেবল টাইপ করুন :Rename new_filename। এই আদেশটি নিয়ে সমস্যা কী?

সুরক্ষা পরীক্ষা 1::Rename তর্ক ছাড়াই কী করে ?

হ্যাঁ, এটি '#' তে লুকানো ফাইলটি মুছে দেয়!

সমাধান: আপনি যেমন ব্যবহার করতে পারেন। শর্ত বা tryমত বিবৃতি:

command! -nargs=1 Rename try | saveas <args> | call delete(expand('#')) | bd # | endtry

সুরক্ষা পরীক্ষা 1: :Rename (তর্ক ছাড়াই) ত্রুটি ছুঁড়ে ফেলবে:

E471: তর্ক প্রয়োজন

সুরক্ষা পরীক্ষা 2: নামটি যদি আগের মতো হয় তবে কী হবে?

সুরক্ষা পরীক্ষা 3: ফাইলটি যদি আপনার আসল থেকে আলাদা অবস্থানে থাকে?

এটি নিজেই ঠিক করুন। পাঠযোগ্যতার জন্য আপনি এটি এই পদ্ধতিতে লিখতে পারেন:

function! s:localscript_name(name):
  try
    execute 'saveas ' . a:name
    ...
  endtry
endfunction
command! -nargs=1 Rename call s:localscript_name(<f-args>)

মন্তব্য

  • !rm #এর চেয়ে ভাল !rm old_name-> আপনার পুরানো নামটি মনে রাখার দরকার নেই

  • !rm <C-R>#এটি !rm #কখন হাত দ্বারা করা তার চেয়ে ভাল -> আপনি আসলে কী সরিয়ে ফেলবেন তা দেখতে পাবেন (সুরক্ষার কারণ)

  • !rmসাধারণত খুব সুরক্ষিত হয় না ... mvএকটি আবর্জনার অবস্থানের থেকে ভাল

  • call delete(expand('#'))শেল কমান্ড (ওএস অজ্ঞেয়বাদী) কিন্তু আর বেশী ভালো টাইপ করতে এবং ব্যবহার করা অসম্ভব control+ +R

  • try | code1 | code2 | tryend -> কোড 1 এর সময় ত্রুটি দেখা দিলে কোড 2 চালাবেন না

  • :sav(বা :saveas) :f new_name | w- ফাইল_ফ দেখুন - এর সমতুল্য এবং পূর্ববর্তী ইতিহাস সংরক্ষণ করে o

  • expand('%:p')আপনার অবস্থানের পুরো পথ দেয় ( %) বা বিকল্প ফাইলের অবস্থান ( #)



10

গ্যারি বার্নহার্টের .vimrc এ একটি ফাংশন রয়েছে যা এটি পরিচালনা করে।

function! RenameFile()
let old_name = expand('%')
let new_name = input('New file name: ', expand('%'), 'file')
if new_name != '' && new_name != old_name
    exec ':saveas ' . new_name
    exec ':silent !rm ' . old_name
    redraw!
endif
endfunction
map <leader>n :call RenameFile()<cr>

5
আপনার পছন্দ মত সব আমাকে কমিয়ে দিন। কমপক্ষে আমি ফাইলগুলির নাম পরিবর্তন করতে পারি।
জেজেন টমাস

এটি দুর্দান্ত উত্তর, কোনও অতিরিক্ত প্লাগইন প্রয়োজন নেই।
wpp

8
:!mv % %:h/new_name

রেজিস্টারটিতে %বর্তমান ফাইলটির নাম রয়েছে। '%:h'বর্তমান ফাইল যুক্ত ডিরেক্টরি 'হেড' দেখায় যেমন: আপনার ফাইলের পুরো পথটি %:hফিরে আসে/abc/defabc/dev/my.txt


7

এটি কীভাবে (জ্যাকের পরামর্শ দিয়ে উন্নত):

:exe "!mv % newfilename" | e newfilename

হুম, আমার স্পষ্ট করা উচিত যে এটি গতকাল ম্যাকভিমে কাজ করেছিল তবে আমি একটি সার্ভারে ছিটকে গিয়ে আজ এটি চেষ্টা করেছি এবং ২ য় কমান্ডকে কোলন কমান্ড হিসাবে ধরা হবে বলে মনে হচ্ছে না ...
মুর্টটাউন

1
আসলে এখন এটি ম্যাকভিমে কাজ করছে না। অঙ্কন বোর্ড ফিরে! :)
মুর্টাউন

2
এটি হওয়া উচিত:exe "!mv % newfilename" | e newfilename
জেক

ধন্যবাদ জ্যাক, এটি আমার সমাধানের চেয়ে কিছুটা ভাল। আপডেট করা হয়েছে।

7

ভিমের একটি renameফাংশন রয়েছে তবে দুর্ভাগ্যক্রমে এটি ইতিহাস ধরে রাখে না।

ইতিহাস না হারিয়ে কোনও ফাইলের পুনরায় নামকরণের সবচেয়ে সহজ ওএস অগনস্টিক উপায় হ'ল:

:saveas new_file_name
:call delete(expand('#:p'))

expand('#:p') পুরানো ফাইলের পুরো পথ ফেরত দেয়।

:bd #আপনি যদি বাফার তালিকা থেকে পুরানো ফাইলটি মুছতে চান তবে ব্যবহার করুন ।

অথবা একটি প্লাগইন তৈরি করুন

আপনি যদি ফাইলটির নাম পরিবর্তন করতে দ্রুত কমান্ড ব্যবহার করতে চান তবে নিম্নলিখিত বিষয়বস্তু সহ new / .vim / প্লাগইন এর অধীনে একটি নতুন ফাইল যুক্ত করুন:

function! s:rename_file(new_file_path)
  execute 'saveas ' . a:new_file_path
  call delete(expand('#:p'))
  bd #
endfunction

command! -nargs=1 -complete=file Rename call <SID>rename_file(<f-args>)

কমান্ডটি Renameআপনাকে দ্রুত কোনও ফাইলের নাম পরিবর্তন করতে সহায়তা করবে।


: কল মুছুন ('<Cr> #') লেখা সহজ।
মাইকোআইডি

7

টিম পোপের ভাইম-নপুংসক নামে একটি দৃষ্টিনন্দন বৃহত্তর প্লাগইন রয়েছে যার মধ্যে একটি পুনরায় নামকরণ ফাংশন পাশাপাশি কিছু অন্যান্য গুডিও রয়েছে (মুছুন, সন্ধান করুন, সংরক্ষণ করুন, chmod, sudo সম্পাদনা, ...)।

ভিআইএম-নপুংসে ফাইলটির নতুন নামকরণ করতে:

:Move filename.ext

পুনঃনামকরণের তুলনায়

:rename[!] filename.ext

কয়েকটি কীস্ট্রোক সংরক্ষণ করে :)


এবং এটি সত্যিই কিছু অন্যান্য খুব দরকারী ফাংশন আছে!
পিয়েরে-অ্যাড্রিয়েন

5

প্লাগইন ব্যবহার না করে বিদ্যমান ফাইলটির নামকরণের জন্য আপনার কমান্ডটি ব্যবহার করা উচিত

:Explore

এই কমান্ডটি আপনাকে ডিরেক্টরিগুলি ইনডাইরেক্টরিতে অন্বেষণ করতে বা মুছে ফেলার অনুমতি দেয়। টাইপ Rকমান্ডের চেয়ে এক্সপ্লোরারটিতে আপনার প্রয়োজনীয় ফাইলটি নেভিগেট করা উচিত যা আপনাকে ফাইলের নাম পরিবর্তন করতে দেয়


3

এটি "সহজতম" পদ্ধতি কিনা তা আমি জানি না, তবে ধরে নিলাম আপনি ইতিমধ্যে আপনার ফাইলটি সংরক্ষণ করেছেন (: w) আমি শেলটি (: sh) করব এবং একটি সাধারণ সিপি foo foo.bak করব সম্পাদকের কাছে ফিরে যেতে Ctrl-D / প্রস্থান ব্যবহার করুন। এই লিঙ্কে vi সম্পাদক কমান্ডগুলির দরকারী তালিকা


এটি ফাইলটি অনুলিপি করবে, নাম পরিবর্তন করবে না।
innaM

আহ - আমি ভুল লিখছি "আমি ব্যক্তির সম্পাদনা চালিয়ে যেতে চাই hamhl_spec.rb" আমার খারাপ!
ডিবিমারকোস 99

আমি মনে করি আপনি করতে পারেন:! সিপি foo foo.new এবং তারপরে: e foo.new?
ডিবিমারকোস 99

3

আপনি ব্যবহার করতে পারেন: চ অনুসরণ: ডাব্লু


3
এটি পুরানো ফাইল সরিয়ে দেয় না।
কিথ পিনসন

1

এই ছোট স্ক্রিপ্টটি নিখুঁত নয় (অতিরিক্ত ক্যারিজ-রিটার্ন আপনাকে চাপতে হবে) তবে এটি কাজটি সম্পন্ন করে।

function Rename()
  let new_file_name = input('New filename: ')
  let full_path_current_file = expand("%:p")
  let new_full_path = expand("%:p:h")."/".new_file_name
  bd    
  execute "!mv ".full_path_current_file." ".new_full_path
  execute "e ".new_full_path
endfunction                                                                                                                                                                                                                                 

command! Rename :call Rename()
nmap RN :Rename<CR>

0

অন্য উপায়টি হ'ল নেট নেট ব্যবহার করা, যা ভিমের স্থানীয় অংশ।

:e path/to/whatever/folder/

তারপরে মুছতে, পুনরায় নামকরণ ইত্যাদি বিকল্প রয়েছে options

আপনি যে ফাইলটি সম্পাদনা করছেন তার ফোল্ডারের নেট নেট খুলতে এখানে একটি কীম্যাপ রয়েছে:

map <leader>e :e <C-R>=expand("%:p:h") . '/'<CR><CR>

0

:sav newfile | !rm #

মনে রাখবেন এটি বাফার তালিকা থেকে পুরানো ফাইল সরিয়ে দেয় না। যদি এটি আপনার কাছে গুরুত্বপূর্ণ হয় তবে আপনি পরিবর্তে নিম্নলিখিতটি ব্যবহার করতে পারেন:

:sav newfile | bd# | !rm #

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.