本文介绍的均为非常实用的vim使用技巧和配置技巧

内容from日常使用经验和网络

1. 索引工具ctags使用

参考:vim插件ctags的安装和使用_G_BrightBoy的专栏-CSDN博客

1.1 配置.vimrc

参考:强大的vim配置文件,让编程更随意 - ma6174 - 博客园

在启动vim时,当前用户根目录下的.vimrc文件会被自动读取

注意服务器的vimrc存放在etc/vim/vimrc目录,但不要试图修改它(没有权限)

在用户目录下添加.vimrc文件即可覆盖跟目录下的.vimrc配置

$vim ~/.vimrc"tags=tags 会递归向上寻找到第一个tags
set tags=tags;
set tags+=~/data/work/wifi/wpa_supplicant-2.6/src/tags;
set tags+=~/data/work/wifi/wpa_supplicant-2.6/wpa_supplicant;
set tags+=~/data/work/linux-3.10/tags;

1.2 生成ctags

服务器需要安装了ctags,这一点可以通过在某一目录下执行ctags命令验证

进入目录,执行ctags -R,会生成当前目录及所有子目录文件的索引tags文件

指定所选中的目录生成tags

ctags * -R kernel/kernel_sdk/ modules/

1.3 定义跳转

跳转至变量和函数的定义处

ctrl + ]

返回跳转前位置

ctrl + o/t

1.4 显示历史跳转路径

在分析代码路径时很有用

:tags

1.5 代码补全功能

参考:vim基础知识和常用命令_行者-CSDN博客

命令 功能
ctrl-p 上一个补全
ctrl-n 下一个补全
ctrl-e 停止补全并回到原来录入的文字

2. 头文件引用路径

2.1 默认头文件路径

默认查找库文件路径为: /usr/include/

//默认路径为  /usr/include/
#include <stdio.h>     //C标准库,用户空间调用
#include <linux/fs.h>  //内核编程可以引用的库
  1. C标准库(用户空间编程)直接存放在该路径下

  2. 驱动编程(内核空间编程)时引用的系统头文件库在默认路径下的linux文件夹中

  3. /usr目录存放用户目录、用户库等

2.2 头文件跳转

修改用户目录.vimrc

"默认路径 /usr/include
set path+=/usr/src/linux-headers-3.5.0-23/include/linux;
  • vim中光标指向头文件名,然后按g + f就可以了

  • 如# include <fcntl.h>,则光标定位到f处,按g + f就跳到fcntl.h中了

3. 开始使用vim

基本命令操作网址:Linux vi/vim | 菜鸟教程

3.1 在vim中纵向选择内容

  • 按住alt键,然后按下鼠标左键

    • 可以纵向选中内容,非常有用的小技巧,很多其他的编辑器也支持这一操作

3.2 复制 &粘贴 &撤销

yy        #复制整行
p         #粘贴
:reg      #查看剪贴板中的内容,vim是将复制的内容暂存到寄存器中
u         #撤销上一步的操作
Ctrl+r    #恢复上一步被撤销的操作

3.3 查找 &统计 &替换

:%s/from/to/g    #替换所有行的from字段为to字段
:%s/yes//gn      #查找当前文件yes出现的数量

3.4 显示当前文件路径

  • 在vim的底部显示当前打开文件的绝对路径

1          //先按1
Ctrl + G   //然后同时按下Ctrl G

3.5 批量缩退、缩进

  • 命令模式下,输入“行号1,行号2>”,为统一缩进一个tab键;<为缩退

  • “行号1,行号2»”缩进两个tab键;但是是以4个空格代表一个tab键的

:1,9>>     //1到9行缩进两个tab键

3.6 选中连续的整个单词

  • shift + 8

"语法高亮
:set hlsearch

3.7 Taglist使用

  • 参考:linux命令Tlist的安装 及 使用_Share-CSDN博客

  • 可以在.vimrc中设置自动打开Tlist,也可以在vim窗口手动执行Tlist命令

:Tlist
  • enter键(Tlist):跳转标签对应的代码定义位置(光标跳转到代码窗格)

  • p(Tlist):跳转标签对应的代码定义位置(光标仍停留在Tlist窗格)

  • o(Tlist):新建一个代码窗口,同时跳转标签到代码定义位置(光标移动到新窗格)

3.8 dos文件格式转unix

  • vim打开文件末尾出现^M的情况

    • 参考关于linux中使用vim打开文件出现^M的解决方法 - elwin - 博客园

    • 是由于win-linux-mac对于行末的回车符处理不一致导致的,需要将文件格式从dos转换到unix

  • 方法一:命令行

