当前位置 : 首页 » 文章分类 :  开发  »  VIM

VIM

VIM 使用笔记

vim官网
https://www.vim.org/

简明 VIM 练级攻略(Learn Vim Progressively的翻译)
https://coolshell.cn/articles/5426.html

Learn Vim Progressively
http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/

Vim 简明教程
http://blog.decaywood.me/2016/09/15/vim/

vim简明教程–半小时从入门到精通
https://blog.csdn.net/qccz123456/article/details/52677930

vim 默认使用 utf-8 编码


概述

vi编辑器有3种模式:命令模式、输入模式、末行模式。

普通模式(Normal mode)
vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下 esc 键或 Ctrl+[ 都可以返回命令模式。在命令模式中输入字母 i 就可以进入vi的输入模式编辑文件。在vim的Normal模式下,所有的键都是功能键。

插入模式(Insert mode)
在这个模式中我们可以编辑、修改、输入等编辑工作,在编辑器最后一行显示一个“–INSERT–”标志着vi进入了输入模式。当我们完成修改输入等操作的时候我们需要保存文件,这时我们需要先返回命令模式,在进入末行模式保存。

命令行模式(Command line mode)
在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。


普通模式(Normal mode)

剪切d/delete

用d命令删除的内容都会保存到剪切板,所以其实d命令是剪切命令

dd:删除光标所在行,并把删除的行存到剪贴板里
ndd:从当前行开始向下剪切n行,例如3dd就是从当前行开始向下剪切三行

dw:从光标处(包含光标下字符)剪切至下一个单词的开头(不包含开头字母),或者说从光标处剪切到当前单词末尾(若词尾有空格则包含空格)
de:从光标处(包含光标下字符)剪切至当前单词的末尾

daw:删除光标所在单词,包括单词前后的空白
diw:删除光标所在单词,不包括单词前后的空白

dp:剪切光标所在段落,不包括段落前后的空行,等于dip
dip:剪切光标所在段落,不包括段落前后的空行
dap:剪切光标所在段落,包括段落后的空行

d%:匹配括号剪切,当光标在{[()]}括号下且有匹配的括号时才能用

dl:剪切光标下的字符,等于x
d3l:从光标位置(包括光标位置)向右剪切3个字符

d$:从当前光标位置(包含光标下字符)剪切到行尾,等于大写D
D:从当前光标位置(包含光标下字符)剪切到行尾,等于d$
d^:从当前光标位置(不包含光标下字符)剪切到行首第一个非空字符位置
d0:从当前光标位置(不包含光标下字符)剪切到行首

dh:剪切光标前的单个字符(不包括光标下的字符)
d3h:从光标位置(不包括光标位置)向左剪切3个字符

d3B:从当前光标位置(不包括光标位置)反向剪切3个单词

dgg:从当前行(包括当前行)剪切到第一行,等于d1G
d1G:从当前行(包括当前行)剪切到第一行,等于dgg
dG:从当前行(包括当前行)剪切到最后一行
d5G:将当前行(包括当前行)至第5行(不包括它)剪切

dH:剪切从当前行至所显示屏幕顶行的全部行
dL:剪切从当前行至所显示屏幕底的全部行

dta:从当前光标位置(包括光标下字符)开始剪切直到遇到字符a(不包括字符a)

拷贝y/yank

yy:复制当前整行的内容到vi缓冲区
Y:大写,复制当前整行的内容到vi缓冲区
nyy:复制包括当前行在内的往下共n行,例如5yy就是复制5行

yw:从光标处(包含光标下字符)复制至下一个单词的开头(不包含开头字母),或者说从光标处复制到当前单词末尾(若词尾有空格则包含空格)
ye:从光标处(包含光标下字符)复制至当前单词的末尾
nyw:例如2yw就是复制两个单词

yaw:复制光标所在单词,包括单词前后的空白
yiw:复制光标所在单词,不包括单词前后的空白

yp:复制光标所在段落,不包括段落前后的空行,等于dip
yip:复制光标所在段落,不包括段落前后的空行
yap:复制光标所在段落,包括段落后的空行

y%:匹配括号复制,当光标在{[()]}括号下且有匹配的括号时才能用

yl:复制光标位置下的单个字符, ylp:复制光标下的单个字符并黏贴到光标后
y3l:从光标位置(包括光标位置)向右复制3个字符

y$:从当前光标位置(包含光标下字符)复制到行尾
y^:从当前光标位置(不包含光标下字符)复制到行首第一个非空字符位置
y0:从当前光标位置(不包含光标下字符)复制到行首

yh:复制光标前的单个字符(不包括光标下的字符), yhp:复制光标前的单个字符并黏贴到光标后
y3h:从光标位置(不包括光标位置)向左复制3个字符

y3B:从当前光标位置(不包括光标位置)反向复制3个单词

ygg:从当前行(包括当前行)复制到第一行,等于y1G
yG:从当前行(包括当前行)复制到最后一行
y1G:从当前行(包括当前行)复制到第一行,等于ygg
y5G:将当前行(包括当前行)至第5行(不包括它)复制

ggyG:复制全部,先gg到达第一行,再y复制,再G选择范围到最后一行

yH:复制从当前行至所显示屏幕顶行的全部行
yL:复制从当前行至所显示屏幕底的全部行

yta:从当前光标位置(包括光标下字符)开始复制直到遇到字符a(不包括字符a)

快速复制粘贴替换一个单词:光标移到要复制的单词上,yawyiw复制光标下的单词,然后移动光标到要替换的单词上,vawviw选中要替换的单词,p替换。

如果要复制第m行到第n行之间的内容,可以在末行模式中输入 m,ny 例如: 3,5y 复制第三行到第五行内容到缓存区。

更改c/change

c的意思是change,效果等于先d剪切再进入输入模式

cc:剪切当前行并进入插入模式
ncc:从当前行开始向下剪切n行后进入插入模式,例如3dd就是从当前行开始向下剪切三行后进入插入模式

cl:剪切光标所在字符并进入插入模式

cw,ce:剪切从光标所在位置(包括光标所在字符)到下一个单词词首的字符并进入插入模式

caw:剪切光标所在单词并进入插入模式

替换r/replace

比如现在就想修改一个字符,有没有更快的方法,别让我来回esc了,比如就想将vaid中的a改成o,这时可以使用替换
rx: 替换光标下的字符为x,不进入插入模式
R:r只是替换一个字符,输入R后可以一直在替换模式,直到按下esc退出为止

黏贴p/paste

p:小写p,粘贴到当前位置之后(下)
P:大写P,黏贴到当前位置之前(上)

单字符剪切x

x:剪切光标处的单个字符,等于dl
nx:例如3x剪切光标处向右的三个字符

撤销u

u:小写u,取消最近一次的操作,可以使用多次来恢复原有的操作
U:大写u,取消所有操作
Ctrl+R:可以恢复对使用u命令的操作


重复命令

.:英文点,可以重复上一次的命令
N<command>:重复某个命令N次,
例如
2dd:删除2行
3p:黏贴3次
100i重复 [Esc]:重复输入100次”重复 “,先在Normal模式下输入100表示重复次数,然后按i进入插入模式输入要重复的字符串,最后按Esc回到Normal模式使重复输入生效


大小写转换(gu/gU/~)

vim中大小写转化的命令是 gu 或者 gU
形象一点的解释就是小u意味着转为小写;大U意味着转为大写.
剩下的就是对这两个命令的限定(限定操作的行,字母,单词)等等

gggUG:整篇文章小写转化为大写
ggguG:整篇文章大写转化为小写
解释一下:ggguG分作三段gg gu G
gg=光标到文件第一个字符
gu=把选定范围全部小写
G=到文件结束

gUl:将当前光标下的字符设为大写
gul:将当前光标下的字符设为小写

guw, gue:将光标后(包括光标下字符)到单词词尾的字符转为小写
gu3w, gu3e:将光标后(包括光标下字符)到3个单词词尾的字符转为小写
gUw, gUe:将光标后(包括光标下字符)到单词词尾的字符转为大写
gU3w, gU3e:将光标后(包括光标下字符)到3个单词词尾的字符转为大写

guaw, guiw:将当前光标所在单词转为小写
gUaw, gUiw:将当前光标所在单词转为大写

1gU:从光标所在行 往下一行都进行小写到大写的转换
10gU,则进行从当前行开始的11行小写到大写的转换
以此类推,就出现其他的大小写转换命令
gU0:从光标所在位置到行首,都变为大写
gU$:从光标所在位置到行尾,都变为大写
gUG:从光标所在位置到文章最后一个字符,都变为大写
gU1G:从光标所在位置到文章第一个字符,都变为大写

~:将光标下的字母改变大小写
3~:将光标位置开始的3个字母改变其大小写
g~~:改变当前行字母的大小写
U:将可视模式下选择的字母全改成大写字母
u:将可视模式下选择的字母全改成小写


区域选择(i/a)

Text object selection
http://vimdoc.sourceforge.net/htmldoc/motion.html#object-select

<action>a<object><action>i<object>
a选择区域及前后的空白,i选择区域但不包含前后的空白
action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。
object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:”、 ‘、 )、 }、 ]。

