Vim 中进行文件目录操作
Vim 中进行文件目录操作
当前文件名
我们知道Vim有48个寄存器,其中%只读寄存器中保存着当前文件路径。 例如在/home/harttle/下打开src/main.cpp,我们打印%的值:
:echo @% " 文件路径 src/main.cpp
通过关键字展开可得到绝对路径、所在目录等信息:
:echo expand('%:t') " 文件名 main.cpp
:echo expand('%:p') " 绝对路径 /home/harttle/src/main.cpp
:echo expand('%:p:h') " 所在目录 /home/harttle/src
:echo expand('%:p:h:t') " 所在目录名 src
:p理解为path,:h理解为head,:t理解为tail。可参考:help expand。
利用 % 进行文件操作
备份当前文件main.cpp到main.cpp.bak:
:w % %.bak
打开在同目录下的main.h:
:e %:p:h/main.h
插入当前文件名:
"%p
拷贝当前文件名到剪切板,当然你可以把它做成快捷键:
:let @*=expand("%:t")
直接打开目录
Harttle发现Vim不仅可以打开文件,而且可以打开目录。 直接vim /home/harttle即可打开,也可以在vim打开目录:
:e ./harttle " 编辑该目录
:Explore . " 浏览该目录
:Sexplore . " 在水平分割窗口中浏览该目录
:Vexplore . " 在垂直分割窗口中浏览该目录
打开目录后Enter进入下一层,-返回上一层,R重命名,D删除。
这里的水平分割是指上下两个窗口,垂直分割为左右两个窗口。 貌似TMUX和VIM对水平和垂直的定义恰恰相反,Harttle也是醉了。
万能方法
如果你找不到合适的Vim命令,随时都可以在Vim中直接执行Bash命令。 只需要在Ex模式中添加前导的!字符,例如:
# 列出文件
:!ls
# 删除文件
:!rm foo.txt
此外,NERDTree插件可以在Vim中显示文件目录树。 当然也集成了文件和目录操作,需要熟悉其快捷键。
Vim 中进行文件目录操作的更多相关文章
- vim中的替换操作
在vim中 :s(substitute)命令用于查找并替换字符串.使用方法如下: :s/<find-this>/<replace-with-this>/<flags> ...
- vim中的分屏操作
title: vim中的分屏操作 date: 2017-11-14 21:45:11 tags: vim categories: 开发工具 在命令行中: vim -On file1 file2 # O ...
- Qt中与文件目录相关操作
一.与文件目录操作有关操作. Qt中与文件目录相关的操作在QDir中,需加入#include <QDir>语句. QDir::drives()是列出电脑根目录下的所有目录,返回的是QFil ...
- 再谈vim中多窗口的编辑 ctrl+w+H窗口位置最大化和互换等操作
参考:http://blog.csdn.net/shuangde800/article/details/11430659 很好 鼠标在各个窗口间循环移动: ctrl+w+(小写的 hjkl), &qu ...
- Vim 中文件目录浏览插件——NERD tree
说明 :vim的插件NERDTree用于使得vim窗口分左右窗口显示的用法说明.其中,左侧为目录的树形界面,简称为NERDTree界面,右则为vim界面. 一.配置步骤 下载地址: http://ww ...
- 关于VIM中展示二进制字符的操作
在网上拷贝了一段代码放到linux下变异,发现每行的行首有一堆不可识别的字符.放到windows的notepad下发现也不是空格也不是tab,权当是某种不可识别的缩进字符把 解决方法 linux c ...
- VIM中简化删除,光标移动和查找操作
# 一.命令行模式下简化删除 1. 向后删除单个字符:[x] 2. 向前删除单个字符:[X] 3. 删除从光标开始到单词结尾:[dw] 删除从光标后的2个单词:[d2w] 4. 删除整个单词:[daw ...
- vim 编辑器的光标操作
vim中最简单的移动光标的方式是使用使用方向键操作,但这种方式的效率底下,更高效的方式是使用快捷键,常用的快捷键如下表所示. 快捷键 功 ...
- 第32课 Qt中的文件操作
1. Qt的中IO操作 (1)Qt中IO操作的处理方式 ①Qt通过统一的接口简化了文件和外部设备的操作方式 ②Qt中的文件被看作一种特殊的外部设备 ③Qt中的文件操作与外部设备的操作相同 (2)IO操 ...
随机推荐
- ESA2GJK1DH1K基础篇: 购买云服务器
我选择的是购买阿里云的服务器 如果是学生,可以选择 因为我用学生账户买过了,所以过程没法写了,下面我就写不用学生账户买的过程,其实应该配置过程和学生买差不多 选择购买的配置 选择系统 不需要配置直接下 ...
- 请描述一下cookies、sessionStorage、localStorage、session四者的区别?
存储大小: cookie在4K以内. sessionStorage和localStorage在5M以内. 有效时间: cookie:如果未设置过期时间,关闭浏览器时清空:如果设置了有效时间则在到期后清 ...
- map和object互转的几种方式
1.使用Apache中的BeanUtils类,导入commons-beanutils包. 2.使用JSON 3.利用java.lang.reflect.Field类完成Obj和Map之间的相互转换 h ...
- quick如何打开工程或者示例
quick如何打开工程或者示例 1. 那里打开工程 cc.ui.UIPushButton.new(images, {scale9 = true}) :setButtonSize(buttonWidth ...
- Computer-Hunters——项目系统设计与数据库设计
Computer-Hunters--项目系统设计与数据库设计 前言 本次作业属于2019秋福大软件工程实践Z班 本次作业要求 团队名称: Computer-Hunters 本次作业目标:撰写一份针对团 ...
- Golang(四)正则表达式使用
0. 前言 最近用到了 regexp 包,下面整理下正则表达式相关用法 参考 基础知识 - Golang 中的正则表达式 和 Golang regexp包中的函数和方法 做了汇总 1. 正则表达式 1 ...
- 监听浏览器tab选项卡选中事件,点击浏览器tab标签页回调事件,浏览器tab切换监听事件
js事件注册代码: <script> document.addEventListener('visibilitychange',function(){ //浏览器tab切换监听事件 if( ...
- 三个基于.net的浏览器内核使用的比较
最近做模拟登陆发帖相关的项目 分别尝试了基于IE .NET自带的 webbrowser 和 基于WebKit 的WebKit.NET和openWebkitSharp 最开始肯定是用的.NET自带的we ...
- [原创] Agilent 34410A 表与计算机通讯
1. 接口选择 万用电表出厂时选定为HP-IB接口,应选择为RS-232接口 E:I/O MENU – 2:INTERFACE 选择RS-232 2. 设定波特率 默认9600 E:I/O MENU ...
- css3自定义上传图片输入框的方法
css3自定义上传图片输入框的方法 代码如下<pre> <form class="form1"> <img src="/kelatoupia ...