-rw-r--r--. 1 root root 1982 8月 2 2017 /etc/virc vi 配置文件
-rw-r--r--. 1 root root 1982 8月 2 2017 /etc/vimrc vim 全局配置文件
-rw-r--r--. 1 root root 1982 8月 2 2017 ~/.vimrc vim 用户配置文件,默认没有,需要手工建立
source ~/.vimrc 让配置文件立即生效,source 可用(.)代替,如 . /etc/vimrc
:q! 放弃修改,所用用户可用
:wq! 当没有写入权限时强制写入,只有 root 可用。
:wq 保存退出
ZZ 保存退出
a 在光标所在字符后插入
A 插入光标所在行行尾
i 在光标所在字符前插入
I 插入光标所在行行首
o 在光标下插入新行
O 在光标上插入新行
H 向左 gg 移动到文件头
L 向右 G 移动到文件尾
J 向下 ^ 移到行首
K 向上 $ 移到行尾
x 删除单个字符
nx 删除 n 个字符 dw 删除光标后一个字符串
dd 删除单行 D 光标后删除到行尾
ndd 删除单行
:m,nd 从 m 行删除到 n 行
dG 从光标所在行删除到文件尾
C 当前位置删除到行尾,且打开编辑模式
dw 当前位置删除一个字符串
yy 复制
nyy 复制 n 行
p 粘贴到光标下一行
P 粘贴到光标上一行
u 撤销
ctrl+r 反撤销
r 替换当前光标位置字符
R 从光标位置开始替换,ESC 键结束
/ 查找,n 下一个,N 上一个,
:noh 取消查找后的高亮
:r! 命令 把命令结果写在光标所在行
:r /etc/passwd 把/etc/passwd 文件内容载入到当前编辑的文件中
:1,10s/old/new/g 把 1 到 10 行的 old 替换为 new
:%s/old/new/g 把全文的 old 替换为 new(%代表全文)
:1,10s/^/#/g 在 1 到 10 行的行首加入#
1) 显示行号 :set nu
:set nonu
2) 颜色开关 :syntax off
:syntax on
3) 快捷键 :map ^P I#<ESC> 当按下 ctrl+p,在行首加入“#” “^P”需要 ctrl+V+P 输入
:map ^B ^x 当按下 ctrl+b,删除行首的一个字母,用于删除注释
4) 替换
:ab 原字符 目标字符
:ab abc ABC1234@qq.com
? ? ? ?可以选择需要的功能添加至 ~/.vimrc 打开注释使之生效。
" 让 vim 关闭所有扩展的功能,尽量模拟 vi 的行为。
set nocompatible
" 默认是8色的,开启256色支持
set t_Co=256
" 突出显示当前行,即横线
set cursorline
" 隐藏工具栏
set guioptions-=T
" 隐藏菜单栏
set guioptions-=m
" 设置在状态行显示的信息
set foldcolumn=0
" 不要使用vi的键盘模式,而是vim自己的
set nocompatible
" 语法高亮
set syntax=on
" 去掉输入错误的提示声音
set noeb
" Tab键的宽度
set tabstop=4
" 统一缩进为4
set softtabstop=4
" 历史记录数
set history=1000
" 禁止生成临时文件
set nobackup
" 禁止生成临时文件
set noswapfile
" 搜索忽略大小写
set ignorecase
" 搜索逐字符高亮
set hlsearch
" 输入搜索内容时就显示搜索结果
set incsearch
" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=1
" 光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3
" 输入的命令显示出来,看的清楚些
set showcmd
" 打开状态栏标尺
set ruler
" filetype on
" 开始折叠
" set foldenable
" 显示行号
" set number
" 通过使用: commands命令,告诉我们文件的哪一行被改变过
" set report=0
" 设置魔术
" set magic
" 设置当文件被改动时自动载入
" set autoread
" 代码补全
" set completeopt=preview,menu
" 允许插件
" filetype plugin on
" 共享剪贴板
" set clipboard=unnamed
" 从不备份
" set nobackup
" make 运行
" set makeprg=g++\ -Wall\ \ %
" 自动保存
" set autowrite
" set foldmethod=indent
" set foldlevel=3
" 在处理未保存或只读文件的时候,弹出确认
" set confirm
" 自动缩进
" set autoindent
" set cindent
" 把tabs转换成空格
" set shiftwidth=4
" 不要用空格代替制表符
" set noexpandtab
" 在行和段开始处使用制表符
" set smarttab
" 行内替换
" set gdefault
" 为C程序提供自动缩进
" set smartindent
" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位,鼠标选择)
" set mouse=a
" 为了使代码风格尽量保持一致,一般不允许在代码使用TAB符,而以4个空格代之。如下只在编辑c和cpp文件时实行这种设置了
" autocmd FileType c,cpp set shiftwidth=4 | set expandtab
" 在被分割的窗口间显示空白,便于阅读
" set fillchars=vert:\ ,stl:\ ,stlnc:" 允许backspace和光标键跨越行边界,方向键自动换行
" set whichwrap+=<,>,h,l
" 我的状态行显示的内容(包括文件类型和解码)
" set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
" set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
" 总是显示状态行
" set laststatus=2
" 命令行(在状态行下)的高度,默认为1,这里是2
" set cmdheight=2
" 状态栏定义
" set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)
" 映射全选+复制 ctrl+a
map <C-A> ggVGY
" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y
"新建.c,.h,.sh,.java文件,自动插入文件头
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
func SetTitle()
if &filetype == 'sh'
call setline(1, "#!/bin/bash")
call append(line("."), "# File Name: ".expand("%"))
call append(line(".")+1, "# Intro: *****")
call append(line(".")+2, "# mail: *****@163.com")
call append(line(".")+3, "# Created Time: ".strftime("%c"))
call append(line(".")+4, "#-------------------------------")
call append(line(".")+5, "")
else
call setline(1, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+1, " > Intro: *****")
call append(line(".")+2, " > Mail: *****@163.com")
call append(line(".")+3, " > Created Time: ".strftime("%c"))
call append(line(".")+4, " ************************************************************************/")
call append(line(".")+5, "")
endif
if &filetype == 'cpp'
call append(line(".")+6, "#include<iostream>")
call append(line(".")+7, "using namespace std;")
call append(line(".")+8, "")
endif
if &filetype == 'c'
call append(line(".")+6, "#include<stdio.h>")
call append(line(".")+7, "")
endif
endfunc
" 新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
原文:https://www.cnblogs.com/outsrkem/p/11168898.html