ডিফল্ট রেজিস্টারে নির্বাচন না করে চাক্ষুষভাবে নির্বাচিত কোনও জায়গায় পেস্ট করার কোনও উপায় কি কেউ জানেন?
আমি জানি আমি সবসময় একটি সুস্পষ্ট নিবন্ধ থেকে পেস্ট করে সমস্যার সমাধান করতে পারি। তবে ঘাড়ের মধ্যে ব্যথা হ'ল "xpন্যায়ের পরিবর্তে টাইপ করাp
ডিফল্ট রেজিস্টারে নির্বাচন না করে চাক্ষুষভাবে নির্বাচিত কোনও জায়গায় পেস্ট করার কোনও উপায় কি কেউ জানেন?
আমি জানি আমি সবসময় একটি সুস্পষ্ট নিবন্ধ থেকে পেস্ট করে সমস্যার সমাধান করতে পারি। তবে ঘাড়ের মধ্যে ব্যথা হ'ল "xpন্যায়ের পরিবর্তে টাইপ করাp
উত্তর:
"{register}p
আপনি বর্ণনা হিসাবে কাজ করবে না। এটি নিবন্ধকের সামগ্রীর সাথে নির্বাচনটি প্রতিস্থাপন করবে। পরিবর্তে আপনার মতো কিছু করতে হবে:
" I haven't found how to hide this function (yet)
function! RestoreRegister()
let @" = s:restore_reg
return ''
endfunction
function! s:Repl()
let s:restore_reg = @"
return "p@=RestoreRegister()\<cr>"
endfunction
" NB: this supports "rp that replaces the selection by the contents of @r
vnoremap <silent> <expr> p <sid>Repl()
আপনি যে কোনও প্লাগইন ব্যবহার করবেন না যতক্ষণ না পি-নন-ভিওএম্যাপ রয়েছে এবং এটি কোনও নিবন্ধকে ওভাররাইট করা প্রত্যাশা করে Which
এই কোডটি সেখানে স্ক্রিপ্ট হিসাবে উপলব্ধ । ইনগো কারকাত একই সমস্যা সমাধানের জন্য একটি প্লাগইন সংজ্ঞায়িত করেছিলেন।
regtype
(লাইনওয়াইজ?) মনে রাখবেনা এবং সেই রিম্যাপিং পি pgvy
যথেষ্ট?
"xp
, এই ঊর্ধ্বলিপি করে @"
দিয়ে বিষয়বস্তু @x
অসদৃশpgvy
:xnoremap p pgv@=v:register.'y'<cr>
?
আমি মোছা সব লিখিত অনুলিপি ডিফল্ট তেজ আচরণ পছন্দ করেন না d
, D
, c
, অথবা C
মধ্যে ডিফল্ট রেজিস্টার।
আমি ম্যাপিং দ্বারা এটি প্রায় অর্জিত করেছি d
করতে "_d
, c
করতে "_c
, ইত্যাদি।
আমার .vimrc থেকে:
"These are to cancel the default behavior of d, D, c, C
" to put the text they delete in the default register.
" Note that this means e.g. "ad won't copy the text into
" register a anymore. You have to explicitly yank it.
nnoremap d "_d
vnoremap d "_d
nnoremap D "_D
vnoremap D "_D
nnoremap c "_c
vnoremap c "_c
nnoremap C "_C
vnoremap C "_C
নিম্নলিখিত ব্যবহার:
xnoremap p pgvy
এটি ভিজ্যুয়াল মোডে আটকানো কোনও পাঠ্য পুনরায় নির্বাচন করবে এবং পুনরায় ইঙ্ক করবে।
সম্পাদনা করুন: "xp
আপনার সাথে কাজ করার জন্য এটি করতে পারেন:
xnoremap p pgv"@=v:register.'y'<cr>
v:register
একটি সাধারণ মোড কমান্ডে ব্যবহৃত সর্বশেষ নিবন্ধকার নামটি প্রসারিত করে।
"xp
, এই পদ্ধতির সাথে ওভাররাইট @"
হয় @x
।
xnoremap p pgv"@=v:register.'y'<cr>
আমার পক্ষে কার্যকর হয়নি। এটি যাইহোক, এটি করে:xnoremap <expr> p 'pgv"'.v:register.'y'
g
? আমি এর আগে দেখিনি।
g
একা কিছুই করেনা। এটি প্রসারিত, মাল্টি-কী কমান্ডগুলি সরবরাহ করে z
। উদাহরণস্বরূপ, go
বাফারে নবম বাইটে যায় gj
এবং gk
পরবর্তী এবং পূর্ববর্তী প্রদর্শিত লাইনটিতে যায় ( jk
লাইনগুলি আবৃত হওয়ার সময় পৃথক হয় ), ga
কার্সারের নীচে বর্ণের তথ্য প্রদর্শন করে, gJ
স্থান ছাড়াই লাইনগুলিতে যোগ দেয় এবং এখানে gv
শেষ চাক্ষুষ নির্বাচন পুনরুদ্ধার করে। আপনি ব্যবহার করতে পারেন :help gv
।
:xnoremap <expr> p 'pgv"'.v:register.'y`>'
, আমি কার্সারের অবস্থানটি পুনরুদ্ধার করতে `` `>` added যুক্ত করেছি
আপনার .vimrc
xnoremap p "_dP
আমি এটি একটি অনুরূপ থ্রেডের প্রতিক্রিয়া থেকে পেয়েছি, তবে আসল উত্সটি ছিল http://vim.wikia.com/wiki/Replace_a_word_with_yanked_text । এটি কিছু ত্রুটিগুলি উল্লেখ করেছে, তবে এটি আমার পক্ষে ঠিক কাজ করে।
.vimrc.local
ঠিক আছে।
লুক হার্মিটের দ্রবণটি কবজির মতো কাজ করে। আমি এটি প্রায় এক সপ্তাহ বা তার জন্য ব্যবহার করছিলাম। তারপরে আমি স্টিভ লশের .vimrc থেকে একটি সমাধান খুঁজে পেয়েছি যা ইয়ানক্রিং আপনার প্লাগইন / বান্ডেল লাইনআপের অংশ হলে যদি দুর্দান্তভাবে কাজ করে:
function! YRRunAfterMaps()
" From Steve Losh, Preserve the yank post selection/put.
vnoremap p :<c-u>YRPaste 'p', 'v'<cr>gv:YRYankRange 'v'<cr>
endfunction
এটি আপনার ~/.vimrc
:
xnoremap <expr> p 'pgv"'.v:register.'y'
xnoremap
মানে এটি কেবল Visual
মোডের জন্য , Visual + Select
মোডগুলির জন্য নয় ।
<expr>
তার মানে {rhs}
এর xnoremap {lhs} {rhs}
সেটিং একটি অভিব্যক্তি হিসাবে মূল্যায়ন করা হয়।
এই ক্ষেত্রে, আমাদের প্রকাশটি সংক্ষেপণের জন্য 'pgv"'.v:register.'y'
ব্যবহার .
করছে।
v:register
ম্যাপিংয়ের পরিপূরককালে নিবন্ধকটিকে মূল্যায়ন করা হয়।
ফলাফলটি "xp
মূল্যায়ন করবে pgv"xy
যেখানে x
রেজিস্টার।
আমি এই Stackoverflow প্রশ্নের উত্তর সহযোগিতা করা হয়েছিল: তেজ - একটি ঐচ্ছিক রেজিস্টার উপসর্গ এর সাথে ম্যাপিং সাথে বেনইট এর উত্তর এই পৃষ্ঠাতে
আমার কাছে ক্লিপবোর্ড = নামবিহীন সেট রয়েছে তা সমর্থন করার জন্য একটি পরিবর্তন করার পরে লুসের ফাংশনটি আমার পক্ষে ভালভাবে কাজ করেছে:
function! RestoreRegister()
let @" = s:restore_reg
if &clipboard == "unnamed"
let @* = s:restore_reg
endif
return ''
endfunction
clipboard=unnamedplus
থাকতে @+
হবে @*
।
লুক হার্মিটের কৌতুকটা কি! আসলেই ভাল. এখানে তার সমাধানটি একটি টগল ফাংশনে রাখা হয়েছে, যাতে আপনি স্বাভাবিক আচরণ এবং কোনও-প্রতিস্থাপন-নিবন্ধক পুটের মধ্যে স্যুইচ করতে পারেন।
কমান্ড, আপনি আচরণ toggles
let s:putSwap = 1
function TogglePutSwap()
if s:putSwap
vnoremap <silent> <expr> p <sid>Repl()
let s:putSwap = 0
echo 'noreplace put'
else
vnoremap <silent> <expr> p p
let s:putSwap = 1
echo 'replace put'
endif
return
endfunction
noremap ,p :call TogglePutSwap()<cr>
silent! vunmap
পরিবর্তে পছন্দ করুনvnoremap <silent> <expr> p p
নালী-টেপ প্রোগ্রামিং, তবে আমার জন্য কাজ করে:
nmap viwp viwpyiw
nmap vi'p vi'pyi'
nmap vi"p vi"pyi"
nmap vi(p vi(pyi(
nmap vi[p vi[pyi[
nmap vi<p vi<pyi<