vim
1、打开文件
vim +[n] file #打开一个文件并使光标处于第n行 若没有n默认为行尾
vim +/正则 file #以正则匹配打开一个文件,并使光标直接处于正则匹配的第一行
2、模式
命令模式
字符跳转 h,j,k,l
行首行尾跳转 ^跳转至行首的第一个非空白字符 0跳转至行首 $跳转至行尾
i,s,o编辑模式
视图模式
v 面向字符
V 面向整行
ctrl + v 面向整块
突出显示的文字可被删除d,复制y p,变更,过滤,搜索,替换等
:扩展命令模式
wq 写入并退出
X 加密
q 退出
q! 不存盘退出,即使更改都将丢失
rfilename 读文件内容到当前文件中
wfilename 将当前文件内容写入另一个文件
!command 执行命令
r!command 读入命令的输出
3、地址定界
:start_pos,end_pos CMD
# 具体第#行,例如2表示第2行
#,$ 从左侧#表示起始行,到右侧$表示结尾行
% 全文
/pattern/ 从当前行向下查找,直到匹配pattern的第一行,即:正则表达式
定界后跟cmd
d #删除
y #复制
w file #将范围内的行另存至指定文件中
r file #在指定位置插入指定文件中的所有内容
4、查找替换
s/要查找的内容/替换为的内容/修饰符 # / 可以使用# 或@ 来替代 以便替换类似 /etc等字符
修饰符
i#忽略大小写
g#全局替换,默认情况下,每一行只替换第一次出现
gc#全局替换,每次替换前询问
5、vim定制
配置持久化
.vimrc
# 行号
显示: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=unixset ts=4
简写 set ff=dos|unix
# Tab 用空格代替
启用:set expandtab
默认为8个空格代替Tab
禁用:set noexpandtab
简写:set et
# Tab用指定空格的个数代替
启用:set tabstop=#
# 指定4个空格代替Tab
简写:set ts=4
#设置缩进宽度
向右缩进命令模式>>
向左缩进命令模式<<
设置缩进为4个字符
set shiftwidth=4
# 设置文本宽度
set textwidth=65 (vim only)#从左向右计数
set wrapmargin=15#从右到左计数
# 设置光标所在行的标识线
启用:set cursorline,简写 set cul
禁用:set nocursorline
# 加密
启用: set key=password
禁用: set key=
# set 帮助
:help option-list
:set or :set all
# 自定义创建文件自动填充头部
set expandtab
set ignorecase
set cursorline
autocmd BufNewFile *.sh,*.py exec ":call SetTitle()"
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"#")
call setline(3,"#**********************************************************************************************")
call setline(4,"#Author: GUQUANHENG")
call setline(5,"#QQ: 982561159")
call setline(6,"#Date: ".strftime("%Y-%m-%d"))
call setline(7,"#FileName: ".expand("%"))
call setline(8,"#URL: ")
call setline(9,"#Description: The test script")
call setline(10,"#Copyright (C):".strftime("%Y")." All rights reserved")
call setline(11,"#*********************************************************************************************")
call setline(12,"")
endif
if expand("%:e") == 'py'
call setline(1,"#!/bin/python")
call setline(2,"#")
call setline(3,"#**********************************************************************************************")
call setline(4,"#Author: GUQUANHENG")
call setline(5,"#QQ: 982561159")
call setline(6,"#Date: ".strftime("%Y-%m-%d"))
call setline(7,"#FileName: ".expand("%"))
call setline(8,"#URL: ")
call setline(9,"#Description: The test script")
call setline(10,"#Copyright (C):".strftime("%Y")." All rights reserved")
call setline(11,"#*********************************************************************************************")
call setline(12,"")
endif
endfunc
autocmd BufNewFile * normal G
6、vim快捷键
字符间跳转:
h: 左
L: 右
j: 下
k: 上
#COMMAND:跳转由#指定的个数的字符
单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数
当前页跳转:
H:页首
M:页中间行
L:页底
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕底端行首行尾跳转:
^跳转至行首的第一个非空白字符
0跳转至行首
$跳转至行尾
行间移动:
#G或者扩展命令模式下
:#跳转至由第#行
G 最后一行
1G, gg 第一行
句间移动:
)下一句
(上一句
段落间移动:
}下一段
{上一段
命令模式翻屏操作
Ctrl+f向文件尾部翻一屏,相当于Pagedown
Ctrl+b向文件首部翻一屏,相当于Pageup
Ctrl+d向文件尾部翻半屏
Ctrl+u向文件首部翻半屏
标签:文件,set,启用,VIM,跳转,简写,替换
From: https://www.cnblogs.com/guquanheng/p/17878915.html