dos2unix filename
  • 方法二:vim打开文件

:set ff         #查看当前文件格式
:set ff=unix    #修改为unix文件格式

3.9 快速移动光标

  • 光标快速移动到每个空格的下一个连续字符串开头,在阅读代码时很好用

ctrl + 左右按键
  • 快速切换代码位置

ctrl+o      #后退
ctrl+i      #前进

3.10 转换空格到tab键

  • 将4个空格转换成一个tab按键

  1. 用vim打开待转换的文件

  2. 依次输入下方的命令

:set ts=4         //设置把4个空格转换成1个tab按键
:set noexpandtab
:%retab!

3.11 重载vim已经打开的文件

  • 如果文件同时被多个编辑器打开,在不关闭vim重新打开文件的前提下重载文件

:e           #to reload the file

3.12 vimdiff

vimdiff  FILE_LEFT  FILE_RIGHTdp           #(diff "put")#如果希望把一个差异点中当前文件的内容复制到另一个文件里,可以使用命令do           #(diff "get",之所以不用dg,是因为dg已经被另一个命令占用了)#如果希望把另一个文件的内容复制到当前行中,可以使用命令zo           #(folding open,之所以用z这个字母,是因为它看上去比较像折叠着的纸)#临时展开被折叠的相同的文本行zc           #(folding close)#重新折叠

IBM Developer 正在整合其语言站点组合。 – IBM Developer

4. 多vim同时工作

  • 我们经常需要使用vim在不同目录下的code间切换

  • 将vim置于后台,切换回shell,进一步通过快捷键在多个vim窗格中切换

4.1 将vim置于后台

ctrl + z
  1. 将当前的vim置于后台

  2. 然后可以去别的目录再打开一个

  3. 通过jobs命令可以查看哪些vim在后台

  4. 最后打fg序号,将需要的vim置于前台

4.2 vim同时显示和切换多个文件

  • 如果在终端中还没有打开窗口
$ vim -o file1 file2    //上下两个窗口
$ vim -O file1 file2    //左右两个窗口
  • 如果vim已经打开了一个文件,再打开其他窗口

:sp file   //上下分割窗口
:vs file   //左右分割窗口
:open file //打开新的文件,可以通过ctrl+6 或 bn\bp等跳转
  • 在split打开的多个窗格之间切换
[ctrl_w] + 方向键    //切换到其他的窗格
[ctrl_w_w]           //依次向后切换到下一个窗格中
[ctrl_w_t]           //t:top直接跳转到左上角窗口
[ctrl_w_b]           //b:bottom直接跳转到右下角窗口
:q                   //关闭光标所在窗口
:qa                  //关闭所有窗口
  • 同一个窗口的交替文件切换
ctrl + 6    //下一个文件
:bn         //下一个文件
:bp         //上一个文件
  • 显示vim已打开文件列表
:tabs    #查看所有打开的标签页
  • 显示vim缓冲区中的文件列表
:ls        #列出缓冲区的全部文件   +表示已经修改  #表示前一次编辑的文档  %编辑中的文档
:bX        #切换到X文档
:bwX       #完全关闭某个文件缓存

4.3 调整vim分割窗口大小

  • 通过加大数字调节光标所在窗格的大小。

:vertical res 20     //左右窗口调节宽度  20标识全部窗口长度的20%
:res 20              //上下窗口调节宽度
[ctrl_w] + '='       //恢复均等

4.4 显示当前文件夹下的目录树

  • 打开新窗口,并显示当前文件夹下的目录树

:Ve
  • 如果想指定键盘触发该功能,则在.vimrc中加入

map <F3> :Ve .<CR>

5. vim配置问题Q&A

5.1 方向键上方的功能键无法正常使用

  • Session→Terminal→Emulation 中的风格选择Linux即可

6. 我的.vimrc配置

"vim更改注释颜色为天蓝色
hi comment ctermfg=6set tags=tags;"语法高亮
set hlsearch"显示行数
set nu"每一个tab键为8个空格长
set tabstop=8
"保持换行时自动缩进1个tab
"与tabstop保持数值一致,在换行时自动缩进一个tab,否则是对应数量的空格
set shiftwidth=8"默认打开Taglist
let Tlist_Auto_Open=1"在右侧窗口中显示taglist窗口
let Tlist_Use_Right_Window = 0"列出当前目录文件
map <F2> :Ve .<CR>
map <F3> :vertical res 150<CR>
map <F4> :vertical res 80<CR>"搜索忽略大小写
set ignorecase" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\"只同时显示1个文件的tag
let Tlist_Show_One_File=1"自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)if getline('.')[col('.') - 1] == a:charreturn "\<Right>"elsereturn a:charendif
endfunction
filetype plugin indent on
"打开文件类型检测, 加了这句才可以用智能补全
set completeopt=longest,menu

