Neovim terminal bölmesine girerken ekleme moduna nasıl girilir?


16

Neovim'de bir terminal bölmesinden çıkmayı kolaylaştırmak için aşağıdaki eşlemelerim var:

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

Tek sorun, terminal bölmesine igeri döndüğümde, ekleme moduna geri dönmek için basmam gerektiğidir. Terminal çalıştıran bir neovim bölmesine geçtiğimde her zaman ekleme modunda olmasını istiyorum. Bunu başarmanın en iyi yolu nedir?

Yanıtlar:


18

Terminal arabellek adı her zaman şunlarla başlar term://:

autocmd BufWinEnter,WinEnter term://* startinsert

Pencereden çıkarken kullandığınız moddan bağımsız olarak, terminal penceresine geçerken bunun her zaman ekleme moduna geçeceğini unutmayın.


Terminal penceresinden ayrılırken, bu pencereden nasıl ayrılırsanız ayrılın her zaman normal moda dönmek için benzer bir otomatik komut da kullanabilirsiniz:

autocmd BufLeave term://* stopinsert


Bu çözümle bu sorunu yaşıyorum . Etrafında bir yol biliyor musun?
Rastapopoulos

BufEnterBöyle autocmd görünüyor bu sorunu yoktur.
Rastapopoulos

3

Bir terminal arabelleği girerek terminale ayarlar buftype, bunun yerine bunu kullanabilirsiniz:

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

Ben buldum: startinsert bu yazı itibariyle yerli vim 8 terminalleri için çalışmıyor. Aslında açıkça belirtilir :help terminalki, ": startinsert etkisizdir." Bunun exec 'normal! i'yerine işe yaradığını gördüm .
Kevin

1
"Ben buldum: startinsert bu yazı itibariyle yerli vim 8 terminalleri için çalışmıyor." Bu üzücü. Vim'in NeoVim'den öğrenecek çok şeyi var.
trusktr

0

Ya da biraz daha iyi:

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

Hangi <buffer>au komutunun yerel olarak uygulanmasını sağlar, bu yüzden sadece termial tampon tipi için. Bu, yalnızca terminal için ayarın değiştirilmesi için de kullanışlıdır. Göreli çizgilerden mutlak olana swtich gibi;)

Ayrıca ..... :startinsertTüm dokümanlar buna işaret etse bile işe alamıyorum . Aşağıdakileri yapmak zorunda kaldım:

    au BufEnter <buffer> exec "normal i"

0

Neovim'de şunları yapabilirsiniz:

          autocmd TermOpen * startinsert

Bulundu :help :terminal.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.