资讯

展开

VIM学习笔记

作者:快盘下载 人气:

VIM 学习笔记

初识VIM

第一次接触VIM 应该是在刚接触 UBUNTU 的时候。当时;按照网站上的教程;安装了vim 工具。打开 vim 后;一脸懵;输入文字;发现没有任何反映;有时候偶尔输入一两个字母;也找不到规律;只是看到光标奇怪的跳动;文字奇怪的变化。

VIM的简单操作

后来;慢慢了解到vim的一些简单操作: 打开vim后;按 “i” 可以进入编辑模式;此时可以正常输入要写入的信息;最后;按退出编辑模式;按下“: w q”退出vim。此后; 在终端中;我开始慢慢使用vim修改一些文件的内容;当然;仅仅是一些小修小改;如果遇到大面积改动的话;我还是更倾向于使用 VScode*或者其他 UI 编辑器。最主要原因还是因为;这些编辑器可以大面积复制和粘贴。

快捷键说明i在光标处进入插入模式I在行首进入插入模式a在光标后进入插入模式A在行尾进入插入模式o在下一行插入新行并进入插入模式O在上一行插入新行并进入插入模式gi进入到上一次插入模式的位置<esc>退出插入模式

VIM快捷建

当我看到 VIM 的一些快捷键操作的的时候;vim仿佛焕发了全新的光芒: 借助于Normal模式下的快捷建操作;可以对文档进行快速操作;比如: 按下 “x” 可以删除光标下的字符;“3x” 就可以从光标处连续删除3个字符;按下“dd”可以直接删除一整行内容……

