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操 ...
随机推荐
- suse12.2构建samba
1:添加用户 useradd wangjunhui -d /home/wangjunhuipasswd wangjunhui 2:配置samba smbpasswd -a wangjunhui vi ...
- 配置MySQL主从复制和读写分离
实验环境 序号 主机名 IP地址 备注 1 mysql-master 192.168.204.201 MySQL主库 2 mysql-slave 192.168.204.202 MySQL从库 3 a ...
- Win10,Anaconda,tensorflow-gpu安装教程
,参考于:https://www.cnblogs.com/guoyaohua/p/9265268.html 目录 前言 第一步:安装Anaconda 1.下载和安装 2.配置Anaconda环境变量 ...
- 图、流程图、ER图怎么画及常见画图工具(流程图文章汇总)
流程图基本符号 首先要记住图中1.2.3.4.6这几种符号. 图片摘自网络 流程图基本概念及入门 简易流程图 流程图简介(基本符号与绘制工具) 你可能学了假流程图,三步教会你绘制大厂流程图 使用流程图 ...
- GCN(Graph Convolutional Network)的简单公式推导
第一步:从前一个隐藏层到后一个隐藏层,对结点进行特征变换 第二步:对第一步进行具体实现 第三步:对邻接矩阵进行归一化(行之和为1) 邻接矩阵A的归一化,可以通过度矩阵D来实现(即通过D^-1*A来实现 ...
- Linux 就该这么学 CH05 用户的身份和文件权限
1 用户权限与能力 超级用户root拥有最高的系统所有权,能够管理系统的各项功能,如添加.删除用户:启动或关闭服务进程:开启或禁用硬件设备等. 用户身份分类: 系统管理员root :UID = 0; ...
- List Map Set的线程安全
常见的ArrayList LinkedList HashMap TreeMap LinkedHashMap HashSet TreeSet LinkedHashSet 都是线程不安全的.如果要使用 ...
- mount和umount命令使用
1.mount命令 在Linux系统下,mount命令用于加载文件系统到指定的加载点. (1)命令语法 mount(选项)(参数) (2)常用选项说明 -V:显示版本. -l:显示已加载的文件系统列表 ...
- TPad需求和迭代
需求和迭代最主要的区别是什么
- MyEclipse部署外部引用的jar到web-inf的lib目录下
在用MyEclipse开发java web项目的时候,引入了外部jar,都是以library的形式存在左边的explore中的,调试没有问题,但是部署之后呢,经常遇到个非常头疼的问题就是,这些jar不 ...