অপারেটর মুলতুবি মোডে কার্সার আকার পরিবর্তন করুন


9

জিভিমে আমার কার্সার:

জিভিমে আমার কার্সার

চাপ দেওয়ার পরে জিভিমে আমার কার্সার d:

<কোড> d </code> টিপানোর পরে জিভিমে আমার কার্সার

অপারেটর বিচারাধীন মোডে থাকাকালীন আমি টার্মিনাল ভিমে কার্সারটি পরিবর্তন করতে পারি? একেবারে স্ক্রিনশটগুলির মতো দেখতে হবে না।

এই দ্বারা সম্পন্ন করা হয় o:hor50-Cursorমধ্যে guicursorGvim জন্য। আমি ভিমের জন্য কেবলমাত্র তিনটি বিকল্প দেখতে পাচ্ছি:

t_SI    start insert mode (bar cursor shape)        *t_SI* *'t_SI'*
t_SR    start replace mode (underline cursor shape) *t_SR* *'t_SR'*
t_EI    end insert or replace mode (block cursor shape) *t_EI* *'t_EI'*
    |termcap-cursor-shape|

তবে অপারেটর মুলতুবি মোড সম্পর্কে কিছুই নেই ...


2
আমি মনে করি না এটি সম্ভব (কোনও উত্স কোড প্যাচ ব্যবহার করতে পারে ..)। আমি যা করি তা হ'ল আংশিকভাবে প্রবর্তিত কমান্ড লেটারগুলি পরীক্ষা করার জন্য ভিম উইন্ডোটির ডান-নীচের দিকে তাকান, যা সেখানে প্রদর্শিত হয় ( showcmdসেট করার সাথে)। আমি সমস্ত টাইমআউট এবং esckeysবিকল্পটিও অক্ষম করে রাখি (এটি ভিমকে তীব্র রাখে তবে উদাহরণস্বরূপ অপ-পেন্ডিং মোডে আমি কী করতে চাই তা ভেবে দেখার অনুমতি দেয়)।
ভ্যানলাসার

1
@ ভ্যানলাসার হ্যাঁ, তবে আমি কার্সারটি পছন্দ করি ;-)
মার্টিন টর্নিওয়েজ


আমি সি / সি ++ জানি, একটি $ অনুগ্রহ অফার করছি এবং আমি যদি সম্ভব হয় তবে এটি ভিম উত্স কোডে প্রয়োগ করার চেষ্টা করতে পারি: ডি
ভ্যানলাসার

অপারেটর মুলতুবি মোড সনাক্ত করতে আপনি vi.stackexchange.com/a/11437/10337 ব্যবহার করতে পারেন এবং কার্সারটি পরিবর্তন করতে একটি এনসিসি পলায়ন প্রতিধ্বনি করতে পারেন ।
লকতক

উত্তর:


3

অপারেটর মুলতুবি মোডে প্রবেশ / প্রস্থান করার সময় এটি কার্সার আপডেট করে।

যদিও এটি হ্যাকি সমাধানের কিছুটা হলেও আমার মনে হয় না এর কোনও কার্যকারিতা সমস্যা আছে।

" This is esentially:
"   exec 'silent !printf "\e[" . a:t . ' q'
"   redraw!
" but without the screen flash
function! s:setCursor(t)
    " Save existing values.
    let [l:title, l:t_ts, l:t_fs, l:titlestring] = [&title, &t_ts, &t_fs, &titlestring]

    try
        let &titleold = ''
        let &t_ts = "\e[0;0"
        let &t_fs = "\e[" . a:t . ' q'
        set title
        set titlestring=H
        redraw!
    finally
        let [&title, &t_ts, &t_fs, &titlestring] = [l:title, l:t_ts, l:t_fs, l:titlestring]
    endtry
endfunction

let s:prevmode = ''
function! DetectPendingMode(timer)
    let l:mode = mode(1)
    if l:mode is# s:prevmode
        return
    endif

    if l:mode is# 'no'
        call <SID>setCursor(4)
    elseif s:prevmode is# 'no'
        call <SID>setCursor(2)
    endif
    let s:prevmode = l:mode
endfunction

call timer_start(250, 'DetectPendingMode', {'repeat': -1})

SetCursor()আপনার পছন্দ অনুযায়ী কার্সারের স্টাইলটি পরিবর্তন করতে হবে :

0: blinking block.
1: blinking block.
2: steady block.
3: blinking underline.
4: steady underline.
5: blinking bar (xterm).
6: steady bar (xterm).
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.