vim帮助文档总结2-提高部分

时间:2021-07-15 17:34:51   收藏:0   阅读:34

vim配置(usr_05.txt)

vim的配置选项和键盘映射关系都在一个名为vimrc的文件中。
:edit $MYVIMRC直接打开当前用户使用的vim配置文件。
:version显示vim版本信息,其中”user vimrc file"部分指定的是当前用户使用的vim配置文件。

如果创建新的vimrc文件,最好在第一行添加如下代码,可以在定制vimrc文件前初始化vim:
source $VIMRUNTIME/defaults.vim

插件

插件就是一个vim脚本文件,以.vim作为文件后缀名,在标准插件目录下的所有插件脚本都会在vim启动时候自动被加载。
插件有两种类型:全局插件(适用于所有种类的文件)和文件类型插件(仅适用于某一种文件类型的插件)。
添加插件的方法:获取一份拷贝并且放到正确的目录下。
添加插件文档的方法:把帮助文本文件,例如:doit.txt,放到~/.vim/doc目录下,然后执行命令:helptags ~/.vim/doc。之后,就可以调用帮助命令查看文档了:help doit
全局插件的位置:

文件类型插件的位置:$VIMRUNTIME/ftplugin。

配置选项的类型

常用的配置选项

:set backup使得在重写文件时候,让vim自动保存一个同名且带“~”前缀的备份。
:set undofile会在当前文件中保存多层级的撤销信息,使得关闭再打开文件后可以撤销关闭文件前的修改。
:autocmd FileType text setlocal textwidth=78当一行的文本长度达到78列时候,自动换行;这个命令包含两部分:

:set history=#指定vim保存的历史命令的个数和历史搜索模式的个数。例如::set history=200
:set ruler表示永远再右下角显示当前光标的位置。
:set showcmd表示在右下角显示未完成的命令。例如,正常模式下输入f,右下角会显示f,再输入e,右下角的f会消失。
:set wildmenu表示在用<Tab>键来补全命令时候,如果可能的命令多于一个,就在倒数第二行显示所有可能的命令。
:set display={"" | truncate | lastline | uhex}指定当屏幕的最后一行无法完全显示的时候,如何显示:

:set incsearch一边输入搜索字符串,一边高亮显示匹配情况。
:set nrformats=alpha,octal,hex,bin设置光标所在字符或单词可以识别的数值类型,按下CTRL-A键进行加法或CTRL-X进行减法运算。
:syntax on启动语法高亮显示功能。
:filetype plugin indent on打开三个智能特性:filetype、plugin和indent:

:map列出所有的命令映射。
:options打开一个新的窗口,一行一个地解释vim配置选项。
在设置vim配置选项时,加上&在选项后可以将其重新设置为默认值。例如::set iskeyword&
:set wrap设置将很长的一行折叠显示;:set sidescroll=#设置当滚动显示被折叠的文本时,往侧面滚动#个字符。
:set whichwrap=b,s,<,>,[,]设置移动光标时候允许移动到上一行末尾或下一行开头:

:set list^显示无法明显显示的字符,用\$表示换行符;
:set listchars=eol:$,tab:>-,trail:-设置用什么字符显示哪些不能明显显示的字符。
:set iskeyword=@,48-57,_,192-255设置哪些字符可以作为单词的一部分:

:set cmdheight=#设置在vim下方用#行显示消息,会挤占编辑区的空间,所以这是个需要妥协各个功能需求的选项。

语法高亮显示(usr_06.txt)

:syntax enable启用语法高亮显示。
语法高亮支持的语法插件在$VIMRUNTIME/syntax目录下。
不显示彩色的原因:

彩色显示有误现象:

:colorscheme evening设置名为evening的颜色主题。支持的颜色主题插件在$VIMRUNTIME/colors目录下。
:runtime syntax/colortest.vim打开新的窗口显示所有颜色组合。
:syntax clear临时关闭语法高亮功能,打开另个文件再回来,就会又重新启用语法高亮功能。
:syntax off关闭所有vim的buffer中的语法高亮功能。
:TOhtml在新的窗口中显示当前文本转换为html文件之后的样子,方便在浏览器里显示或打印。

编辑多个文本(usr_07.txt)

如果修改了当前文件,但是并没有保存修改,这时再切换文件会报错。
:write [filename]将当前文件的内容另存为名为filename的文件,如果没有指定filename则保存当前文件。
:set autowrite让vim自动保存每次对文件的修改。
:edit[!] {filename}打开名为filename的文件,同时放弃当前文件的任何未保存的修改;如果没有!则不打开文件,同时提示有修改没有保存。
:hide edit {filename}缓存当前文件的所有未保存的修改,同时打开名为filename的文件。
vim命令行中指定的文件名相关的命令:

