VIM源生linux代码编辑器使用
本文介绍的均为非常实用的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> //内核编程可以引用的库
C标准库(用户空间编程)直接存放在该路径下
驱动编程(内核空间编程)时引用的系统头文件库在默认路径下的linux文件夹中
/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按键
用vim打开待转换的文件
依次输入下方的命令
: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
将当前的vim置于后台
然后可以去别的目录再打开一个
通过jobs命令可以查看哪些vim在后台
最后打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代码编辑器使用相关推荐
- linux 代码编辑器软件下载,slickedit 2016 linux下载
slickedit 2016 for linux是一款可以在linux系统上使用的代码编辑器,软件支持40多种编程语言代码的编辑操作,并拥有代码分析.代码高亮以及代码美化等多种功能,并且支持多文档同时 ...
- linux代码编辑器——vim
文章目录 1. 概念 2.安装 3. vim的使用 1.使用一些按键没有反应 2. 模式转换 1.命令模式转换到插入模式 1. a 2. i 3. o 2.命令模式切换到底行模式 1. 退出 3. 整 ...
- 第三课.Linux代码编辑器
第三课目录 vi/vim vi/vim简介 vi的模式 vi在命令模式下的操作 vi在底线命令模式下的操作 Visual Studio Code Git git简介 关于git的故事 git的使用 v ...
- 最受Linux程序员欢迎的7个代码编辑器的介绍及下载地址
Linux平台上的代码编辑器太少了,Linux程序员经常抱怨,自从他们使用了免费开源的系统平台后,作为一名程序员,却并没有在代码编辑器上得到足够的重视.下面我们分享了7个最受Linux程序员欢迎的代码 ...
- python软件包自带的集成开发环境-Python的10大集成开发环境和代码编辑器(指南)...
使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑".使用一款集成开发环境甚至是一款好 ...
- python自带的集成开发环境是什么-Python的10大集成开发环境和代码编辑器(指南)...
使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑".使用一款集成开发环境甚至是一款好 ...
- code vs 集成tfs_10大Python集成开发环境和代码编辑器
支持Python的通用编辑器和集成开发环境 Eclipse + PyDev 类别:集成开发环境 网址:www.eclipse.org Python工具:PyDev, www.pydev.org 优点: ...
- Python的10大集成开发环境和代码编辑器(指南)
分享一篇文章,原文链接:Python IDEs and Code Editors (Guide). 使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将 ...
- Linux 常用编辑器优缺点对比
1 .Vim Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.和Emacs并列成为类Unix系统用户最喜欢的编辑器. 2 .Ecli ...
最新文章
- 看完2017年这10大AI失败案例,就知道什么是人工智障了
- 学习_你必须知道的.net2_第四章_一切从IL开始
- oracle脚本刷错了怎么办,Oracle故障处理中常用的脚本
- 【绝对有用】Server Tomcat v9.0 Server at localhost failed to start
- jeecg-boot自动生成代码_无代码实现销售系统自动判定并生成订单功能
- 为你的项目启用可空引用类型
- [C#源码] 微信跳一跳POST修改分数漏洞
- [WebView五学习]:调试Web Apps
- JavaScript之一: 闭包、执行环境、作用域链
- Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
- 你也可以找到好工作(二)
- NOIP2002 产生数
- 25篇最新CV领域综述性论文速递!涵盖15个方向:目标检测/图像处理/姿态估计/医学影像/人脸识别等方向...
- 基于双月数据集利用最小二乘法进行分类
- 黑苹果2k显示器开启hidpi_黑苹果无核显开启macOS-ipad随航功能
- Chaos Emulator v0.2.3 自建引力模拟器分享
- pycharm连接服务器方法
- 2022浙江省计算机三级网络及安全技术考试自学资料(1)(更新于2.28)
- php比价源码,定稿毕业论文基于PHP的家电在线比价系统设计与实现喜欢就下吧(资料4)...
- c语言调用鼠标驱动函数,鼠标驱动程序