linux终端光标为竖杠,修改Ubuntu终端中,Vim插入模式下光标实现为竖线状
原文:Change cursor shape in different modes不同终端版本修改代码不同。使用如下命令查看Gnome-Terminal终端的版本:aptitude show gnome-terminalTo change the shape of the cursor in different modes, you can add the following into your
原文:Change cursor shape in different modes
不同终端版本修改代码不同。
使用如下命令查看Gnome-Terminal终端的版本:
aptitude show gnome-terminal
To change the shape of the cursor in different modes, you can add the following into your vimrc.
将不同版本终端对应的代码添加到vimrc文件中即可。
我的终端版本为3.18***,vimrc文件位于etc/vim/vimrc
For the Gnome-Terminal (version 2.26)Edit
This makes your cursor change in all open terminals. Upgrade your terminal and use the version above instead.
if has("autocmd")
au InsertEnter * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"
au InsertLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block"
au VimLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"
endif
For the Gnome-Terminal (version 3.x)Edit
First make a script gnome-terminal-cursor-shape.sh
#!/bin/sh
DEFAULTPROF=`dconf read /org/gnome/terminal/legacy/profiles:/default`
DEFAULTPROF=`echo "$DEFAULTPROF" | sed -e "s/^'/:/" -e "s/'$//"`
dconf write /org/gnome/terminal/legacy/profiles:/$DEFAULTPROF/cursor-shape "'$1'"
Make it executable & put it in /usr/local/bin Next, add this to .vimrc
if has("autocmd")
au InsertEnter *
\ if v:insertmode == 'i' |
\ silent execute "!gnome-terminal-cursor-shape.sh ibeam" |
\ elseif v:insertmode == 'r' |
\ silent execute "!gnome-terminal-cursor-shape.sh underline" |
\ endif
au InsertLeave * silent execute "!gnome-terminal-cursor-shape.sh block"
au VimLeave * silent execute "!gnome-terminal-cursor-shape.sh block"
endif
If you use more than one profile in gnome-terminal, you might have to adapt this to your profiles.
For the Gnome-Terminal (version ≥3.16) Edit
This method has the advantage compared to the method above that it influences the given tab only, and not all the tabs that use the given profile. Add the following into .vimrc
if has("autocmd")
au VimEnter,InsertLeave * silent execute '!echo -ne "\e[2 q"' | redraw!
au InsertEnter,InsertChange *
\ if v:insertmode == 'i' |
\ silent execute '!echo -ne "\e[6 q"' | redraw! |
\ elseif v:insertmode == 'r' |
\ silent execute '!echo -ne "\e[4 q"' | redraw! |
\ endif
au VimLeave * silent execute '!echo -ne "\e[ q"' | redraw!
endif
Above snippet disables cursor blinking. If you want cursor blink, just decrement all the 3 numbers above 2,4,6 by one each.
if has("autocmd")
au VimEnter,InsertLeave * silent execute '!echo -ne "\e[1 q"' | redraw!
au InsertEnter,InsertChange *
\ if v:insertmode == 'i' |
\ silent execute '!echo -ne "\e[5 q"' | redraw! |
\ elseif v:insertmode == 'r' |
\ silent execute '!echo -ne "\e[3 q"' | redraw! |
\ endif
au VimLeave * silent execute '!echo -ne "\e[ q"' | redraw!
endif
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)