缓存操作
快捷键说明:e <filename>新建buffer打开文件:bp切换到上一个buffer:bn切换到下一个buffer:bd删除当前buffer
窗口操作
快捷键说明:sp <filename>横向切分窗口并打开文件:vsp <filename>竖向切分窗口并打开文件<c-w>h跳到左边的窗口<c-w>j跳到下边的窗口<c-w>k跳到上边的窗口<c-w>l跳到右边的窗口<c-w>c关闭当前窗口<c-w>o关闭其他窗口:only关闭其他窗口
光标移动
快捷键说明h上下左右移动j上下左右移动k上下左右移动l上下左右移动0光标移动到行首^跳到从行首开始第一个非空白字符$光标移动到行尾<c-o>跳到上一个位置<c-i>跳到下一个位置<c-b>上一页<c-f>下一页<c-u>上移半屏<c-d>下移半屏H调到屏幕顶上M调到屏幕中间L调到屏幕下方:n跳到第n行w跳到下一个单词开头(标点或空格分隔的单词)W跳到下一个单词开头(空格分隔的单词)e跳到下一个单词尾部(标点或空格分隔的单词)E跳到下一个单词尾部(空格分隔的单词)b上一个单词头(标点或空格分隔的单词)B上一个单词头(空格分隔的单词)ge上一个单词尾%在配对符间移动, 可用于()、{}、[]gg到文件首G到文件尾fx跳转到下一个为x的字符Fx跳转到上一个为x的字符tx跳转到下一个为x的字符前Tx跳转到上一个为x的字符前;跳到下一个搜索的结果[[跳转到函数开头]]跳转到函数结尾
文本编辑
快捷键说明r替换当前字符R进入替换模式;直至 ESC 离开s替换字符;删除光标处字符;并进入插入模式;前可接数量;S替换行;删除当前行;并进入插入模式;前可接数量;cc改写当前行;删除当前行并进入插入模式;;同 Scw改写光标开始处的当前单词ciw改写光标所处的单词caw改写光标所处的单词;并且包括前后空格;如果有的话;ct,改写到逗号c0改写到行首c^改写到行首;第一个非零字符;c$改写到行末C改写到行末;同 c$;ci;改写双引号中的内容ci;改写单引号中的内容ci)改写小括号中的内容ci]改写中括号中内容ci}改写大括号中内容cit改写 xml tag 中的内容cis改写当前句子ciB改写’{};中的内容c2w改写下两个单词ct(改写到小括号前x删除当前字符;前面可以接数字;3x代表删除三个字符X向前删除字符dd删除当前行d0删除到行首d^删除到行首;第一个非零字符;d$删除到行末D删除到行末;同 d$;dw删除当前单词dt,删除到逗号diw删除光标所处的单词daw删除光标所处的单词;并包含前后空格;如果有的话;di;删除双引号中的内容di;删除单引号中的内容di)删除小括号中的内容di]删除中括号中内容di}删除大括号中内容diB删除’{};中的内容dit删除 xml tag 中的内容dis删除当前句子d2w删除下两个单词dt(删除到小括号前dgg删除到文件头部dG删除到文件尾部d}删除下一段d{删除上一段u撤销U撤销整行操作CTRL-R撤销上一次 u 命令J连接若干行gJ连接若干行;删除空白字符.重复上一次操作~交换大小写g~iw替换当前单词的大小写gUiw将单词转成大写guiw将当前单词转成小写guu全行转为小写gUU全行转为大写gg=G缩进整个文件=a{缩进光标所在代码块=i{缩进光标所在代码块;不缩进;{;<<减少缩进>>增加缩进==自动缩进CTRL-A增加数字CTRL-X减少数字p粘贴到光标后P粘贴到光标前v开始标记y复制标记内容V开始按行标记CTRL-V开始列标记y$复制当前位置到本行结束的内容yy复制当前行Y复制当前行;同 yyyt,复制到逗号yiw复制当前单词;;y复制当前选中到系统剪切板3yy复制光标下三行内容v0选中当前位置到行首v$选中当前位置到行末vt,选中到逗号viw选中当前单词vi)选中小括号内的东西vi]选中中括号内的东西viB选中’{};中的内容vis选中句子中的东西gv重新选择上一次选中的文字:set paste允许粘贴模式;避免粘贴时自动缩进影响格式;:set nopaste禁止粘贴模式;?yy复制当前行到寄存器 ? ;问号代表 0-9 的寄存器名称;?p将寄存器 ? 的内容粘贴到光标后;?P将寄存器 ? 的内容粘贴到光标前:registers显示所有寄存器内容:[range]y复制范围;比如 :20,30y 是复制20到30行;:10y 是复制第十行:[range]d删除范围;比如 :20,30d 是删除20到30行;:10d 是删除第十行ddp交换两行内容;先删除当前行复制到寄存器;并粘贴
文件操作
快捷键说明:w保存文件:w <filename>按名称保存文件ZZ保存文件;如果有改动的话;;并关闭窗口:e <filename>打开文件并编辑:saveas <filename>另存为文件:r <filename>读取文件并将内容插入到光标后:r !dir将dir命令的输出捕获并插入到光标后:close关闭文件:q退出:q!强制退出:wa保存所有文件:cd <path>切换Vim当前路径:new打开一个新的窗口编辑新文件:enew在当前窗口创建新文件:vnew在左右切分的新窗口中编辑新文件:tabnew在新的标签页中编辑新文件
使用外部程序
快捷键说明!告诉vim正在执行一个过滤操作!5Gsort<Enter>使用外部sort命令对1-5行文本排序!!对当前行执行过滤命令!!date<Enter>用;date;的输出代替当前行
宏录制
快捷键说明qa开始录制名字为a的宏q结束录制宏;a播放名字为a的宏100;a播放名字为a的宏100次:normal;a播放名字为a的宏直到自动结束
实用命令
快捷键说明/pattern从光标处向文件尾搜索 pattern?pattern从光标处向文件头搜索 patternn向同一方向执行上一次搜索N向相反方向执行上一次搜索*向前搜索光标下的单词#向后搜索光标下的单词:s/p1/p2/g替换当前行的p1为p2:%s/p1/p2/g替换当前文件中的p1为p2:%s/<p1>/p2/g替换当前文件中的p1单词为p2:%s/p1/p2/gc替换当前文件中的p1为p2;并且每处询问你是否替换:10,20s/p1/p2/g将第10到20行中所有p1替换为p2:%s/12/3/123/g将“12/3” 替换为 “123”;特殊字符使用反斜杠标注;:%s/ //g删除 DOS 换行符 ^M:g/^s*$/d删除空行:g/test/d删除所有包含 test 的行:v/test/d删除所有不包含 test 的行:%s/^/test/在行首加入特定字符(也可以用宏录制来添加):%s/$/test/在行尾加入特定字符(也可以用宏录制来添加):sort排序:g/^(.;)$ 1/d去除重复行(先排序):%s/^.{10}//删除每行前10个字符:%s/.{10}$//删除每行尾10个字符
帮助
快捷键说明h tutor入门文档h quickref快速帮助h index查询Vim所有键盘命令定义h summary帮助你更好的使用内置帮助系统h pattern.txt正则表达式帮助h eval脚本编写帮助h function-list查看VimScript的函数列表h windows.txt窗口使用帮助h tabpage.txt标签页使用帮助h tips查看Vim内置的常用技巧文档h quote寄存器h autocommand-events所有可能事件h write-plugin编写插件
其他
快捷键说明vim -u NONE -N开启vim时不加载vimrc文件vimdiff file1 file2显示文件差异vim -R filename以只读方式打开;阅读模式;

有了这些快捷键;VIM修改文件的速度大幅度提高;所以;vim成为了在终端下修改字符文件的一大利器。vim快捷指令有很多过于复杂;所以对于新手不太友好;只能慢慢练习;熟能生巧。而且;实际中很多跨文件操作;只依靠vim自身;很难实现。

VIM 参数配置

在之前的操作中;进入vim后;通常需要手动开启行号(即;在Normal模式下;输入;:set nu;);这显然不是最佳效果;所以;我开始了解vim配置文件。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 通用设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
let mapleader = ;,;      ; 定义<leader>键
set nocompatible         ; 设置不兼容原始vi模式
filetype on              ; 设置开启文件类型侦测
filetype plugin on       ; 设置加载对应文件类型的插件
set noeb                 ; 关闭错误的提示
syntax enable            ; 开启语法高亮功能
syntax on                ; 自动语法高亮
set t_Co=256             ; 开启256色支持
set cmdheight=2          ; 设置命令行的高度
set showcmd              ; select模式下显示选中的行数
set ruler                ; 总是显示光标位置
set laststatus=2         ; 总是显示状态栏
set number               ; 开启行号显示
set cursorline           ; 高亮显示当前行
set whichwrap;=<,>,h,l   ; 设置光标键跨行
set ttimeoutlen=0        ; 设置<ESC>键响应时间
set virtualedit=block,onemore   ; 允许光标出现在最后一个字符的后面

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 代码缩进和排版
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
set autoindent           ; 设置自动缩进
set cindent              ; 设置使用C/C;;语言的自动缩进方式
set cinoptions=g0,:0,N-s,(0    ; 设置C/C;;语言的具体缩进方式
set smartindent          ; 智能的选择对其方式
filetype indent on       ; 自适应不同语言的智能缩进
set expandtab            ; 将制表符扩展为空格
set tabstop=4            ; 设置编辑时制表符占用空格数
set shiftwidth=4         ; 设置格式化时制表符占用空格数
set softtabstop=4        ; 设置4个空格为制表符
set smarttab             ; 在行和段开始处使用制表符
set nowrap               ; 禁止折行
set backspace=2          ; 使用回车键正常处理indent,eol,start等
set sidescroll=10        ; 设置向右滚动字符数
set nofoldenable         ; 禁用折叠代码

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 代码补全
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
set wildmenu             ; vim自身命名行模式智能补全
set completeopt-=preview ; 补全时不显示窗口;只显示补全列表

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 搜索设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
set hlsearch            ; 高亮显示搜索结果
set incsearch           ; 开启实时搜索功能
set ignorecase          ; 搜索时大小写不敏感

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 缓存设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
set nobackup            ; 设置不备份
set noswapfile          ; 禁止生成临时文件
set autoread            ; 文件在vim之外修改过;自动重新读入
set autowrite           ; 设置自动保存
set confirm             ; 在处理未保存或只读文件的时候;弹出确认
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 缓存设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
set Mouse+=a
set   selection=exclusive
set   selectmode=mouse,key
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

经过配置之后的vim;就比较像一款编程工具了;首先;可以设置自己喜欢的颜色主题;这样;看代码更加方便。其次;行号不需要再手动开启;最主要的是;可以通过参数配置;开启鼠标;通过鼠标;跳转光标。也可以跟系统共用剪切板;将文档中的内容;复制到其他地方。

快捷键的重映射

在vim中;有些快捷键按起来比较困难;比如;复制选择区内容到剪切板(快捷键为 “ “;y ” ;没错;先按下shift键;再依次按下 ” ; 键;最后松开shift 按下 y 键 );这么复杂的按键组合;显然不适合常用;所以;就需要对按键组合进行重映射。

; 查看vimplus的help文件
nnoremap <leader>h :view ;let &l:modifiable=0 ~/.vimplus/help.md<cr>

; 打开当前光标所在单词的vim帮助文档
nnoremap <leader>H :execute ;:help ; . expand(;<cword>;)<cr>

; 重新加载vimrc文件
nnoremap <leader>s :source $MYVIMRC<cr>

; 安装、更新、删除插件
nnoremap <leader><leader>i :PlugInstall<cr>
nnoremap <leader><leader>u :PlugUpdate<cr>
nnoremap <leader><leader>c :PlugClean<cr>

; 分屏窗口移动
nnoremap <c-j> <c-w>j
nnoremap <c-k> <c-w>k
nnoremap <c-h> <c-w>h
nnoremap <c-l> <c-w>l

; 复制当前选中到系统剪切板
vmap <leader><leader>y ;;y

; 将系统剪切板内容粘贴到vim
nnoremap <leader><leader>p ;;p

重映射不仅可以映射某些按键组合;还可以映射某些自定义功能。在这些快捷键的加持下;vim的操作更加快捷

VIM 插件

让VIM功能更上一层楼的;是VIM的扩展插件;这些拓展插件;让使用者可以完全脱离鼠标;只用键盘;就可以完成所有工作。

既然要安装插件;那就需要有专门的程序区管理这些插件;当下;vim主要使用vim_plug的管理插件。

vim插件管理器

mkdir -p  ~/.vim/autoload/
cp plug.vim  ~/.vim/autoload/plug.vim

在vimawesome上有很多vim插件;使用者可以在该网站查找自己想要的插件。
常用的插件有以下几种;

taglist.vim    “标签列表(函数列表)
NERDTree.vim   ;目录树
OmniCppComplete.vim  ; 语法补全;不如 youcompleteme 功能强大
VimGDB.vim
LookupFile  ; 查找文件
snipMate  ; 模板操作
MRU  ;最经访问文件

VIM 辅助辅助软件

	#安装ctags
	sudo apt-get install universal-ctags
	#安装cscope
	sudo apt-get install cscope
	#安装vim-gtk,与系统共用剪切板
	sudo apt-get install vim-gtk
	
	sudo apt-get install xdotool
	
	sudo apt install  ack-grep

VIM新手推荐入门

新手在配置vim的过程中;会遇到各种各样的的问题;比如;快捷键冲突、奇奇怪怪的bug;甚至会出现和预想南辕北辙的情况。所以;比较推荐安装其他人配置好的vim, 等对 vim 足够熟悉后;再考虑组建适合自己的 vim

git clone https://github.com/chxuan/vimplus.git ~/.vimplus
cd ~/.vimplus
./install.sh

安装 markdown-preview

将Plug ;iamcco/markdown-preview.nvim;, { ;do;: { -> mkdp#util#install() }, ;for;: [;markdown;, ;vim-plug;]} 加入到vimrc中然后在vim里运行 :PlugInstall下载markdown-preview插件
安装npm sudo apt install nodejs npm , nodejs --version 有输出表示成功
运行 :call mkdp#util#install()
最后用vim打开个md文件;输入:MarkdownPreview看到预览则成功

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!