标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2024-2677]   作者: 闲云野鸡 发表于: [2020-05-22]

本文共 [363] 位读者顶过

一、vim几种模式:

normal模式:进入vim不能编辑或者少按esc的不能编辑的模式;
编辑模式:通过insert(插入)、append(追加)或者少新建一行o等等可以编辑内容模式;[出自:jiwo.org]
命令模式:类似退出 :wq这种模式;
可视化模式:visual模式;(Visual模式一般用来块状选择文本)类似于我们的shift+方向键选择;
                    Normal模式下使用v进入visual选择
                    使用V选择行
                    使用ctrl+v进行方块选择

二、编辑写入相关:
1、编辑写入相关操作:
1)插入、追加、新建
小写
i---->insert(插入)
a---->append(追加)
o---->NEW a line below(当前光标新建下一行添加)
大写
I---->insert before line(在一行的开始第一个字符插入)
A---->append after line(在一行的最后一个字符追加)
O---->NEW a line above(当前光标新建上一行添加)
2)编辑的一些相关操作:
纠错操作(这个同时也适用shell终端)
ctrl+h删除上一个字符
ctrl+w删除上一个单词
ctrl+u删除当前行
终端shell一些好的操作:
ctrl+a移动到行首
ctrl+e移动到行末尾
ctrl+b向前移动
ctrl+f向后移动
2、保存退出相关操作
1)保存退出
先按esc
:wq---->(wirte&quit)
shift+ZZ---->(wirte&quit)
2)退出
先按esc
:q---->(quit)
3)强制退出
先按esc
:q!---->(强制quit)

三、快捷操作:

1、设置行号:
命令模式::set nu
2、分屏操作:
命令模式: :vs---->横向分屏(vertical split)
         :vp---->纵向分屏(split)
          想要退出对应的模式::q