例如
daw:删除光标所在单词,包括单词前后的空白
yaw:复制光标所在单词,包括单词前后的空白
vaw:选中光标所在单词,包括单词前后的空白
vap:选中光标所在段落,包括段落后的空白

diw:删除光标所在单词,不包括单词前后的空白
yiw:复制光标所在单词,不包括单词前后的空白
viw:选中光标所在单词,不包括单词前后的空白
vip:选中光标所在段落,不包括段落前后的空白

ci'ci"ci(ci[ci{ci< 分别更改这些配对标点符号中的文本内容
di'di"di(/dibdi[di{/diBdi< 分别删除这些配对标点符号中的文本内容
yi'yi"yi(yi[yi{yi< 分别复制这些配对标点符号中的文本内容
vi'vi"vi(vi[vi{vi< 分别选中这些配对标点符号中的文本内容


进入插入模式

i插入(光标前i/行首I)

i:在光标前插入
I:大写i,在当前行首插入

a插入(光标后a/行尾A)

a:在光标后插入
A:大写a,在当前行尾插入

o插入(行前O/行后o)

o:小写字母o,在当前行后插入一个新行并进入插入模式
O:大写字母O,在当前行前插入一个新行并进入插入模式


可视化选择v

自由选择v

v:按v开始可视化选择
用hjkl或方向键、0或$、或其他光标移动方法来移动光标
对选中区域进行操作:例如x删除、d剪切、y拷贝、c修改、r替换、u改小写、U改大小

