Visual block edit in vim

LF00 picture LF00 · Jan 16, 2017 · Viewed 15.1k times · Source

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:

enter image description here

After press I:

enter image description here

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
> [email protected] 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

Answer

sid-m picture sid-m · Jan 16, 2017

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