layout: article
title: “vim文本编译器”
vim文本编辑器
有三种模式: 命令模式 文本模式, 末行模式
vim命令大全 – 知乎 (zhihu.com)
命令模式
插入
i: 切换到输入模式,在光标当前位置开始输入文本。
a: 进入插入模式,在光标下一个位置开始输入文本。
o: 在当前行的下方插入一个新行,并进入插入模式。
I:在一行的开头添加文本
A: 在一行的结尾处添加文本
O: 在当前行的上方插入一个新行,并进入插入模式。
s: 删除当前光标处的字符并进入到插入模式
S: 删除光标所在处的行,并进入到插入模式
撤销操作
u: 撤销修改
Ctrl + r: 反撤销
删除
字符删除
x: 删除当前光标所在处的字符
X: 删除当前光标左边的字符
单词删除
dw: 删除一个单词(从光标处到空格)
daw: 无论光标在什么位置,删除光标所在的整个单词(包括空白字符)
diw: 删除整个单词文本,但是保留空格字符不删除
d2w: 删除从当前光标开始处的2个单词
d$: 删除从光标到一行末尾的整个文本
d0: 删除从光标到一行开头的所有单词
dl: 删除当前光标处的字符=x
dh: 删除当前光标左边的字符=X
行删除
dd: 删除当前光标处的一整行(剪切)
5dd: 删除从光标开始处的5行代码
dgg: 删除从光标到文本开头
dG: 删除从光标到文本结尾
D: 删除从光标到文本结尾
行合并
J: 删除一个分行符,将当前行与下一行合并
移动
h: 左
j: 下
k: 上
l: 右
行号G 跳转到第n行
gg: 文本开始
G: 文本结束
%: 在一个括号上面使用这一个, 跳转到另一半括号
0: 行首
$: 行尾
查找
*: 找到这一个符号出现的下一个位置
#: 这一个符号的前一个位置
格式化代码
gg=G
替换
r: 替换单个字符, 按一下再按一下需要的字符
复制
yy: 复制一行
粘贴
p: 有复制换行的时候在这一行的下一行粘贴, 没有的话是在这一点的后面
P: 这一行的前一行
看手册
K: 跳转到man手册里面, 默认第一卷匹配的
nK: 在第n卷里面找
查看宏定义
[d: 查看这一个的宏定义
退出
ZZ 保存退出
末行模式
进入
:
退出
ESC 两次
也可以执行一次末行命令
w: 保存
q: 退出
跳转
:行号
查找替换
/string 正向查找
?string 反向查找
设置高亮显示
:set hls
*按键将当前光标处的单词高亮显示,使用n浏览下一个查找高亮的结果
:s/old/new 将当前行的第一个字符串old替换为new
:s/old/new/g 将当前行的所有字符串old替换为new
:90s/old/new/g 将指定行的所有字符串old替换为new
:90,93s/old/new/g 将指定范围的行的所有字符串old替换为new
:%s/old/new/g 将文本中所有的字符串old替换为new
:%s/old/new/gc 依次替换每个字符串关键字
:%s/^struct/int/g 将所有以struct开头的字符串替换为int
回车以后: n: 下一个 N: 上一个
上一次, 下一次的命令
Ctrl p: 上一次
Ctrl n: 下一个
分屏
:sp 上下分屏(默认光标第一个屏幕)
Ctrl + ww: 换屏幕
:q 退出当前窗口
:qall 退出所有
:vsp 竖屏
执行命令
:!命令
直接执行这一个命令
在使用之前需要w保存一下
可视模式
进入
v :命令模式按v
选中区域删除
d: 选中按d
复制
y: 复制选中的区域
配置
{:.shadow}
{:.shadow}
配置文件
Vim—配置实用的.vimrc文件 – XNQC – 博客园 (cnblogs.com)
- 下面是我使用的没有使用插件的, 基本和这一个一样
"=========================================================================
"
"" DesCRiption: 适合自己使用的vimrc文件,for Linux/Windows, GUI/Console
"
""=========================================================================
syntax on "自动语法高亮
"winpos 5 5 " 设定窗口位置
"set lines=40 columns=155 " 设定窗口大小
"set nu " 显示行号
s服务器托管网et go= " 不要图形按钮
"color asmanian2 " 设置背景主题
set guifont=Courier_New:h10:cANSI " 设置字体
"syntax on " 语法高亮
"autocmd InsertLeave * se nocul " 用浅色高亮当前行
"autocmd InsertEnter * se cul " 用浅色高亮当前行
"set ruler " 显示标尺
set showcmd " 输入的命令显示出来,看的清楚些
"set cmdheight=1 " 命令行(在状态行下)的高度,设置为1
"set whichwrap+=,h,l " 允许backspace和光标键跨越行边界(不建议)
"set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离
set novisualbell服务器托管网 " 不要闪烁(不明白)
"set statusline=%F%m%r%h%w [FORMAT=%{&ff}] [TYPE=%Y] [POS=%l,%v][%p%%] %{strftime("%d/%m/%y - %H:%M")} "状态行显示的内容
"set laststatus=1 " 启动显示状态行(1),总是显示状态行(2)
set foldenable " 允许折叠
set foldmethod=manual " 手动折叠
"set background=dark "背景使用黑色
set nocompatible "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
" 显示中文帮助
if version >= 603
set helplang=cn
set encoding=utf-8
endif
" 设置配色方案
"colorscheme murphy
"字体
"if (has("gui_running"))
" set guifont=Bitstream Vera Sans Mono 10
"endif
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936
set fileencoding=utf-8"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""新文件标题""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"新建.c,.h,.sh,.java文件,自动插入文件头
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
""定义函数SetTitle,自动插入文件头
func SetTitle()
"如果文件类型为.sh文件
if &filetype == 'sh'
call setline(1,"#########################################################################")
call append(line("."), "# File Name: ".expand("%"))
call append(line(".")+1, "# Author: XvSenfeng")
call append(line(".")+2, "# mail: 1458612070@qq.com")
call append(line(".")+3, "# Created Time: ".strftime("%c"))
call append(line(".")+4, "#########################################################################")
call append(line(".")+5, "#!/bin/bash")
call append(line(".")+6, "")
else
call setline(1, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+1, " > Author: XvSenfeng")
call append(line(".")+2, " > Mail: 1458612070@qq.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")
call append(line(".")+7, "using namespace std;")
call append(line(".")+8, "")
endif
if &filetype == 'c'
call append(line(".")+6, "#include")
call append(line(".")+7, "")
endif
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"键盘命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
nmap w :w!
nmap f :find
" 映射全选+复制 ctrl+a
map ggVGY
map! ggVGY
map gg=G
" 选中状态下 Ctrl+c 复制
vmap "+y
"去空行
nnoremap :g/^s*$/d
"比较文件
nnoremap :vert diffsplit
"新建标签
map :tabnew
"列出当前目录文件
map :tabnew .
"打开树状文件目录
map be
"C,C++ 按F5编译运行
map :call CompileRunGcc()
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!g++ % -o % :call Rungdb()
func! Rungdb()
exec "w"
exec "!g++ % -g -o % :w:make
"代码补全
set completeopt=preview,menu
"允许插件
filetype plugin on
"共享剪贴板
set clipboard+=unnamed
"从不备份
set nobackup
"make 运行
:set makeprg=g++ -Wall %
"自动保存
set autowrite
"set ruler " 打开状态栏标尺
set cursorline " 突出显示当前行
set magic " 设置魔术
set guioptions-=T " 隐藏工具栏
set guioptions-=m " 隐藏菜单栏
"set statusline= %,h,l
" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
" 通过使用: commands命令,告诉我们文件的哪一行被改变过
set report=0
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert: ,stl: ,stlnc:
" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=1
" 光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3
" 为C程序提供自动缩进
set smartindent
" 高亮显示普通txt文件(需要txt.vim脚本)
au BufRead,BufNewFile * setfiletype txt
"自动补全
:inoremap ( ()i
:inoremap ) =ClosePair(')')
:inoremap { {}O
:inoremap } =ClosePair('}')
:inoremap [ []i
:inoremap ] =ClosePair(']')
:inoremap " ""i
:inoremap ' ''i
function! ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return ""
else
return a:char
endif
endfunction
filetype plugin indent on
"打开文件类型检测, 加了这句才可以用智能补全
set completeopt=longest,menu
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net