CTRL+^在相邻的两个已打开的文件之间来回跳转。
`"光标停在上一次跳转离开当前文件时的位置。
`.跳转到当前文件上一次作出修改的位置。

标记

vim可以记录当前光标所在位置到vim预留的存储空间中,这些位置称为标记,用单个字母表示。
m<a-z>创建作用于当前文件的标记。
m<A-Z>创建作用于所有文件的标记。
marks [mark]查看名为mark的标记的位置;如果没有指定mark则是列出所有标记的位置。

寄存器

vim可以保存一些临时的文本或宏命令到vim预留的存储单元中,将来可以用于粘贴文本或回放宏命令,这些存储单元称为寄存器。
寄存器一半用单个小写字母表示,当用大写字母时候表示追加修改该寄存器。
"是将寄存器用于文本操作的命令。
"{reg}y{motion}motion移动跨过的文本拷贝到reg寄存器里;例如:"ayw把一个单词拷贝到a寄存器里。
"{reg}preg寄存器里的文本拷贝到当前光标所在位置。例如:"bpb寄存器里的文本拷贝到当前光标处。
"AY将当前行的文本追加到名为a的寄存器里。

其它

vim -r {filename}自动检测并恢复上次崩溃的文件。
vim -R {filename}以只读模式用vim打开名为filename的文件;如果试图修改会有警告信息,但是仍然可以修改;如果修改后想保存修改,需要用:w!来强制保存修改。
vim -M {filename}以只读模式用vim打开名为filename的文件,同时禁止修改和保存;用:set modifiable来允许修改;用:set write来允许保存。
:saveas {filename}将当前文件另存为名为filename的文件,同时在vim的buffer中,当前文件也被重命名为filename,同时也会在文件系统上创建该文件。
:file {filename}再vim的buffer中将当前文件另存为名为filename的文件,不会影响操作系统上的文件名;只有当保存后才会创建名为filename的文件。

分割窗口(usr_08.txt)

窗口

