首页 > 系统服务 > 详细

四、vim 编辑器

时间:2019-07-11 15:09:52      阅读:91      评论:0      收藏:0      [点我收藏+]

vim编辑器

-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

vim自定义设置

? ? ? ?可以选择需要的功能添加至 ~/.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

四、vim 编辑器

原文:https://www.cnblogs.com/outsrkem/p/11168898.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!