VIM源生linux代码编辑器使用相关推荐

  1. linux 代码编辑器软件下载,slickedit 2016 linux下载

    slickedit 2016 for linux是一款可以在linux系统上使用的代码编辑器,软件支持40多种编程语言代码的编辑操作,并拥有代码分析.代码高亮以及代码美化等多种功能,并且支持多文档同时 ...

  2. linux代码编辑器——vim

    文章目录 1. 概念 2.安装 3. vim的使用 1.使用一些按键没有反应 2. 模式转换 1.命令模式转换到插入模式 1. a 2. i 3. o 2.命令模式切换到底行模式 1. 退出 3. 整 ...

  3. 第三课.Linux代码编辑器

    第三课目录 vi/vim vi/vim简介 vi的模式 vi在命令模式下的操作 vi在底线命令模式下的操作 Visual Studio Code Git git简介 关于git的故事 git的使用 v ...

  4. 最受Linux程序员欢迎的7个代码编辑器的介绍及下载地址

    Linux平台上的代码编辑器太少了,Linux程序员经常抱怨,自从他们使用了免费开源的系统平台后,作为一名程序员,却并没有在代码编辑器上得到足够的重视.下面我们分享了7个最受Linux程序员欢迎的代码 ...

  5. python软件包自带的集成开发环境-Python的10大集成开发环境和代码编辑器(指南)...

    使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑".使用一款集成开发环境甚至是一款好 ...

  6. python自带的集成开发环境是什么-Python的10大集成开发环境和代码编辑器(指南)...

    使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑".使用一款集成开发环境甚至是一款好 ...

  7. code vs 集成tfs_10大Python集成开发环境和代码编辑器

    支持Python的通用编辑器和集成开发环境 Eclipse + PyDev 类别:集成开发环境 网址:www.eclipse.org Python工具:PyDev, www.pydev.org 优点: ...

  8. Python的10大集成开发环境和代码编辑器(指南)

    分享一篇文章,原文链接:Python IDEs and Code Editors (Guide). 使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将 ...

  9. Linux 常用编辑器优缺点对比

    1 .Vim Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.和Emacs并列成为类Unix系统用户最喜欢的编辑器. 2 .Ecli ...

最新文章

  1. 看完2017年这10大AI失败案例,就知道什么是人工智障了
  2. 学习_你必须知道的.net2_第四章_一切从IL开始
  3. oracle脚本刷错了怎么办,Oracle故障处理中常用的脚本
  4. 【绝对有用】Server Tomcat v9.0 Server at localhost failed to start
  5. jeecg-boot自动生成代码_无代码实现销售系统自动判定并生成订单功能
  6. 为你的项目启用可空引用类型
  7. [C#源码] 微信跳一跳POST修改分数漏洞
  8. [WebView五学习]:调试Web Apps
  9. JavaScript之一: 闭包、执行环境、作用域链
  10. Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
  11. 你也可以找到好工作(二)
  12. NOIP2002 产生数
  13. 25篇最新CV领域综述性论文速递!涵盖15个方向:目标检测/图像处理/姿态估计/医学影像/人脸识别等方向...
  14. 基于双月数据集利用最小二乘法进行分类
  15. 黑苹果2k显示器开启hidpi_黑苹果无核显开启macOS-ipad随航功能
  16. Chaos Emulator v0.2.3 自建引力模拟器分享
  17. pycharm连接服务器方法
  18. 2022浙江省计算机三级网络及安全技术考试自学资料(1)(更新于2.28)
  19. php比价源码,定稿毕业论文基于PHP的家电在线比价系统设计与实现喜欢就下吧(资料4)...
  20. c语言调用鼠标驱动函数,鼠标驱动程序

热门文章

  1. Android DOM解析xml
  2. Facebook购买帐号
  3. 【老李的模拟赛】【#6】【2014-08-12】
  4. Unity全局光照/Bake GI/Precomputed Real-time GI/Lightmap/Light Probe
  5. GooglePlay - 排行榜及支付接入
  6. 运算放大器:电压比较器、电压跟随器、同相比例放大器
  7. hanlp自然语言处理包的使用
  8. 新闻类客户端代码阅读笔记
  9. 云服务器 cvm mysql_腾讯云CVM如何安装搭建MySQL
  10. CSP-J复赛2022题解