নিওভিম টার্মিনাল ফলকে প্রবেশ করার সময় কীভাবে সন্নিবেশ মোড প্রবেশ করবেন?


16

নিওভিমে টার্মিনাল ফলকের বাইরে চলে যাওয়া সহজ করার জন্য আমার কাছে নিম্নলিখিত ম্যাপিংগুলি রয়েছে:

tnoremap <C-h> <C-\><C-n><C-w>h
" Workaround since <C-h> isn't working in neovim right now
tnoremap <C-w>h <C-\><C-n><C-w>h
tnoremap <C-j> <C-\><C-n><C-w>j
tnoremap <C-k> <C-\><C-n><C-w>k
tnoremap <C-l> <C-\><C-n><C-w>l

একমাত্র সমস্যাটি হ'ল আমি যখন টার্মিনাল ফলকে ফিরে যাই তখন আমাকে iআবার প্রবেশের মোডে ফিরে যেতে টিপতে হয়। আমি সর্বদা চাই যখন আমি টার্মিনাল চলমান কোনও নিউভিম ফলকে নিয়ে যাই তখন এটি সন্নিবেশ মোডে থাকুক। এটি অর্জনের সর্বোত্তম উপায় কী?

উত্তর:


18

একটি টার্মিনাল বাফার নামটি সর্বদা এর সাথে শুরু হয় term://:

autocmd BufWinEnter,WinEnter term://* startinsert

নোট করুন যে আপনি উইন্ডোটি ছাড়ার সময় যে মোডটি ব্যবহার করছেন তা নির্বিশেষে আপনি যখন টার্মিনাল উইন্ডোতে যান তখন আপনাকে সর্বদা সন্নিবেশ মোডে রাখবে।


আপনি যখন টার্মিনাল উইন্ডোটি ছাড়েন তখন আপনি সর্বদা স্বাভাবিক মোডে ফিরে আসার জন্য অনুরূপ অটোকমন্ড ব্যবহার করতে পারেন, আপনি কীভাবে এই উইন্ডোটি রেখে যান না কেন:

autocmd BufLeave term://* stopinsert


এই সমাধান সহ, আমি এই সমস্যাটি অনুভব করি । আপনি কি তার চারপাশের কোনও উপায় সম্পর্কে জানতে পারবেন?
রাস্তাপোপ্লোস

BufEnterএটা পছন্দ autocmd সৌন্দর্য এই সমস্যা নেই।
রাস্তাপোপ্লোস

3

টার্মিনালে একটি টার্মিনাল বাফার সেট প্রবেশ করানো হচ্ছে buftype, আপনি আসলে এর পরিবর্তে এটি ব্যবহার করতে পারেন:

:au BufEnter * if &buftype == 'terminal' | :startinsert | endif

আমি দেখতে পেলাম: স্টার্টিন্টারটি এই পোস্ট হিসাবে দেশীয় ভিআইএম 8 টার্মিনালের জন্য কাজ করে না। :help terminalএটিতে প্রকৃতপক্ষে স্পষ্টভাবে বলা হয়েছে , ": স্টার্টিন্টটি কার্যকর নয়" " আমি যে exec 'normal! i'পরিবর্তে কাজ করে।
কেভিন

1
"আমি দেখতে পেয়েছি যে: স্টার্টিন্টারটি এই পোস্ট হিসাবে দেশীয় ভিআইএম 8 টার্মিনালের জন্য কাজ করে না।" এটা দুঃখের. ভিও-এর নিওভিমের কাছ থেকে অনেক কিছু শেখার আছে।
trusktr

0

বা আরও ভাল:

  function! TerminalOptions()
    " /* folded code */
    silent au BufEnter <buffer> startinsert!
    silent au BufLeave <buffer> stopinsert!
  endfunction
  au TerminalOpen * call TerminalOptions()

যা <buffer>স্থানীয়ভাবে আ কমান্ড প্রয়োগ করা হবে, সুতরাং কেবলমাত্র টার্মিয়াল বাফার প্রকারের জন্য। এটি কেবলমাত্র টার্মিনালের জন্য সেটিংস পরিবর্তনের জন্য দরকারী। যেমন আপেক্ষিক লাইন থেকে পরম যাও swtich;)

এছাড়াও ..... আমি :startinsertকাজ করতে পারি না , এমনকি যদি সমস্ত ডক্সই এটি নির্দেশ করে। আমাকে নিম্নলিখিতগুলি করতে হয়েছিল:

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