Visual block edit in vim

喜欢而已 提交于 2019-12-06 01:45:33

问题


I have refer to this post to use block editing in vim. But when I key I or c after the block select, vim enters the normal edit mode just as if I pressed a i. I also found, when block is selected, I can use the x key to delete chars in the block.

Before press I:

After press I:

How can I block input chars?

the +visualextra have enabled from below version info.

> $ vim --version VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan  2
> 2014 19:39:47) Included patches: 1-52 Modified by
> pkg-vim-maintainers@lists.alioth.debian.org Compiled by buildd@ Huge
> version with GTK2-GNOME GUI.  Features included (+) or not (-):
> +acl             +farsi           +mouse_netterm   +syntax
> +arabic          +file_in_path    +mouse_sgr       +tag_binary
> +autocmd         +find_in_path    -mouse_sysmouse  +tag_old_static
> +balloon_eval    +float           +mouse_urxvt     -tag_any_white
> +browse          +folding         +mouse_xterm     +tcl
> ++builtin_terms  -footer          +multi_byte      +terminfo
> +byte_offset     +fork()          +multi_lang      +termresponse
> +cindent         +gettext         -mzscheme        +textobjects
> +clientserver    -hangul_input    +netbeans_intg   +title
> +clipboard       +iconv           +path_extra      +toolbar
> +cmdline_compl   +insert_expand   +perl            +user_commands
> +cmdline_hist    +jumplist        +persistent_undo +vertsplit
> +cmdline_info    +keymap          +postscript      +virtualedit
> +comments        +langmap         +printer         +visual
> +conceal         +libcall         +profile         +visualextra
> +cryptv          +linebreak       +python          +viminfo
> +cscope          +lispindent      -python3         +vreplace
> +cursorbind      +listcmds        +quickfix        +wildignore
> +cursorshape     +localmap        +reltime         +wildmenu
> +dialog_con_gui  +lua             +rightleft       +windows
> +diff            +menu            +ruby            +writebackup
> +digraphs        +mksession       +scrollbind      +X11
> +dnd             +modify_fname    +signs           -xfontset
> -ebcdic          +mouse           +smartindent     +xim
> +emacs_tags      +mouseshape      -sniff           +xsmp_interact
> +eval            +mouse_dec       +startuptime     +xterm_clipboard
> +ex_extra        +mouse_gpm       +statusline      -xterm_save
> +extra_search    -mouse_jsbterm   -sun_workshop    +xpm    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"
>     system menu file: "$VIMRUNTIME/menu.vim"   fall-back for $VIM: "/usr/share/vim" Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H
> -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz   -pthread -DORBIT2=1 -D_REENTRANT -I/usr/include/libgnomeui-2.0 -I/usr/include/libart-2.0 -I/usr/include/gconf/2 -I/usr/include/gnome-keyring-1 -I/usr/include/libgnome-2.0 -I/usr/include/libbonoboui-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gtk-2.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/x86_64-linux-gnu/gnome-vfs-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/orbit-2.0 -I/usr/include/libbonobo-2.0 -I/usr/include/bonobo-activation-2.0 -I/usr/include/libxml2 -I/usr/include/pango-1.0 -I/usr/include/gail-1.0 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/atk-1.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/cairo -I/usr/include/gio-unix-2.0/ -I/usr/include/pixman-1 -I/usr/include/libpng12     -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1     -I/usr/include/tcl8.6  -D_REENTRANT=1  -D_THREAD_SAFE=1  -D_LARGEFILE64_SOURCE=1 Linking: gcc   -L. -Wl,-Bsymbolic-functions -Wl,-z,relro -rdynamic -Wl,-export-dynamic -Wl,-E  -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -o vim   -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype     -lgnomeui-2 -lSM -lICE -lbonoboui-2 -lgnomevfs-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lORBit-2 -lart_lgpl_2 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lfreetype -lgconf-2 -lgthread-2.0 -lgmodule-2.0 -lgobject-2.0 -lglib-2.0   -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo -lnsl  -lselinux  -lacl -lattr -lgpm -ldl  -L/usr/lib -llua5.2 -Wl,-E  -fstack-protector -L/usr/local/lib  -L/usr/lib/perl/5.18/CORE -lperl -ldl -lm -lpthread -lcrypt -L/usr/lib/python2.7/config-x86_64-linux-gnu -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions  -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lieee -lm -lruby-1.9.1 -lpthread -lrt -ldl -lcrypt -lm  -L/usr/lib

回答1:


After pressing I in visual block mode, vim appears to have entered insert mode. But when you exit the insert mode and go to normal mode again, you will see that the keys you pressed in insert mode have taken effect in the entire selected block.

A demo is available at this link




回答2:


I just implemented sid-m's answer here, show the result here. For there are few users also encounter this issue.

After pressed I:

Entered aaa: (Don't misslead by the status which is same with normal insert by pressing i here)

Entered Esc.




回答3:


Visual-block mode

Inserting text before the selection

Step 1, create your visual-block selection with:

<C-v>{motion}

Step 2, enter insert mode with I:

I

Step 3, insert what you want:

foo

Step 4, leave insert mode:

<Esc>

Inserting text after the selection

Step 2, enter insert mode with A:

A

Changing the content of the selection

Step 2, cut and enter insert mode with c:

c

Replace the content of the selection with the same character

Step 2, press r:

r

Step 3, press the desired key:

-

Try a little harder next time.



来源:https://stackoverflow.com/questions/41670493/visual-block-edit-in-vim

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!