星期日, 七月 07, 2019

VIM学习笔记 替换模式(Replace Mode)

进入替换模式

使用大写R命令,将进入替换模式(屏幕底部显示“--REPLACE--”)。此时新输入的文本将直接替代/覆盖已经存在的内容,直至点击ESC键返回常规模式。

ReplaceMode_Edit.gif
Source: medium.com/vim-drops

使用小写r命令,将进入单字符替换模式,此时新输入的字符将替代光标之下的当前字符,然后自动返回到常规模式。

通过在r命令中增加数字前缀,可以一次性替换多个字符。例如,将光标定位到“||”字符处,然后执行2r&命令,可以将其替换为“&&”。

使用gR命令,将进入虚拟替换模式(virtual replace mode)(屏幕底部显示“--VREPLACE--”),其与替换模式最主要的区别在于,对<Tab>键和换行符的不同处理方式。

区别1:对于<Tab>键的处理方式

在替换模式(REPLACE)下,在原有<Tab>键处输入字母'a',将直接替代<Tab>键所占用的所有空格的位置,文本格式遭到破坏:

REPLACE_A
Source: medium.com/vim-drops

在虚拟替换模式(VREPLACE)下,在原有<Tab>键处输入字母'a',将仅仅替代单个空格,文本格式保持不变:

VREPLACE_A
Source: medium.com/vim-drops

从以上实例可以发现:替换模式(REPLACE)将<Tab>键作为一个整体来处理(不管其真实占用多少个空格位置);而虚拟替换模式(VREPLACE)则将<Tab>键拆分为多个独立的空格来分别处理。如果文本以<Tab>分隔排布,在编辑过程中希望保持原有的文本缩进和排版格式,那么建议使用虚拟替换模式。

区别2:对于<NL>换行的处理方式

在替换模式(REPLACE)下,输入<Enter>回车键将增加新行:

REPLACE_NL

在虚拟替换模式(VREPLACE)下,输入<Enter>回车键将用新行替代当前行内容(即清空当前行):

VREPLACE_NL

使用gr命令,可以进入单字符虚拟替换模式。在替换光标下的当前字符之后,将自动返回到常规模式。

请注意,只有包含+vreplace特性的Vim版本才支持虚拟替换模式。请使用:version命令,查看特性列表中是否已包括此项。

请使用以下命令,查看关于虚拟替换模式的更多帮助信息:

:help vreplace-mode

退出替换模式

按下ESC键即可离开替换模式,返回到常规模式。

命令小结
R进入替换模式
r进入单字符替换模式
gR进入虚拟替换模式
gr进入单字符虚拟替换模式

Ver: 2.0 | YYQ<上一篇 | 目录 下一篇>

星期五, 七月 05, 2019

VIM学习笔记 插入模式 (Insert Mode)

进入插入模式

在常规模式下执行i命令,或者使用:startinsert命令,可以进入插入模式。

灵活使用以下命令,可以直接在你想要的位置进入插入模式:

i在光标之前,进入插入模式
I在本行开头,进入插入模式
a在光标之后,进入插入模式
A在本行结尾,进入插入模式
o在本行之后新增一行,并进入插入模式
O在本行之前新增一行,并进入插入模式
s删除当前字符,并进入插入模式
S删除当前行中的所有文本,并进入插入模式

通过在i,I,a,A命令中增加数字前缀,可以批量插入内容,以避免重复输入。例如:输入50i*命令,然后点击Esc键,将一次性插入50个星号;使用25a*-Esc命令,则将一次性插入25个星号和短线的组合。

通过在小写s命令中增加数字前缀,可以替换多个字符。例如:希望将“www.vim.org”更改为其它网址,可以首先将光标移动到字符“v”处,然后执行3s命令,删除3个字符并进入插入模式输入其它域名。

通过在大写S命令中增加数字前缀,可以替换多行内容。例如:执行3S命令,将删除2行文本,并将第3行文本清空,然后进入插入模式。

在插入模式中编辑

在插入模式下,不能使用h,j,k,l键来移动光标,而必须使用光标移动键。使用以下命令,可以查看使用特殊快捷键进行移动和操作的说明:

:help ins-special-special

在插入模式下,可以使用各种快捷键来操作文本,而不需要首先退回到常规模式,然后再执行命令。例如:使用ctrl-U键,可以删除光标之前的所有文字;而ctrl-W键,则可以删除光标之前的一个字符;使用ctrl-T键,可以增加缩进;而ctrl-D键,则可以减少缩进。请使用以下命令,查看插入模式下快捷键的更多帮助信息:

:help ins-special-keys

使用CTRL-O快捷键,可以进入命令模式执行Vim命令,然后重新回到插入模式,以避免多次切换模式的繁琐。例如,首先使用CTRL-O进入命令模式,然后执行dw命令来删除单词,在执行完毕之后将重新回到插入模式。

退出插入模式

按下ESC键即可离开插入模式,返回到常规模式。建议您在输入完毕文字之后,立即退回到常规模式,以利用各种命令来提高编辑效率。

插入模式帮助信息

使用以下命令,可以查看关于插入模式的帮助信息:

:help insert.txt

使用以下命令,可以查看关于快速插入文本的更多技巧。比如:补全、重复插入、从另一行拷贝、插入一个寄存器内容、缩写插入特殊字符等等:

:help usr_24.txt

Ver: 2.0 | YYQ<上一篇 | 目录 下一篇>

星期一, 七月 01, 2019

VIM学习笔记 QuickFix

某些Vim命令,将会使用QuickFix列表在不同文件的不同位置间导航。例如:使用:make命令进行编译时,遍历编译错误;使用:vimgrep命令进行搜索时,遍历匹配结果;使用:helpgrep命令查找帮助信息时,遍历匹配的主题。

执行以下命令,将在当前文件夹中的所有HTML文件中,搜索字符串“options”:

:vimgrep options *.html

在屏幕底部,将显示查找到的第一个匹配结果:

quickfix_vimgrep_search

打开QuickFix窗口

输入:copen:cwindow命令,将在水平分隔窗口中,打开QuickFix列表以显示所有匹配结果:

quickfix_list

你可以使用ctrl+Wj快捷键,移动到QuickFix窗口。关于在多个窗口之间的跳转操作,请参阅窗口(Window)章节。

在QuickFix列表中导航

使用以下快捷键,可以在QuickFix列表中进行移动或搜索;当到达想要查看的列表项时,点击Enter键,将会打开匹配文件并精确定位到查找结果所处的位置。

k向上移动
j向下移动
Ctrl+b向上翻页pageUp
Ctrl+f向下翻页PageDown
/string向前(Forward)查找字符串string
?string向后(Backward)查找字符串string

注意,如果您在Windows和Mac下,无法利用Ctrl+f键进行翻页,那么请重新恢复Ctrl-F设置

你也可以使用以下命令,直接跳转到匹配文件的查找结果所处位置:

:cnext移动到下一个匹配处
:cprevious移动到上一个匹配处
:cfirst移动到第一个匹配处
:clast移动到最后一个匹配处

quickfix_list_enter

关闭QuickFix窗口

使用以下命令,可以关闭QuickFix窗口:

:cclose

使用:help quickfix命令,可以查看关于QuickFix的更多帮助信息。

Ver: 2.0 | YYQ<上一篇 | 目录 下一篇>