আমি কীভাবে টেক্সট অবজেক্ট হিসাবে ল্যাটেক্স উদ্ধৃতিগুলি ব্যবহার করতে পারি?


29

ল্যাটেক্সে উদ্ধৃতি চিহ্নগুলি সাধারণ পাঠ্যের চেয়ে আলাদা, সেগুলি ফর্ম্যাট করা হয় ``like this''(বা `like this'একক উদ্ধৃতিগুলির জন্য)। এটি ভিমে তাদের মাধ্যমে চলাচল করতে সমস্যা করে।

আমি সাধারণত কিছুটা ব্যবহার করি T`ct'(পিছনের দিকে `, পরিবর্তন হওয়া পর্যন্ত ')। তবে এটি আকিদা এবং অপ্রাকৃত। আমি লাইন বরাবর কিছু ব্যবহার করতে পারবেন পছন্দ করেন ciq( "উদ্ধৃতি পরিবর্তন"), ঠিক আমি কি করতে পারি ciw, ca), ci", ca', ইত্যাদি

``LaTeX'' `quotes'টেক্সট অবজেক্ট হিসাবে ভিমকে আচরণ করার কোনও উপায় আছে কি ? (প্লাস হিসাবে, কোনও .texফাইল সম্পাদনা করার সময় কেবল এটিকে ট্রিগার করার কোনও উপায় আছে ?)

উত্তর:


10

আমি ল্যাটেক্স জানি না তবে এটি কাজ করে বলে মনে হচ্ছে:

vnoremap iq :<C-U>silent! normal! t'vT`<CR>
omap iq :normal viq<CR>

আমি এই তথ্যটি এখানে ভিত্তি করে তৈরি করেছি: http://vim.wikia.com/wiki/Creating_new_text_objects

আপনি aqপাশাপাশি সমর্থন যোগ করতে পারেন :

vnoremap aq :<C-U>silent! normal! f'vF`<CR>
omap aq :normal vaq<CR>

এটি কাজ iqকরে তবে মনে হয় এটির সাথে কাজ করে না, উদাহরণস্বরূপ daq
ডোরকনব

ঠিক। আপনি এটির aqসাথে অতিরিক্ত অনুরূপ ম্যাপিংয়ের সাহায্যে কাজ করতে পারেন । আমি উত্তর সম্পাদনা করেছি। আমি ম্যাপিংয়ে টি'ও টি দিয়ে বদলেছিলাম যাতে এটি প্রথমে অনুসন্ধান করে যা আমার কাছে আরও স্বাভাবিক বলে মনে হয়।
সুপারজার

এই একক উদ্ধৃতি জন্য কাজ করে, কিন্তু daqউপর ``foo''মাত্র ফলাফল `foo'
ডোরকনব

আমি মনে করি না এই পদ্ধতিটি একক উদ্ধৃতির চেয়ে বেশি কাজ করতে পারে। আপনি পাঠ্য চেয়ে গভীর পরিদর্শন করতে প্রয়োজন হবে fএবং tঅপারেটরদের অনুমতি, যা ভেরিয়েবল এবং সবকিছু একটি সম্পূর্ণ ফাংশন লেখা প্রয়োজন। আমার এখনই এটি করার সময় নেই।
সুপারজার

7

সম্পাদনা করুন : আমি সবেমাত্র vim-টেক্সটবজেক্ট-ল্যাটেক্স প্লাগইনটি আবিষ্কার করেছি, যা আপনি সুনির্দিষ্ট কার্যকারিতা যুক্ত করেছেন (কয়েকটি অন্যান্য জিনিস ছাড়াও)। প্লাগইনের README থেকে:

বর্তমানে সমর্থিত পাঠ্য অবজেক্টগুলি হ'ল:

a   i   Description
a\\ i\\ Inline math surrounded by ``\\(`` and ``\\)``.
a$  i$  Inline math surrounded by dollar signs.
aq  iq  Single-quoted text ``\`like this'``.
aQ  iQ  Double-quoted text ``\``like this''``.
ae  ie  Environment ``\begin{...}–\end{...}``

