问题
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