1.BASH快捷键
在我们使用一些终端(例如:SecureCRT,Xshell、MObaXterm等)来操作Linux的过程中经常会用到一些快捷键来提升我们的工作效率。
#光标移动
Ctrl+a 命令行输入时光标跳转到行首=HOME键
Ctrl+e 命令行输入时光标跳转到结尾=END键
Ctrl+f 光标向右移动一个字符
Ctrl+b 光标向左移动一个字符
Ctrl+xx 光标在命令行首和光标之间移动
Alt+f 光标向右移动一个单词尾(以单词区分,不是以空格区分)
Alt+b 光标向左移动一个单词首
#命令终止、挂起
Ctrl+c kill当前进程
Ctrl+z 把当前进程转到后台运行,使用fg命令恢复
#清屏
Ctrl+l 清屏,相当于clear
#删除、剪切
Ctrl+u 剪切(删除)光标之前的内容(剪切的内容无法粘贴),在insert模式下可以删除空行
Ctrl+k 剪切(删除)光标之后的内容(剪切的内容无法粘贴)
Ctrl+w 剪切(删除)光标之前的一个单词(以空格区分)
Alt+d 从光标处向右删除至单词尾
Ctrl+y 粘贴或者恢复上次的删除(可以粘贴Ctrl+u、Ctrl+k、Ctrl+w剪切的内容)
Ctrl+h 剪切光标前面的一个字符(相当于退格)
Alt+Backspace 删除左边单词
Ctrl+d 删除光标处的一个字符
#字符换位
Ctrl+t 交换光标位置前的两个字符
#转换大小写
Alt+c 从光标处开始向右更改为首字母大写的单词
Alt+u 从光标处开始,将右边一个单词更改为大写
Alt+l 从光标处开始,将右边一个单词更改为小写
#反向搜索
ctrl+r 搜索之前的命令历史(反向搜索),多次ctrl+r 会一直向上搜索
Ctrl+g 从Ctrl+r的搜索历史命令模式中退出
Ctrl+p 重复上一次命令
Ctrl+m、Ctrl+o 等同于回车
Ctrl+o 执行当前命令,并重新显示本命令
Ctrl+m 执行当前命令,不重新显示本命令
#屏幕锁定、解锁
Ctrl+s 屏幕冻结
Ctrl+q 屏幕解冻
#复制粘贴
Ctrl+insert 复制命令行内容
Shift+insert 粘贴命令行复制的内容
Ctrl+d 退出当前shell命令行,如果是切换过来的用户,退出上一个用户
!! 执行上一条命令
#要重新调用前一个命令中最后一个参数
按完Esc 再按一次. 上一个命令的最后部分
Alt+. 上一个命令的后半部分
!$ 上一个命令的最后一个参数 例如:cat !$
Alt + # 提示输入指定字符后,重复显示该字符#次
2.VIM中快捷键
2.1 扩展模式
#命令模式 --> 插入模式
i insert, 在光标所在处输入
I 在当前光标所在行的行首输入
a append, 在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
#扩展命令模式
w 写(存)磁盘文件
wq 写入并退出
x 写入并退出
X 加密
q 退出
q! 不存盘退出,即使更改都将丢失
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 执行命令
r!command 读入命令的输出
#地址定界
格式::start_pos,end_pos CMD
# #具体第#行,例如2表示第2行
#,# #从左侧#表示起始行,到右侧#表示结尾行
#,+# #从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行
. #当前行
$ #最后一行
.,$-1 #当前行到倒数第二行
% #全文, 相当于1,$
/pattern/ #从当前行向下查找,直到匹配pattern的第一行,即:正则表达式
/pat1/,/pat2/ #从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/ #从指定行开始,一直找到第一个匹配pattern的行结束
/pat/,$ #向下找到第一个匹配patttern的行到整个文件的结尾的所有行
#地址定界后跟一个编辑命令
d #删除
y #复制
w file #将范围内的行另存至指定文件中
r file #在指定位置插入指定文件中的所有内容
#查找并替换
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用基本正则表达式模式
替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查
找到的整个内容
#修饰符
i #忽略大小写
g #全局替换,默认情况下,每一行只替换第一次出现
gc #全局替换,每次替换前询问
#行号
显示:set number,简写 set nu
取消显示:set nonumber, 简写 set nonu
#忽略字符的大小写
启用:set ignorecase,简写 set ic
不忽略:set noic
#自动缩进
启用:set autoindent,简写 set ai
禁用:set noai
#复制保留格式
启用:set paste
禁用:set nopaste
#显示Tab ^I和换行符 和$显示
启用:set list
禁用:set nolist
#高亮搜索
启用:set hlsearch
禁用:set nohlsearch 简写:nohl
#语法高亮
启用:syntax on
禁用:syntax off
#文件格式
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写 set ff=dos|unix
#Tab 用空格代替
启用:set expandtab 默认为8个空格代替Tab
禁用:set noexpandtab
简写:set et
#Tab用指定空格的个数代替
启用:set tabstop=# 指定#个空格代替Tab
简写:set ts=4
#设置缩进宽度
向右缩进 命令模式>>
#向左缩进 命令模式<<
#设置缩进为4个字符
set shiftwidth=4
#设置文本宽度
set textwidth=65 (vim only) #从左向右计数
set wrapmargin=15 #从右到左计数
#设置光标所在行的标识线
启用:set cursorline,简写 set cul
禁用:set nocursorline
#设置按回车键,新行不再自动添加"#"符号
setlocal formatoptions-=cro
#如果想以后都禁止,写入配置文件vim /root/.vimrc 添加下面这行:现在,每次启动vim编辑器时,自动注释功能都将被禁用。
autocmd FileType * setlocal formatoptions-=cro
#加密
启用: set key=password
禁用: set key=
#了解更多
:help option-list
:set or :set all
2.2 命令模式
#退出VIM
ZZ 保存退出
ZQ 不保存退出
#光标跳转
h: 左
L: 右
j: 下
k: 上
#COMMAND:跳转由#指定的个数的字符
#单词间跳转
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数
#当前页跳转
H:页首(Home)
M:页中间行(midele)
L:页底(last)
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕底端
30%:跳转到文件的30%处
Ctrl+G:显示当前位置,以及信息
#行首行尾跳转
^ 跳转至行首的第一个非空白字符
0 跳转至行首
$ 跳转至行尾
#行间移动
G 或者扩展命令模式下
:# 跳转至由第#行
G 最后一行
1G, gg 第一行
#句间移动
) 下一句
( 上一句
#段落间移动
} 下一段
{ 上一段
#命令模式翻屏操作
Ctrl+f 向文件尾部翻一屏,相当于Pagedown
Ctrl+b 向文件首部翻一屏,相当于Pageup
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
#字符编辑
x 剪切光标处的字符
10x: 连续删除10个字符
X:向前删除一个字符
#x 剪切光标处起始的#个字符
xp 交换光标所在处的字符及其后面字符的位置
~ 转换大小写(shift+~)
J 删除当前行后的换行符,就是将下面一行放到上面
nJ:连接后面的n行
空格键 向右移动一格
x 删除后面的字符 X 删除前一个字符 删除3个字符就是3x
dd:删除一行 D 删除到行尾
caw:改写单词 c 相当于 d 变为编辑模式
Ctrl+o:临时变成命令模式(一次而已)
:e!:放弃更改,然后相当于重新打开
:help:帮助,可用ZZ退出帮助窗口
#替换命令(replace)
r 只替换光标所在处的一个字符
R 切换成REPLACE模式(在末行出现-- REPLACE -- 提示),按ESC回到命令模式
#删除命令(delete)
d 删除命令,可结合光标跳转字符,实现范围删除
d$ 删除到行尾
d^ 删除到非空行首
d0 删除到行首
dw 删除下一个单词(从前往后删)
de 删除下一个单词(从前往后删)
db 删除下一个单词(从后往前删)
d1G:删除光标所在行至行首的数据
dG:删除光标所在行至行尾的数据
10dd:删除当前行开始的10行
#COMMAND
dd: 剪切光标所在的行
Ndd 多行删除(N代表数字)
D:从当前光标位置一直删除到行尾,等同于d$
#删除全部
dG: 删除全部(shift+gd) 此时光标必须在行首
:%d 删除全部(扩展模式)
ggVGd gg 表示移动光标到文件的开头(即第一行)。V是可视化模式中的面向行,也就是开始选择。G 表示移动光标到文件的末尾(即最后一行),从而选择整个文件 )
#复制命令(yank)
y 复制,行为相似于d命令
y$ 复制光标所在的那个字符到该行行尾的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y^ 复制光标所在的那个字符到该行行首非空字符的所有数据
ye
yw
yb
y1G:复制光标所在列到第一列的所有数据
yG:复制光标所在列到最后一列的所有数据
#COMMAND
yy:复制行
Nyy 复制多行
Y:复制整行
vim中Nyy可以复制光标后的N行。有时我们不容易得出行数,这时可以用做标记的方法来制定复制范围:
1. 在开始行上输入ma作一个标记a
2. 移动到结束行,输入y'a会复制当前行到标记a之间的文本。d'a会删除。(d单引号a)
或者是v进入可视模式,再NG跳转到相应行,y即可。
或者是v进入可视模式,再NG跳转到相应行,y即可。
将光标放在 { 处,然后输入v%就可以把大括号中内容选定;
如果光标放在第一个字母上,想删除到“(”为止,则输入dt(就可以了,t(的作用是跳到下一个"("前。
:10,20y 回车即可,相应的删除也是如此 :10,20d (此方法比上面两种方法更简单)
:10,20 m 30 把10行到20行的内容,剪切到30行之后
:10,20 co 30 把10行到20行的内容,复制到30行之后
#粘贴命令(paste)
p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
P 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
#改变命令(change)
命令 c 删除后切换成插入模式
c$
c^
c0
cb
ce
cw
#COMMAND
cc #删除当前行并输入新内容,相当于S
#cc
C #删除当前光标到行尾,并切换成插入模式,相当于c$
#查找
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
#撤消更改
u 撤销最近的更改,相当于windows中ctrl+z
#u 撤销之前多次更改
U 撤消光标落在这行后所有此行的更改
Ctrl-r 重做最后的“撤消”更改,相当于windows中crtl+y
. 重复前一个操作
#. 重复前一个操作#次
#高级用法
常见Command:y 复制、d 删除、gUU 变大写、guu 变小写
例如:
0y$ 命令
0 → 先到行头
y → 从这里开始拷贝
$ → 拷贝到本行最后一个字符
di" 光标在” “之间,则删除” “之间的内容
yi( 光标在()之间,则复制()之间的内容
vi[ 光标在[]之间,则选中[]之间的内容
dtx 删除字符直到遇见光标之后的第一个 x 字符
ytx 复制字符直到遇见光标之后的第一个 x 字符
#搜索
/string 查找string,回车后,按n键可以跳到下一个,N上一个,另外按/键后,按上下键可以找到以前查找的记录,同样的 :也有记录
?/string 同上,默认向上查找
#vim大小写转换
格式:
[开始位置] ———— 可以定位开始的位置,默认为光标所在位置
gu ———— 选择范围内转小写
gU ———— 选择范围内转大写
[结束位置] ———— 可以定位结束位置,可跟着类似w,6G,G,gg等定位操作
#注:以下命令无需进入命令行模式,vim打开文件直接键入命令即可
1、“字母”级别的大小写转换
如果想对光标所在位置的字母 进行大小写转换 ,直接 shift + ~
2、“单词”级别的大小写转换
对光标所在位置的整个单词进行大小写转换
guw 或 gue # 光标所在位置的单词转小写
gUw 或 gUe # 光标所在位置的单词转大写
gu3w 或 gu3e # 光标后面的3个单词转小写
gU3w 或 gU3e # 光标后面的3个单词转大写
3、“行”级别的大小写转换
guu # 光标所在的行转小写
gUU # 光标所在的行转大写
gu0 # 光标位置到行首转小写,不包含光标所在字母
gU0 # 光标位置到行首转大写,不包含光标所在字母
gu$ # 光标位置到行尾转小写,包含光标所在字母
gU$ # 光标位置到行尾转大写,包含光标所在字母
gu1G # 光标位置所在行到文章第一行转小写
gU1G # 光标位置所在行到文章第一行转大写
guG # 光标位置所在行到文章末尾转小写
gUG # 光标位置所在行到文章末尾转大写
4、“文件”级别的大小写转换
1GguG 或 ggguG # 整个文章全部转小写
1GgUG 或 gggUG # 整个文章全部转大写
注:[1G或gg]:定位开始位置,[gu或gU]:定义转小写或大写 [G]:定位结束位置
#vim替换快捷键
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于:g/vivian/s//sky/)替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于:g/vivian/s//sky/g)替换每一行中所有 vivian 为 sky
:%s/vivian/sky/g实现文件及的替换,把整个文件内的vivian替换为sky。
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 /):/oradata/apras/替换成/user01/apras1/
Ctrl+G:显示当前位置
%:跳到相对应的括号上,编程时常用,(),{},<>,[]
33G:跳转到33行 此时按``可以返回到原来行(两遍反向单引号)
将光标放在 { 处,然后输入v%就可以把大括号中内容选定
fx 向右跳到本行字符x处(x可以是任何字符),f:搜索命令,小写时向后搜索(用来定位)如 fx:定位到下一个x上。用分号";"表示顺着查找下一个字符出现的位置,那么 ","表示反方向倒回去上一个; Fx:定位到上一个x上,";"前一个需要查找的字符,","表示反方向查找。";"顺着查找","反方向查找,这是相对而已的,因为f是查找下一个,那么反方向就是倒回去;F是查找上一个,反方向就是向右
$:移动到行尾 3$:移动到3行后的行尾
+:移到下一行的行首
-: 移到上一行的行首
2.3 可视化模式
v 面向字符,-- VISUAL --
V 面向整行,-- VISUAL LINE --
ctrl-v 面向块,-- VISUAL BLOCK --
配置方向键,或者hjkl使用
#在文件指定行的行首插入#
1、先将光标移动到指定的第一行的行首
2、输入ctrl+v 进入可视化模式
3、向下移动光标,选中希望操作的每一行的第一个字符
4、输入大写字母 I 切换至插入模式
5、输入 #
6、按 ESC 键
#删除一行中所选内容
1、先将光标移动到需要开始的地方
2、输入v(小写)
3、d
2.4 vim在同一个窗口中同时编辑多个文件
# 1.如果在终端中开没有打开vim,可以:
横向分割显示:
$ vim -o filename1 filename2
纵向分割显示:
$ vim -O filename1 filename2
# 2.如果已经用vim打开了一个文件,想要在窗口中同时再打开另一个文件:
横向分割显示:
:vs filename
纵向分割显示:
:sp filename
其中,vs可以用vsplit替换,sp可以用split替换。
如果finename不存在,则会新建该文件并打开。
# 3.关闭窗口
关闭光标所在的窗口:
:q 或 :close
关闭除光标所在的窗口之外的其他窗口:
:only
关闭所有窗口
:qa
# 4.切换窗口
打开了多个窗口,需要在窗口之间切换时:
ctrl + w w
即按住ctrl键,再按两下w键。
或者ctrl + w <h|j|k|l>
即按住ctrl键,按一次w键,再按一次表示方向的h或j或k或l,则光标会切换到当前窗口的 左|下|上|右 侧的窗口
# 1.使用Vim比较两个文件的内容
使用vim的比较模式打开两个文件:
vim -d file1 file2
或
vimdiff file1 file2
# 2.如果已经打开了文件file1,再打开另一个文件file2进行比较:
如果没有用vert命令,diffsplit则会分上下两个窗口。
如果已经用split方式打开了两个文件file1,file2,又想比较两文件的不同。
分别在两个窗口里面输入命令:
:diffthis
如果更改了某个窗口的内容,vim又没有自动更新diff检查,可以使用如下命令更新:
:diffupdate
定位到不同点:
[c 跳到前一个不同点
]c 跳到后一个不同点
在窗口间跳转:
ctrl-w w 跳到下一个窗口
ctrl-w h 跳到左侧窗口
ctrl-w l 跳到右侧窗口
ctrl-w j 跳到下方的窗口
ctrl-w k 跳到上方的窗口
合并文档:
dp 将差异点的当前文档内容应用到另一文档(diff put)
do 将差异点的另一文档的内容拷贝到当前文档(diff get)
上下文的展开和查看
比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数为3行,可以这样设置:
:set diffopt=context:3
可以用简单的折叠命令来临时展开被折叠的相同的文本行:
zo (folding open, z这个字母看上去比较像折叠的纸)
然后可以用下列命令来重新折叠:
zc (folding close
# 1.vim查看和修改二进制文件
vim打开二进制文件时会是乱码,我们可以在命令模式使用:%!xxd 来转换为16进制进行查看,可以使用%xxd -r恢复回来。
:%!xxd
xxd是linux的一个命令,vim可以通过”!”来调用外部命令,其功能就是进行十六进制的dump或者反之
#命令模式
* 查找下一个光标所在的单词,"#" 到与当前单词相同的上一个单词上, "*" 到与当前单词相同的下一个单词上
' 移动到上一次的修改行
fx 向右跳到本行字符x处(x可以是任何字符)
Fx 向左跳到本行字符x处(x可以是任何字符)
tx 和fx相同,区别是跳到字符x前
Tx 和Fx相同,区别是跳到字符x后
`` 上次光标停靠的行
:%s/str1/str2/g 替换每一行的 str1为 str2
:10,20s/str1/str2/g 替换从行10到行20之间的 str1为 str2
:10,$s/str1/str2/g 替换从行10到最后一行之间的 str1为 str2
:s/str1/str2/g 替换当前行的 str1为 str2
. 重复执行命令
:10,$ w test2.cpp 取行10到最后一行内容,保存到test2.cpp
:r class/User.hpp 读取文件中的内容,插入到当前行的后面
dw:删除一个单词(光标后部分) 不如:daw实用
db:删除单词前面部分。如果要删除整个单词(光标位于单词中间的话),可以 dbw\wdb
de:类似于dw,删除单词后面的部分(只删除到本单词结尾,dw会删除掉单词后面的空格) dE:删除的范围包括标号在内的单词结尾。
d/it:向后删除到it之前的位置(不删it)。 d?it:向前删除到it之前的位置(删除it)
dfi:向右删除第一个i的位置(包括i) dti:同dfi,只是不包括i
删除空行::%s/^\n$//g
e:相当于w,向后移动一个单词。不同的是,w移动到下一个单词的第一个字符上,e/E移动到单词最后一个字符上。 所以ea,可以给本单词追加内容。
e:移到单词的结尾
E:移到单词的结尾(忽略标点符号,如果有标点符号光标会在标点符号上)
d4w:删除4个单词
d$:删除当前光标到行尾
D:相当于d$
d^:删除当前光标至行首
dnw: 删除N个单词
dnj: 向下删除n行
dnk: 向上删除n行
d换成c效果是一样的,只是操作完会变成insert模式
C:相当于c$ 删除当前光标到行尾,然后切换成insert模式
s:相当于c,删除一个字符,然后切换成insert模式
ns:删除后面n个字符,并进入编辑模式。
S:相当于cc,删除当前行,然后切换成insert模式
r:替换当前字符,但不会进入insert模式
3r:把后面3个字符替换掉
v:进入Visual模式
V:进入可视行模式,比如 Vjjd 删除3行
Ctrl+v:可视块模式
P:粘贴至光标前
p:粘贴至光标后
3P:粘贴3次
"2p 粘贴最后第二次的删除的内容
yy:复制一行
yaw: 复制一个单词,光标在单词任意位置
ynw: 复制N个单词
ynj: 向下复制n行
ynk: 向上复制n行
{ 到前一个空行上
} 到下一个空行上
Ctrl+z:暂停vi,回到Unix提示符,再输入fg即可回到vi。
^回到行首,光标位于行首字母处;0回到行首,光标位于行首字母前。$回到行尾,光标位于行尾字母处。
nb:向前移动n个单词
nw:向后移动n个单词
相换两个相邻字母的位置:x、p
~:更改字母的大小写,同时光标进入到下一个字符。 n~:把后面n个字母的大小写状态改变。
U:会恢复一整行原先的面貌,即最原始的样子。
Y:相当于yy,不同于D与C的操作方法。
nr:替换后面n个字符。
nJ:合并下面的n行(从本行算起)。
ynl:向后复制n个字符。
e/E:到单词的结尾。
z,Enter:将光标所在行移动到屏幕顶部(同于zz)
z.:将光标所在行移动到屏幕中间
z-:将光标所在行移动到屏幕尾部
nz,Enter:将第n行移动到屏幕顶部,同样的,z. 与 z- 前也可以加数字。
在屏幕中移动:
H、M、L分别移动到屏幕的顶部、中间和尾部。
nH、nL 移动到距离屏幕顶部和顶部n行的位置。
Enter:到下一行的第一个字符
+:到下一行的第一个字符。
-:到上一行的第一个字符。
n|:移动到当前行的第n列
X:删除左边的字符,相当于<-键,x删除当前字符
nG跳转后,可使用``回到上一次的位置,''功能一样,不过只是回到前次位置所在行的开头,而不是确定的位置上
ctrl +n 自动补全 ctrl + p 也一样(在Insert的时候按下会代码提示)
#扩展模式
:e! 放弃更改,然后相当于重新打开
:ab con configuration 用con代替configuration
2.5 vim设置样式
vim /root/.vimrc
"set nu
syntax on
"set paste
"设置F2开启,平时不开启
set pastetoggle=<F2>
"只要是插入模式就开启,平时不开启
autocmd InsertLeave * set nopaste
autocmd InsertEnter * set paste
set ignorecase
set tabstop=2 "ts=4
set shiftwidth=2
set nohlsearch "取消高亮显示,但是光标依然会跳转
set expandtab "用空格代替tab
set backspace=indent,eol,start
set noautoindent nosmartindent nocindent "设置自动换行,根据文件类型确定换行格式,例如yaml
set listchars=tab:>-,eol:$,space:. "vim低版本会报错,这里使用的是vim 9.1
"set cursorline
autocmd FileType * setlocal formatoptions-=cro
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"#")
call setline(3,"#*******************************************************")
call setline(4,"#Author: xingyuyu")
call setline(5,"#Date: ".strftime("%Y-%m-%d"))
call setline(6,"#Filename: ".expand("%"))
call setline(7,"#Copyright (C): ".strftime("%Y")." All rights reserved")
call setline(8,"#********************************************************")
call setline(9,"")
endif
endfunc
autocmd BufNewFile * normal G
" 当退出 Vim 时自动保存光标位置
au BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
" 这将使 Vim 记住每个文件的上次编辑位置
set viminfo='10,\"100,:20,%,n~/.viminfo
# 查看一个模式是否是开启的
# 按下冒号,进入扩展模式,使用: set noexpandtab?只需在后面加上一个问号即可
:set noautoindent nosmartindent nocindent: 这条命令是用来关闭 Vim 中的几种自动缩进模式。在 Vim 中,缩进设置影响着编辑器如何处理新行的缩进。
autoindent: 这个选项会使得新的行自动继承前一行的缩进。关闭它(noautoindent)意味着新行不会自动复制前一行的缩进。
smartindent: 这是一种更智能的自动缩进方式,主要用于编程,尤其是 C 语言。它会根据代码的结构来调整新行的缩进。关闭它(nosmartindent)意味着 Vim 不会尝试根据代码结构来自动设置缩进。
cindent: 类似于 smartindent,但更专门针对 C 语言和类似语法的编程语言。关闭这个选项(nocindent)意味着 Vim 不会自动调整 C 语言代码的缩进。
:set backspace=indent,eol,start: 这条命令设置了在插入模式下退格键的行为。这个设置接受几个值,决定退格键可以删除什么类型的内容。
indent: 允许退格键删除自动缩进。这意味着你可以用退格键删除由 autoindent、smartindent 或 cindent 等设置自动添加的空白字符。
eol: 允许退格键删除换行符,这使你能够用退格键合并两行。
start: 允许退格键删除插入模式开始以来添加的所有内容。也就是说,你可以一直退格到你开始插入时的位置,甚至更早。
这个设置的组合 (indent,eol,start) 提供了在插入模式下较为灵活的退格键行为,允许你删除几乎所有你在插入模式下可能创建的内容。。
set nocompatible "去掉有关vi一致性模式,避免以前版本的bug和局限
set nu! "显示行号
set guifont=Luxi/Mono/9 "设置字体,字体名称和字号
filetype on "检测文件的类型
set history=1000 "记录历史的行数
set background=dark "背景使用黑色
syntax on "语法高亮度显示
set autoindent "vim使用自动对齐,也就是把当前行的对齐格式应用到下一行 自动缩进
set cindent "cindent是特别针对C语言语法自动缩进
set smartindent "依据上面的对齐格式,智能的选择对齐方式,对于类似C语言编写上有用
set tabstop=4 "设置tab键为4个空格,
set shiftwidth=4 "设置当行之间交错时使用4个空格 set ai! "设置自动缩进
set showmatch "设置匹配模式,类似当输入一个左括号时会匹配相应的右括号
set guioptions-=T "去除vim的GUI版本中得toolbar
set vb t_vb= "当vim进行编辑时,如果命令错误,会发出警报,该设置去掉警报
set ruler "在编辑过程中,在右下角显示光标位置的状态行
set nohls "默认情况下,寻找匹配是高亮度显示,该设置关闭高亮显示
set incsearch "在程序中查询一单词,自动匹配单词的位置;如查询desk单词,当输到/d时,会自动找到第一个d开头的单词,当输入到/de时,会自动找到第一个以ds开头的单词,以此类推,进行查找;当找到要匹配的单词时,别忘记回车
set backspace=2 "设置退格键可用
0 Comments