সুতরাং আপনি caqযেমনটি চেয়েছিলেন তেমন ব্যবহার করতে পারেন । আমি এটি পরীক্ষা করেছি এবং এটি বিজ্ঞাপন হিসাবে কাজ করে তবে লক্ষ্য করুন যে এটি ভিম-টেক্সটোবজেক্ট-ব্যবহারকারী প্লাগইনের উপর নির্ভরশীল । এছাড়াও নোট করুন যে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে textobject-userপ্লাগইনটি প্রথমে লোড হয় , অন্যথায় জিনিসগুলি কাজ করবে না।


আপনি যদি প্লাগিনগুলির সাথে ঝামেলা করতে না চান তবে আমার মূল উত্তরটি কার্যকর থাকবে:

আপনার এই দুটি লাইন যুক্ত করা আপনার যা চান তার বেশিরভাগ অংশ .vimrcজুড়ে দেবে।

onoremap aq :<c-u>normal! F`vf'<cr>
onoremap iq :<c-u>normal! T`vt'<cr>

এটি নতুন পাঠ্য অবজেক্ট তৈরি করে ( aqএবং iq) যা পূর্ববর্তীগুলিতে ফিরে যায় `, ভিজ্যুয়াল নির্বাচন মোডে প্রবেশ করে, তারপরে পরবর্তীটি নির্বাচন করুন '

এই জন্য কাজ করবে ciq, caq, yiq, এবং diq। যাইহোক, yaqএবং daqবাইরের উদ্ধৃতিগুলি ইয়েঙ্ক / মুছে ফেলবে না, তাই এটি পরিচালনা করতে আমি অন্য একটি পাঠ্য বস্তু তৈরি করেছি, a"( i"প্রয়োজন হয় না, তবে আমি জিনিসগুলিকে সামঞ্জস্য রাখতে যোগ করেছি:

onoremap a" :<c-u>normal! 2F`v2f'<cr>
onoremap i" :<c-u>normal! 2T`v2t'<cr>

এখানে সবচেয়ে বড় খারাপ দিক এটি হ'ল এটি স্বাভাবিকভাবে ভেঙে যায় ca"ইত্যাদি। আপনি যদি সেগুলির সাথে প্রিফেস করেন তবে au FileType texআপনার কেবল .texফাইলগুলিতে এই সমস্যাটি থাকবে তবে এটি মাঝে মাঝে বিরক্তি হতে পারে। আপনি বস্তুর নাম ad/ / id('ডি' 'ডাবল' উদ্ধৃতি) এর মতো কিছু রাখতে পারেন , তবে এটি আমার কাছে কম স্বজ্ঞাত বলে মনে হয়েছিল (আমি স্বাভাবিক অপারেশন থেকে ন্যূনতম পার্থক্যের লক্ষ্যে ছিলাম)।

এগুলিকে কেবল দুটি পাঠ্য বস্তুতে গুটিয়ে রাখার আমি কেবল ভাবতে পারি এমন একটি ফাংশন লিখতে হবে যা প্রথম সেটটির বাইরে অন্য উদ্ধৃতি পরীক্ষা aqকরে এবং কল করার জন্য পাঠ্য অবজেক্টগুলি সেট করে ।

দ্রষ্টব্য : এগুলির সাথে আরও কয়েকটি ছোটখাটো সমস্যা রয়েছে:

  1. ইয়াঙ্কিং আপনার কার্সারটিকে অপ্রত্যাশিত জায়গায় ছেড়ে দিতে পারে (কমান্ডগুলিতে একটি চিহ্ন যোগ করে এটি সংশোধন করা যেতে পারে (উদাহরণস্বরূপ ma2F`v2f'<cr>`a), আপনি বার বার ম্যানুয়ালি ব্যবহার করেন না এমনটি নিশ্চিত করুন)
  2. কার্সারটি অবশ্যই উদ্ধৃতিগুলির মধ্যে থাকতে হবে; অদ্ভুত জিনিসগুলি যদি তা উদ্ধৃতিতে হয়।

এই সমস্ত আপ মোড়ানো, আমি ব্যক্তিগতভাবে .vimrcএই সমস্যাটির জন্য আমার যোগ করতে হবে :