:[#] split [filename]在当前屏幕的上方新创建一个窗口来编辑名为filename的文件,这个新窗口有#行那么高,光标落在新窗口上;如果没有#则新窗口占当前窗口高度的一半;如果省略filename则两个窗口都显示当前文件的内容;如果窗口多于两个,并且没有指定#时候,新创建窗口后,所有窗口都会平分当前屏幕的高度。
CTRL-W w在多个窗口之间跳转。
:close关闭当前窗口,但是不会退出vim。
:only关闭其它窗口,只保留当前窗口。
:new新开一个空白窗口,不在里面打开任何文件。
[#]CTRL-W +当前窗口的高度增加#行;没有指定#时候只增加1行。
CTRL-W -当前窗口的高度减少#行;没有指定#时候只减少1行。
[#]CTRL-W _当前窗口的高度变成#行;没有指定#时当前窗口高度为一行。
:set winheight=#指定所期望的最小的窗口高度为#行。
:set winminheight=#硬性规定最小的窗口高度为#行。
:set equalalways指定新创建窗口时,所有窗口平分当前屏幕高度。
:vsplit类似:split,不同的是,新窗口创建在屏幕左边,而不是上面;vnew在屏幕右侧创建新的窗口,不打开任何文件。
CTRL-W <h | j | k | l | t | b>光标移动到左/下/右/上/左上/右下边窗口。
CTRL-W <K | H | J | L>将当前窗口移动到最上/右/下/左边窗口,同时宽度或高度占满整个屏幕。
:qall关闭所有窗口并退出vim,等同于:quit all:wall把所有窗口中对应的文件都保存;:wqall保存所有窗口文件并退出;:qall!不保存地强制退出。
vim -o one.txt two.txt three.txt在vim中打开三个文件,并将每一个文件显示在独立的一个窗口中;窗口高度等分屏幕高度;vim -O ...类似,窗口宽度等分屏幕宽度。
:all将vim命令行参数里指定的文件都显示出来,一个文件一个窗口。
CTRL-W CTRL-^创建新的窗口,在新的窗口中显示buffer中别的文件。
:set splitbelow设置vim默认的新窗口创建位置为当前窗口下方;:set splitright设置vim默认的新窗口创建位置为当前窗口右方。
在创建新窗口命令前用一些限定符来限定新窗口创建位置:

tab

:tabedit {filename}在新的tab中打开名为filename的文件,新tab的窗口全部覆盖当前窗口,只保留两个窗口的tab头部在顶端。
:tab split将当前文件在新的tab中打开。
gt在不同tab中切换。
:tabonly只保留当前tab,关闭其他tab。

文件对比

vimdiff {file1} {file2}用比较模式对比两个文件,文件的不同点由不同颜色高亮表示出来,大片内容相同的文本行被折叠。
:vertical diffsplit temp.txt~是在vim内部用对比模式对比文件。
zo打开折叠的文本行;zc关闭折叠的文本行;]c跳转到下一个有不同内容的行;[c跳转到上一个有不同内容的行。
:diffupdate更新高亮显示修改后的两个文件,使得修改后的效果可以显示。
dp当前光标所在文本块的内容不同时,将不同的文本块从当前窗口放置到另一窗口,并替换掉另一窗口中原有内容;:do将不同文本块从另一窗口放到当前窗口,并替换掉当前窗口原有的内容。

修改大量文本(usr_10.txt)

宏是指共同完成一个操作的、有顺序的一系列命令。
宏存放在vim的寄存器里,也就是说寄存器里存放的文本可以当成文本来使用,还可以当成正常模式下的命令来用。
q是和宏有关的命令。
录制宏分三步:

  1. q{reg}指定名为reg的宏,并开始录制宏命令包含的各种操作;
  2. 各种vim命令;
  3. q结束宏命令操作的记录,保存宏。

#@q{reg}把名为reg的宏播放#次,既是将该宏包含的vim各种操作命令重复#遍。
@@播放上次使用的宏(播放就是使用)。
qA{cmd}qcmd表示的一系列操作步骤追加到名为a的寄存器里。例如:qA/the<Enter>q

替换

:[range]substitute/from/to/[flags]搜索并替换文本。

global命令

[range]global/{pattern}/{command}range范围内,对于能匹配到pattern的行,应用command命令;command命令都是命令模式下的命令。例如::g+//+s/foo/bar/g

可视化块选择模式

$将可视化选择的文本块中的每一行都拓展到该行末尾,并且当上下移动时候也会默认直接选中到新行的末尾,同时如果新行更短的化可能会选中以前没有选中的行;h停止$的这种选中到行尾的效果。
I{string}<Esc>string表示的输入字符串插入到选择块中的每一行的选择开头处,块中包含着的空行和未选中的行不受影响。
O{string}<Esc>string表示的输入字符串插入到选择块中的每一行的选择结尾处,块中包含着的空行和未选中的行受影响:会插入空格保证结果string出现在每一行相同列。
c{string}<Esc>string表示的输入字符串替换选择块中的每一行的选中内容。
C{string}<Esc>string表示的输入字符串替换选择块中的每一行的选中开始处到该行结尾处间的内容。
~选中内容大小写反转;U选中内容变大写;u选中内容变小写。
>选中内容右移一个shift位置;<选中内容左移一个shift位置。
J选中内容包含的所有行变成一行,替换每一行的换行符、前置空白符和后置空白符为一个空格;gJ只删除换行符,保留前置空白符和后置空白符。

文件内容读写

:[range]read {filename}将名为filename的文件内容复制到当前文件range处。例如::10r temprange为0时候,复制到第一行(大多数命令不接受0作为行号)。
:{range}write {filename}将当前文件的range范围内的文本写入名为filename的文件中去;:write! {filename}强制覆盖式写文件;:write >> {filename}追加而不是覆盖。

gq{motion | text-object}把当前行到motiontext-object所跨过的文本行(不足一行按一行算)以textwidth指定的行宽进行格式化;gq是格式化命令;text-object例子有ap既一个段落,as一句话。
gU{motion}motion跨过的文本变大写;gu{motion}motion跨过的文本变小写;g~{motion}将motion跨过的文本大小写反转;guu将当前行的文本变小写;gUU将当前行的文本变大写;g~~将当前行的文本大小写反转。

!{motion}{program}motion所跨过的文本传给名为program的外部命令,并将program产生的输出替换掉这些文本;例如:!5jsort
!!{program}将当前行传给名为program的外部命令,并将program产生的输出替换当前行;例如:!!date
:[range]read !{program}program执行的结果复制到range指定行(没有range就是指当前行的下一行);例如::0read !ls
:{range}write !{program}range指定范围内的文本作为参数传给名为program的外部命令,并将结果显示在状态栏;例如:.,.+1write !wc

技巧(usr_12.txt)

搜索时候,\<表示单词起始位置,\>表示单词结束位置。
用反向引用来给特定文本换位置,例如:%s/\([^.]*\), \(.*\)/\2 \1/g可以将Last, First变成First Last
:{range}move #range范围内的行移动到第#行。
g<CTRL-G>统计整个文件的单词。
删除后置空白字符:%s/\s\+$/

原文:https://www.cnblogs.com/decentcan/p/14982787.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!