快速选中光标下的单词:直接在单词上vawviw即可

按行选择Shift+v

V:大写v,或shift+v,开始按行选择
上下移动光标进行选择
对选中区域进行操作:例如x删除、d剪切、y拷贝

按列选择Ctrl+v(Ctrl+q)

ctrl+v:开始列选择
在 Windows 版本的 Vim 中,键组合 ctrl-v通常被映射为文本粘贴,所以 Window 版的 Vim 的纵向编辑模式由 ctrl-q启动
用hjkl或方向键、0或$、或其他光标移动方法来移动光标
对选中区域进行操作:例如x删除、d剪切、y拷贝

按区域选择a/i

vaw:选中光标所在单词,包括单词前后的空白
viw:选中光标所在单词,不包括单词前后的空白

vap:选中光标所在段落,包括段落后的空白
vip:选中光标所在段落,不包括段落前后的空白

在所有行的选中区域前/后插入(I/A)

可以按行选择,选择多行后,按I在所有行首插入,A在所有行尾插入
也可以按列选择,选择好多行的指定列块范围后,按I在所有行的选中区域前插入,A在所有行的选中区域后插入

把所有选中行串接为一行J

J:大写j,可视化选择多行后,按J把所有的行连接起来变为一行

在所有行尾插入逗号并合并为一行

我们进行 Excel 转 sql 语句时经常会有这种操作:从Excel中复制出一列id,需要在所有id后加一个英文逗号组成sql的 in 范围语句内容,然后最好再合并成一行以节省空间。
在使用vim之前我多数是用 UltraEdit, NotePad++, Atom 这类文本编辑器的列快编辑功能,使用vim后,可以非常方便的完成这个操作:
Shift+v 或者大写V进入按行选择,选择想要编辑的多行。如果想选择所有行,可以gg Shift+v G快速选择:gg跳到文档第一行,shift+v按行选择,G跳到文档最后一行即可。
Shift+a 或者大写A或shift+a在选中的所有行尾插入,之后输入逗号,按esc退出插入模式
Shift+j 或者大写J把选中的多行合并成一行