augroup filetype_latex
    au!
    au FileType tex,plaintex onoremap a' :<c-u>normal! muF`vf'<cr>`u
    au FileType tex,plaintex onoremap i' :<c-u>normal! muT`vt'<cr>`u
    au FileType tex,plaintex onoremap a" :<c-u>normal! mu2F`v2f'<cr>`u
    au FileType tex,plaintex onoremap i" :<c-u>normal! mu2T`v2t'<cr>`u
end augroup

আপনি দেখতে পাচ্ছেন, আমি স্বাভাবিক ca'/ ya"/ ইত্যাদি কার্যকারিতা ভঙ্গ করার পক্ষে বেছে নিয়েছিলাম সুতরাং আমি তাদের জন্য নতুন কমান্ড শিখতে হবে না যেহেতু আমি যেভাবেই ল্যাটেক্সের মধ্যে সাধারণ কার্যকারিতাটি ব্যবহার করব না। এটি কেবল একটি ব্যক্তিগত পছন্দ; অবজেক্টের নাম পরিবর্তন করতে শক্ত নয় not আমি ফাইল টাইপ সনাক্তকরণ এবং চিহ্নগুলিতেও যুক্ত করেছি।


2

এটি একটি পুরানো প্রশ্ন তবে ভবিষ্যতের দর্শকদের সুবিধার জন্য: আমি ল্যাটেক্সের উদ্ধৃতিগুলি এর সাথে পরিবর্তন করা আরও সহজ মনে করি:

\usepackage{csquotes} % change " " into nice double quotes  
\MakeOuterQuote{"}

এবং তারপরে This thing is "Foobar"!ভিএম এবং ল্যাটেক্সে সূক্ষ্মভাবে কাজ করবে।


0

প্লাগ লাগানো vim-sandwich

এর জন্য আর একটি দরকারী প্লাগইন vim-sandwichযা এফটি-নির্দিষ্ট পরিবেশের সংজ্ঞা দিয়েছে

  • l`বা l'জন্য `text',
  • l"জন্য ``text''এবং
  • টেক্সটোবজেক্টগুলি এগুলিতে সহজেই পরিচালনা করতে পারে।

কাজ নিম্নলিখিত ডিফল্ট ম্যাপিং সঙ্গে

  • textobject: অভ্যন্তরীণ টেক্সট প্রতিস্থাপন `text'সঙ্গে cisl'অথবা যদি পার্শ্ববর্তী নিকটতম স্বতঃ সনাক্তকরণ জরিমানা cib(যেমন কার্সার উপর hমধ্যে `a (phony) text'প্রেস প্রয়োজন vibibc)। তবে আপনি অতিরিক্ত টেক্সটোজেক্ট iq(ওপি উদাহরণ) নিম্নলিখিতটি সংজ্ঞায়িত করতে পারেন omap <unique> iq <Plug>(textobj-sandwich-query-i)l' xmap <unique> iq <Plug>(textobj-sandwich-query-i)l' omap <unique> aq <Plug>(textobj-sandwich-query-a)l' xmap <unique> aq <Plug>(textobj-sandwich-query-a)l' omap <unique> iQ <Plug>(textobj-sandwich-query-i)l" xmap <unique> iQ <Plug>(textobj-sandwich-query-i)l" omap <unique> aQ <Plug>(textobj-sandwich-query-a)l" xmap <unique> aQ <Plug>(textobj-sandwich-query-a)l" এখন কেবল চাপ ciqবা ciQকাজ করে।
  • যোগ করার জন্য textসঙ্গে saiwl'একক অ্যাপস্ট্রফিগুলি পেতে `text'
    কমান্ডের প্যাটার্ন sa{motion/textobject}{surrounding}এবং অপারেটর ডাকা মানে add surroundingউপর inner wordএবং পারিপার্শ্বিক ধরনের latex single quote
  • সাথে sdl'বা সাথে মুছুনsdb
  • সাথে srl'l"বা সাথে পরিবর্তন করুনsrbl"

এটি সমর্থন করে

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