Terminal mode buffers do not implement Xterm control sequences to change cursor shape correctly
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 45/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- vim
- 領域
- desktop
調査の方向性
mvim --clean で問題を再現し、ターミナルバッファ上で、列挙されている CSI Ps SP q シーケンスの動作を gvim と比較します。MacVim がターミナルのカーソルスタイルシーケンスをどのように処理しているかを追跡し、値 3–6 が非表示になる一方で 1–2 は機能する理由に焦点を当てます。点滅および非点滅の下線とバーのスタイルが、ブロックスタイルを退行させることなく正しく描画されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Describe the bug
According to the VIM documentation in terminal.txt under terminal-cursor-style:
By default the cursor in the terminal window uses a not blinking block. The
normal xterm escape sequences can be used to change the blinking state and the
shape. Once focus leaves the terminal window Vim will restore the original
cursor.
These control sequences are defined as follows (source: XTerm Control Sequences ):
CSI Ps SP q
Set cursor style (DECSCUSR), VT520.
Ps = 0 ⇒ blinking block.
Ps = 1 ⇒ blinking block (default).
Ps = 2 ⇒ steady block.
Ps = 3 ⇒ blinking underline.
Ps = 4 ⇒ steady underline.
Ps = 5 ⇒ blinking bar, xterm.
Ps = 6 ⇒ steady bar, xterm.
However, trying these in a terminal inside the GUI of MacVim does not work.
To Reproduce
Detailed steps to reproduce the behavior:
- Run
mvim --clean - Type
:terminalto create a new terminal emulator buffer - Type any of the following commands and press enter:
printf '\e[1 q'should turn the cursor into a blinking block, which works;printf '\e[2 q'should turn the cursor into a steady block, which works;printf '\e[3 q'should turn the cursor into a blinking underline, instead the cursor turns invisible;printf '\e[4 q'should turn the cursor into a steady underline, instead the cursor turns invisible;printf '\e[5 q'should turn the cursor into a blinking bar, instead the cursor turns invisible;printf '\e[6 q'should turn the cursor into a steady bar, instead the cursor turns invisible.
Expected behavior
The same steps executed in gvim on Kubuntu 18.04 all work as expected, changing the cursor shapes as prescribed by the definition of the control sequences cited above.
Environment (please complete the following information):
-
Vim version
:version VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Sep 24 2021 14:13:28) macOS version - x86_64 Included patches: 1-3455 Compiled by GitHub Actions Huge version with MacVim GUI. Features included (+) or not (-): +acl +file_in_path -mouse_sysmouse +tag_binary +arabic +find_in_path +mouse_urxvt -tag_old_static +autocmd +float +mouse_xterm -tag_any_white +autochdir +folding +multi_byte -tcl -autoservername -footer +multi_lang +termguicolors +balloon_eval +fork() -mzscheme +terminal +balloon_eval_term +fullscreen +netbeans_intg +terminfo +browse +gettext +num64 +termresponse ++builtin_terms -hangul_input +odbeditor +textobjects +byte_offset +iconv +packages +textprop +channel +insert_expand +path_extra +timers +cindent +ipv6 +perl/dyn +title +clientserver +job +persistent_undo +toolbar +clipboard +jumplist +popupwin +transparency +cmdline_compl +keymap +postscript +user_commands +cmdline_hist +lambda +printer +vartabs +cmdline_info +langmap +profile +vertsplit +comments +libcall +python/dyn +virtualedit +conceal +linebreak +python3/dyn +visual +cryptv +lispindent +quickfix +visualextra +cscope +listcmds +reltime +viminfo +cursorbind +localmap +rightleft +vreplace +cursorshape +lua/dyn +ruby/dyn +wildignore +dialog_con_gui +menu +scrollbind +wildmenu +diff +mksession +signs +windows +digraphs +modify_fname +smartindent +writebackup +dnd +mouse -sodium -X11 -ebcdic +mouseshape -sound -xfontset +emacs_tags +mouse_dec +spell +xim +eval -mouse_gpm +startuptime -xpm +ex_extra -mouse_jsbterm +statusline -xsmp +extra_search +mouse_netterm -sun_workshop -xterm_clipboard -farsi +mouse_sgr +syntax -xterm_save system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc" 2nd user vimrc file: "~/.vim/vimrc" user exrc file: "$HOME/.exrc" system gvimrc file: "$VIM/gvimrc" user gvimrc file: "$HOME/.gvimrc" 2nd user gvimrc file: "~/.vim/gvimrc" defaults file: "$VIMRUNTIME/defaults.vim" system menu file: "$VIMRUNTIME/menu.vim" fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim" Compilation: clang -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-u nknown-pragmas -pipe -DMACOS_X -DMACOS_X_DARWIN -g -O2 -arch x86_64 -arch arm64 -D_REENTRANT -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -Wall -Wextra -Wshadow -Werro r -Wno-error=missing-field-initializers -Wno-error=deprecated-declarations -Wno- error=unused-function Linking: clang -L. -fstack-protector-strong -L/usr/local/lib -L/usr/local/opt/li byaml/lib -L/usr/local/opt/openssl@1.1/lib -L/usr/local/opt/readline/lib -L. -fs tack-protector-strong -L/usr/local/lib -L/usr/local/opt/libyaml/lib -L/usr/local /opt/openssl@1.1/lib -L/usr/local/opt/readline/lib -arch x86_64 -arch arm64 -L/u sr/local/lib -o Vim -lm -lncurses -liconv /usr/local/lib/libintl.a -framework Ap pKit -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CO RE -
OS: macOS Catalina 10.15.7
-
Terminal: GUI
- 主要言語
- Vim Script
- スター
- 7.9k
- フォーク
- 691
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
macvim-dev/macvim のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
macvim-dev/macvim#1697 · コメント 5 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
macvim-dev/macvim#1658 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
macvim-dev/macvim#1657 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
macvim-dev/macvim#1655 ·
-
難易度 2/5 半日 初心者へのやさしさ 72/100
macvim-dev/macvim#1653 ·
macvim-dev/macvim の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
longbridge/gpui-kit#3223 ·
-
area:desktop area:ui bug platform:macos
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
anthropics/claude-code#96687 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
flutter-webrtc/flutter-webrtc#2206 ·
-
切换供应商后codex的智能体配置报错 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
farion1231/cc-switch#7660 ·