移动光标

Vim中如何快速进行光标移动?
https://harttle.land/2015/11/07/vim-cursor.html

行内移动

行首0/^行尾$/g_

0:数字零,到行头
^:到本行第一个非空字符的位置(所谓空字符就是空格,tab,换行,回车等)
$:到本行行尾
g_:到本行最后一个非空字符的位置。

行内字符搜索f/t

fa:到本行下一个为a的字符处,例如 f# 到下一个为 # 的字符
Fa:到本行上一个为a的字符处,a可换为其他字符
ta:到本行下一个字符a的前一个字符处,a同样可换为其他字符
Ta:到本行上一个字符a的后一个字符处,a同样可换为其他字符
3fa:到本行光标后第3个a处

上下左右hjkl

hjkl:使用hjkl代替箭头移动光标,h左,j下,k上,l右
hjkl命令前都可以加数字前缀,比如
2j:向下移动2行
2h:向左移动2个字符

按行移动(g/G)

gg:到第1行
G:到最后一行
nGngg:到第n行,例如30G到第30行
:n:到第n行,例如:30到第30行
n%:跳转到文档的n%位置,例如 50% 跳转到文章正中间

按单词移(w/e/b/ge)

w:移动光标到下一个单词的词首。
e:移动光标到当前单词末尾,如果当前光标位置就是词尾则移动到下一个单词的词尾。
b:移动光标到当前单词词首,如果当前光标位置就是词首则移动到上一个单词的词首。
ge:移动光标到上一个单词的词尾。

3w:移动到向后第3个单词的词首(相当于按3次w)。

W:移动光标到下一个单词(以空白分隔)的开头。
E:移动光标到下一个单词(以空白分隔)的结尾。

小写的w,e,b认为单词由字母、数字和下划线组成,即程序变量
大写的W,E,B以空白(空格、回车、table)来分隔单词,一次可以移动的更远。

按区域移动

{和}是对段落进行跳转开头/结尾, (和)是针对一个句子的开头/结尾. [[和]]则是对函数的跳转开头和结尾

Ctrl+o/i

当使用命令让光标跳转到某个特定位置时,vim 会记住每次光标所在位置的变化,并且可以在这些位置之间跳转,把这些位置看做一个序列的话,ctrl+o向后跳,ctrl+i向前跳
Ctrl+o 回到光标上次所在位置
Ctrl+i 回到光标下次所在位置

相对屏幕移动

Ctrl+f/b 向前/后翻页

Ctrl+f:向下翻页
Ctrl+b:向上翻页

Ctrl+d/u 向前/后翻半页

ctrl-d 向下半页
ctrl-u 向上半页

Ctrl+y/e 逐行滚动

Ctrl+e:逐行向下滚动
Ctrl+y:逐行向上滚动

H/M/L移动光标到屏幕顶部/中间/底部

H:移动到屏幕的首行
L:移动到屏幕的尾行
M:移动到屏幕的中间

zt/zz/zb移动光标所在行到屏幕顶部/中间/底部

zt:置顶当前行,通常用来查看完整的下文,比如函数、类的定义。
zz:将当前行移到屏幕中部
zb:将当前行移到屏幕底部

匹配括号%