3、全局替换:
命令模式::% s/java/c++/g ---->全局替换(%全部字符、s替换、将Java替换c++、g全局)
4、快速切换insert和normal模式:
insert切换normal模式---->使用ctrl+c代替Esc (但是可能会中断某些插件)或者ctrl+[
normal切换insert模式---->gi快速跳转到你最后一次编辑的地方并进入插入模式
5、vim移动快捷键:
普通的移动:
左(h) ,下(j) , 上(k) ,右(l) ,移动也不会让手指脱离主键盘区
6、在单词之间移动:
w/W移到下一个word/WORD开头。e/E 下一个word/WORD尾;
b/B回到上一个word/WORD开头,可以理解为backword;
word指的是以非空白符分割的单词,WORD以空白符分割的单词;
7、行间搜索快速移动:
使用f{char}可以移动到char字符上, t移动到char的前一个字符
如果第一次没搜到 ,可以用分号(;)/逗号(,)继续搜该行下一个/上一个
大写的F表示反过来搜前面的字符
8、Vim水平移动
0移动到行首第一一个字符, ^移动到第一个非空白字符
$移动到行尾,g_移动到行尾非空白字符
记住常用的0和$就可以满足日常需求了
9、Vim页面移动
翻页命令太多, 2/8定律,记住常见的就能满足需求
gg/G移动到文件开头和结尾,你可以使用ctrl+o快速返回
H/M/L跳转到屏幕的开头(Head) ,中间(Middle)和结尾(Lower)
Ctrl+u. ctrl+f..上下翻页. (upword/forward)。zz 把屏幕置为中间
10、Vim快速删除:
Vim在normal模式下使用x快速删除一一个字符
使用d (delete)配合文本对象快速删除一个单词daw (d aroundword)
d和x都可以搭配数字来执行多次
11、Vim快速修改:
常用有三个, r (replace) , C (change) , s(substitute)
normal模式下使用r可以替换一个字符。s替换并进入插入模式
使用c配合文本对象,我们可以快速进行修改
12、Vim查询:
使用/或者?进行前向或者反向搜索
使用n/N跳转到下一个或者上一一个匹配
使用*或者#进行当前单词的前向和后向匹配

6、在单词之间移动:
w/W移到下一个word/WORD开头。e/E 下一个word/WORD尾;
b/B回到上一个word/WORD开头,可以理解为backword;
word指的是以非空白符分割的单词,WORD以空白符分割的单词;
7、行间搜索快速移动:
使用f{char}可以移动到char字符上, t移动到char的前一个字符
如果第一次没搜到 ,可以用分号(;)/逗号(,)继续搜该行下一个/上一个
大写的F表示反过来搜前面的字符
8、Vim水平移动
0移动到行首第一一个字符, ^移动到第一个非空白字符
$移动到行尾,g_移动到行尾非空白字符
记住常用的0和$就可以满足日常需求了
9、Vim页面移动
翻页命令太多, 2/8定律,记住常见的就能满足需求
gg/G移动到文件开头和结尾,你可以使用ctrl+o快速返回
H/M/L跳转到屏幕的开头(Head) ,中间(Middle)和结尾(Lower)
Ctrl+u. ctrl+f..上下翻页. (upword/forward)。zz 把屏幕置为中间
10、Vim快速删除:
Vim在normal模式下使用x快速删除一一个字符
使用d (delete)配合文本对象快速删除一个单词daw (d aroundword)
d和x都可以搭配数字来执行多次
11、Vim快速修改:
常用有三个, r (replace) , C (change) , s(substitute)
normal模式下使用r可以替换一个字符。s替换并进入插入模式
使用c配合文本对象,我们可以快速进行修改
12、Vim查询:
使用/或者?进行前向或者反向搜索
使用n/N跳转到下一个或者上一一个匹配
使用*或者#进行当前单词的前向和后向匹配


-----------------------------分割线-------------------------------

下面是个人安装的vim和相关插件的记录:

MacVim下载地址:

https://github.com/macvim-dev/macvim/releases/tag/snapshot-161

下载插件:
创建目录:
mkdir ~/.vim/bundle/
克隆插件
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

配置和设置插件:

详细的配置文件


"*****************************用户自定义设置*******************************"
"--单词补全
" u [小写]                   --单步复原 [非插入模式]
" U [大写]                   --整行复原 [非插入模式]

" :set syntax=cpp            --手动选择语法高亮 [或 :set filetype=cpp]
" :%!xxd                     --转储二进制文件,以十六进制形式显示
" :%!xxd -r                  --还原二进制文件

"********************************设置快捷键*******************************"
" Ctrl+D              删除当前行
mapdda
imapdda

" Ctrl+N              显示缓冲区的下个文件并留在插入模式[插入模式]
map:confirm bnextA
imap:confirm bnextA



"********************************设置编码*******************************"
"设置换行编码
:set fileformats=unix,dos,mac

"设置Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等
set encoding=utf-8

"设置文件编码
if has("win32")
set fileencoding=chinese
else
set fileencoding=utf-8
endif

"Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式
"并把fileencoding设置为探测出的编码方式
set fileencodings=ucs-bom,utf-8,chines

" 解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

" 解决consle输出乱码
language messages zh_CN.utf-8

"********************************基本设置******************************"


colorscheme desert           " 着色模式:灰色背景
set guifont=Monaco:h14

set tabstop=4                " 设置tab键的宽度
set shiftwidth=4             " 换行时行间交错使用4个空格
set autoindent               " 自动对齐
set backspace=2              " 设置退格键可用
set cindent shiftwidth=4     " 自动缩进4空格
set smartindent              " 智能自动缩进
set ai!                      " 设置自动缩进
set nu!                      " 显示行号
set showmatch                " 显示括号配对情况
set mouse=a                  " 启用鼠标
set ruler                    " 右下角显示光标位置的状态行
set incsearch                " 查找book时,当输入/b时会自动找到
set hlsearch                 " 开启高亮显示结果
set incsearch                " 开启实时搜索功能
set nowrapscan               " 搜索到文件两端时不重新搜索
set nocompatible             " 关闭兼容模式
set cursorline               " 突出显示当前行
set hidden                   " 允许在有未保存的修改时切换缓冲区
set list                     " 显示Tab符,使用一高亮竖线代替
set listchars=tab:\|\        " 显示Tab符,使用一高亮竖线代替
set noswapfile               " 设置无交换区文件"
set writebackup              " 设置无备份文件
set nobackup                 " 设置无备份文件
set autochdir                " 设定文件浏览器目录为当前目录
set foldmethod=syntax        " 选择代码折叠类型
set foldlevel=100            " 禁止自动折叠
set laststatus=2             " 开启状态栏信息
set cmdheight=2              " 命令行的高度,默认为1,这里设为2
set showtabline=2            " 设置默认显示标签
set clipboard+=unnamed       " 与系统公用剪贴板
set autoread                 " 当文件在外部被修改,自动更新该文件
set scrolloff=5              " 设定光标离窗口上下边界 5 行时窗口自动滚动
set guioptions-=T            " 去掉上方工具栏
set autochdir                " 自动切换到当前目录"
set autoread                 " 自动检测并加载外部对文件的修改"
set autowrite                " 自动检测并加载外部对文件的修改"
set showcmd                  " 命令栏显示命令 "
set ignorecase smartcase     " 搜索时智能忽略大小写
syntax enable                " 打开语法高亮
syntax on                    " 开启文件类型侦测
if has("gui_running")
    "winpos 20 20            " 指定窗口出现的位置,坐标原点在屏幕左上角
    "set lines=20 columns=90 " 指定窗口大小,lines为高度,columns为宽度
    "set guioptions-=m       " 隐藏菜单栏
    "set guioptions-=T       " 隐藏工具栏
    "set guioptions-=L       " 隐藏左侧滚动条
    "set guioptions-=r       " 隐藏右侧滚动条
    set guioptions+=b        " 显示底部滚动条
    set nowrap               " 设置不自动换行
endif

"*****************************设置状态栏*************************************"

let &statusline=' %t %{&mod?(&ro?"*":"+"):(&ro?"=":" ")} %1*|%* %{&ft==""?"any":&ft} %1*|%* %{&ff} %1*|%* %{(&fenc=="")?&enc:&fenc}%{(&bomb?",BOM":"")} %1*|%* %=%1*|%* 0x%B %1*|%* (%l,%c%V) %1*|%* %L %1*|%* %P'

"******************************* 引号 && 括号自动匹配*******************************"

:inoremap ( ()i
:inoremap )=ClosePair(')'):inoremap { {}i
:inoremap }=ClosePair('}'):inoremap [ []i
:inoremap ]=ClosePair(']'):inoremap < <>i
:inoremap >=ClosePair('>'):inoremap " ""i
:inoremap ' ''i
:inoremap ` ``i

function ClosePair(char)
    if getline('.')[col('.') - 1] == a:char
        return "\"
    else
        return a:char
    endif
endf
"配置插件
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
 
Plugin 'gmarik/Vundle.vim'
Plugin 'scrooloose/nerdtree'

call vundle#end()

" NerdTree才插件的配置信息
""将F2设置为开关NERDTree的快捷键
map:NERDTreeToggle""修改树的显示图标
let g:NERDTreeDirArrowExpandable = '+'
let g:NERDTreeDirArrowCollapsible = '-'
""窗口位置
let g:NERDTreeWinPos='left'
""窗口尺寸
let g:NERDTreeSize=30
""窗口是否显示行号
let g:NERDTreeShowLineNumbers=1
""不显示隐藏文件
let g:NERDTreeHidden=0


接下来直接执行

1:PluginInstall


评论

暂无
发表评论
 返回顶部 
热度(363)
 关注微信