%:匹配括号移动,包括 (, {, [
注:你需要把光标先移到括号上

匹配单词#*

*:匹配光标当前所在的单词,移动光标到下一个匹配的单词
#:匹配光标当前所在的单词,移动光标到上一个匹配的单词

/向后查找?向前查找

/pattern:向后查找pattern,回车后光标到达匹配处,按n到下一个,按N到上一个。
?pattern:向前搜索pattern,回车后光标到达匹配处,按n到更前一个,按N到后一个,和/向后搜索后的操作正相反

/\Cpattern/pattern \C:区分大小写查找pattern
/\cpattern/pattern \c:不区分大小写查找pattern

如果你输入 /int,你也可能找到 print
要找到以 int 结尾的单词,可以用:/int\>
\> 是一个特殊的记号,表示只匹配单词末尾。类似地,\< 只匹配单词的开头。
所以,要匹配一个完整的单词 int,只需:/\< int\>


命令模式(Command line mode)

:help command:h command:显示相关命令的帮助
例如 :h d, :h daw 会打开vim doc网页,可搜索任何可能的组合命令
http://vimdoc.sourceforge.net/


:e 放弃修改重新编辑

:e:放弃所有修改,从上次保存文件开始再编辑(重新载入文件,包含被其它编辑器修改过的)

:n 跳转到第n行

:N:到第N行,例如:30到第30行
:$:到最后一行


:s 字符串替换(参考sed命令)

:[range]s/pattern/string/[c,e,g,i]

range 指范围,默认范围是当前行。例如 1,7 表示第一行至第七行,1,$ 表示第一行至最后一行,也就是整篇文章。 % 表示目前编辑的文章,# 是前一次编辑的文章。
pattern 就是要被替換掉的字串,可以用 regexp 來表示。
string 将 pattern 替换为 string
c confirm,每次替换前会询问。
e 不显示 error。
i ignore 不分大小写。
g globe,全部替换,很常用。

示例
:s/hanmeimei/lilei/ 替换当前行第一个 hanmeimei 为 lilei
:s/hanmeimei/lilei/g 替换当前行所有 hanmeimei 为 lilei
:%s/hanmeimei/lilei/ (等同于 :g/hanmeimei/s//lilei/) 替换每一行的第一个 hanmeimei 为 lilei
:%s/hanmeimei/lilei/g (等同于 :g/hanmeimei/s//lilei/g) 替换每一行中所有 hanmeimei 为 lilei, 也就是替换当前文档内所有 hanmeimei 为 lilei


分屏

创建分屏
:split:sp:创建水平分屏
:vsplit:vsp:创建垂直分屏

切换分屏
ctrl+w+<dir>:dir就是方向,可以是 hjkl 或是 ←↓↑→ 中的一个,其用来切换分屏

关闭分屏
ctrl+w+c:关闭当前分屏


:set nu 显示行号

:set number:set nu:显示行号
:set nonumber:set nonu:不显示行号


:set paste 进入paste模式

有时候,复制文本(尤其是代码)到 Vim 会出现缩进、#号注释后自动全部变为注释 等格式错乱的问题,可以使用 paste 模式避免。
:set paste进入 paste 模式后,按 i 键进入插入模式,然后再粘帖,文本格式不会错乱了。但粘帖后还需要按 ESC 进入普通模式并执行 :set nopaste 结束 paste 模式


:set ic 搜索忽略大小写

:set ic:set ignorecase (ic是ignore case) 忽略大小写

:set noic 搜索不忽略大小写

:set noic:set noignorecase 不忽略大小写
:set ignorecase smartcase,如果模式全是小写,就是大小写不敏感的;如果模式里至少有一个大写字母,查找就成了大小写敏感的。可以这样理解,你不必键入大写字母,也能查找到含有大写字母的词,所以,你若键入大写字母,必然是因为你要大小写敏感的匹配。聪明!


:set encoding 查看设置vim编码

:set fileencoding 查看设置文件编码

:set fileencoding 查看文件编码格式

Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding (这些选项可能的取值请参考 Vim 在线帮助 :help encoding-names),它们的意义如下:

  • encoding Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。默认是根据你的 locale 选择。用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在 .vimrc 中改变它的值才有意义。你可以用另外一种编码来编辑和保存文件,如你的 vim 的 encoding 为 utf-8,所编辑的文件采用 cp936 编码,vim 会自动将读入的文件转成 utf-8(vim的能读懂的方式),而当你写入文件时,又会自动转回成 cp936(文件的保存编码)。
  • fileencoding Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
  • fileencodings Vim 自动探测 fileencoding 的顺序列表,启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。
  • termencoding Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。如果 vim 所在的 term 与 vim 编码相同,则无需设置。如其不然,你可以用 vim 的 termencoding 选项将自动转换成 term 的编码。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。

修改文件编码为utf-8避免中文乱码

:set encoding=utf-8 设置 vim 显示的文件编码为 utf-8,能解决查看中文乱码问题,但文件本身的编码格式不变。
:set fileencoding=utf-8 设置文件本身的编码格式

:set ff 查看设置文件格式

:set fileformat:set ff 直接执行可查看文件格式

:set ff=unix 设置文件格式为 unix 格式(用于将 Windows 的 dos 格式转换为 unix 格式)

bomb乱码<feff>

在 vim 中,当 set bomb 打开时,并且 fileencoding 是 utf-8 或 ucs-2 或 ucs-4 时,BOMB 标识会被写到文件开头。
可以用 set bomb? 查看 bomb 选项是否被打开,用 set nobomb 关闭 bomb 选项。
gcc 不能识别 bomb,编译时会报错,所以程序源文件中应该将 bomb 标识删掉。

set ff
fileformat[ff] (Vim 才有)
这是写入档案时置放行结束符EOL(end of line) 的形式
dos 是以 0x0D0A 来断行。
unix/linux 是以 0x0A 来断行。
mac 是以 0x0D 来断行。
unix LF only (each line ends with an LF character).
dos CRLF (each line ends with two characters, CR then LF).
mac CR only (each line ends with a CR character)

即,unix/linux使用 换行符;而dos/windows使用 回车+换行
dos格式读取unix格式文件没有问题。unix读取dos格式文件,会出现^M。它会使某些脚本执行出错,会让你看起来不爽。vim本身是会自动判断文件格式的。


插入模式(Insert mode)

自动提示
在 Insert 模式下,你可以输入一个词的开头,然后按 ctrl+p或是ctrl+n,自动补齐功能就出现了

在插入模式下,可以使用bash快捷键加快编辑速度

熟悉 Bash 快捷键来提高效率
https://harttle.land/2015/11/09/bash-shortcuts.html

Bash快捷键

Ctrl + a 移动光标到行首
Ctrl + e 移动光标到行尾

Alt + b 移动光标后退一个单词(词首)
Alt + f 移动光标前进一个单词(词首)

Ctrl + k 删除从光标到行尾
Ctrl + u 删除从光标到行首

熟悉 Bash 快捷键来提高效率
https://harttle.land/2015/11/09/bash-shortcuts.html

让你提升命令行效率的 Bash 快捷键 [完整版]
https://linuxtoy.org/archives/bash-shortcuts.html


vim键盘图


vim键盘图

.vimrc配置

在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。
为了更好的在vim下进行工作,需要手动设置一个配置文件:~/.vimrc
在启动vim时,当前用户根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置甚至脚本

vim打开vimrc文件:vim ~/.vimrc

"双引号开始的行为注释行,下同
"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set nocompatible
"显示行号
set number
"检测文件的类型
filetype on
"记录历史的行数
set history=1000
"背景使用黑色
set background=dark
"语法高亮度显示
syntax on
"下面两行在进行编写代码时,在格式对起上很有用;
"第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行;
"第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编
"写上很有用
set autoindent
set smartindent
"第一行设置tab键为4个空格,第二行设置当行之间交错时使用4个空格
set tabstop=4
set shiftwidth=4
"设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号
set showmatch
"去除vim的GUI版本中的toolbar
set guioptions=T
"当vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声
set vb t_vb=
"在编辑过程中,在右下角显示光标位置的状态行
set ruler
"默认情况下,寻找匹配是高亮度显示的,该设置关闭高亮显示
set nohls
"查询时非常方便,如要查找book单词,当输入到/b时,会自动找到第一
"个b开头的单词,当输入到/bo时,会自动找到第一个bo开头的单词,依
"次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词
"时,别忘记回车
set incsearch
"修改一个文件后,自动进行备份,备份的文件名为原文件名加"~"后缀
if has("vms") "注意双引号要用半角的引号" "
set nobackup
else
set backup
endif

我常用的~/.vimrc配置

set nocompatible
set number
filetype on
set history=1000
set background=dark
syntax on

"set autoindent
"set smartindent

set tabstop=4
set shiftwidth=4
set showmatch
set guioptions=T
set ruler
set incsearch

langsim/vim-pretty (同事开源的vim改进版)
https://github.com/langsim/vim-pretty


问题

E138: Can’t write viminfo file /root/.viminfo!

问题:
vim 保存退出时报错
E138: Can’t write viminfo file /root/.viminfo!
不影响保存,但每次报错。

解决:
进入 /root 目录,执行 rm -f .viminf*.tmp 删除全部 viminf 临时文件


上一篇 Spring-Cache

下一篇 SLF4J

阅读
评论
7.5k
阅读预计28分钟
创建日期 2019-01-16
修改日期 2022-10-26
类别

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论