TranslateProject/translated/tech/[翻译完成]20140929 Learning Vim in 2014--Working with Files.md
lihaiming faa9c9034d 翻译完成Learning Vim in 2014: Working with Files与删除原文
添加Practical Lessons in Peer Code Review
2014-10-04 22:29:08 +08:00

114 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

2014年学习如何使用vim处理文件工作
================================================================================
作为一名开发者你不能够只化时间去写你想要的代码。其中最难以处理的部分是我的工作只使用vim来处理文本。我感觉到很无语与无比的蛋疼,vim没有自己额外文件查看系统与内部打开与切换文件功能。因此继vim之后我主要使用Eclipse 和 Sublime Text.
就此,我非常欣赏深度定制的vim文件管理功能。在工作环境上我已经装配了这些工具甚至比起那些视觉编辑器好很多。因为这个是纯键盘操作促使我可以更加快地移动我的代码。第一篇文章使我明白这个vim内建功能只是处理文件的另一选择。在这篇文章里我会带你去认识vim文件管理功能与使用更高级的插件。
### 基础篇:打开新文件 ###
学习vim其中最大的一个障碍是缺少可视提示不像现在的GUI图形编辑器当你在终端打开一个新的vim是没有明显的提示去提醒你去走什么所有事情都是靠键盘输入同时也没有更多更好的界面交互vim新手需要习惯如何靠自己去查找一些基本的操作指令。好吧让我开始学习基础吧。
创建新文件的命令是**:e <filename>或:e** 打开一个新缓冲区保存文件内容。如果文件不存在它会开辟一个缓冲区去保存与修改你指定文件。缓冲区是vim是术语意为"保存文本块到内存"。文本是否能够与存在的文件关联,要看是否每个你打开的文件都对应一个缓冲区。
打开文件与修改文件之后,你可以使用**:w**命令来保存在缓冲区的文件内容到文件里面,如果缓冲区不能关联你的文件或者你想保存到另外一个地方,你需要使用**:w <filename>**来保存指定地方。
这些是vim处理文件的基本知识很多的开发者都掌握了这些命令这些技巧你都需要掌握。vim提供了很多技巧让人去深挖。
### 缓冲区管理 ###
基础掌握了就让我来说更多关于缓冲区得东西vim处理打开文件与其他编辑器有一点不同打开的文件不会作为一个标签留在一个可视地方而是只允许你同时只有一个文件在缓冲区打开vim允许你多个缓存打开。一些会显示出来另外一些就不会你需要用**:ls**来查看已经打开的缓存,这个命令会显示每个打开的缓存区,同时会有它们的序码,你可以通过这些序码实用**:b <buffer-number>**来切换或者使用循序移动命令**:bnext** 和 **:bprevious** 也可以使用它们的缩写**:bn**和**:bp**。
这些命令是vim管理文件缓冲区的一个基础我发现他们不会按照我的思维去映射出来。我不想关心缓冲区的顺序我只想按照我的思维去到那个文件或者想在当前这个文件.因此必需了解vim更深的缓存模式我不是推荐你必须内部命令来作为主要的文件管理方案。但这些的确是很强大可行的选择。
![](http://benmccormick.org/content/images/2014/Jul/skitch.jpeg)
### 分屏 ###
分屏是vim其中一个最好用的管理文件功能在vim
你可以在当前窗同时分开2个窗口可以按照你喜欢的配置去重设大小和分配,这个很特别可以在不同地方同时打开6文件每个文件都拥有自己的窗口大少
你可以通过命令**:sp <filename>**来新建水平分割窗口或者 **:vs <filename>**垂直分割窗口。你可以使用这些关键命令去重置你想要的窗口,
老实说我喜欢用鼠标处理vim任务因为鼠标能够给我更加准确的两列的宽度而不需要猜大概的宽度。
创建新的分屏后,你需要使用**ctrl-w
[h|j|k|l]**来向后向前切换。这个有少少笨拙,但这个确实很重要很普遍很容易很高效的操作.如果你经常使用分屏,我建议你去.vimrc使用以下代码q去设置别名为**ctrl-h** **ctrl-j** 等等。
nnoremap <C-J> <C-W><C-J> "Ctrl-j to move down a split
nnoremap <C-K> <C-W><C-K> "Ctrl-k to move up a split
nnoremap <C-L> <C-W><C-L> "Ctrl-l to move right a split
nnoremap <C-H> <C-W><C-H> "Ctrl-h to move left a split
### 跳转表 ###
分屏是解决多个关联文件同时查看问题,但我们仍然不能满足打开文件与隐藏文件之间快速移动。这时跳转表是一个能够解决的工具。
跳转表是众多插件中看其来奇怪而且很少使用。vim能够追踪每一步命令还有切换你正在修改的文件。每次从一个分屏窗口跳到另外一个vim都会添加记录到跳转表里面。这个记录你去过的地方这样就不需要担心之前的文件在哪里你可以使用快捷键去快速追溯你的踪迹。**Ctrl-o**允许你返回你上一次地方。重复操作几次就能够返回到你最先编写的代码段地方。你可以使用**ctrl-i**来向前返回。当你在调试多个文件或两个文件之间切换能够发挥极大的快速移动功能。
### 插件 ###
如果你想vim像Sublime Text 或者Atom一样我就让你认清一下这里有很好的机会让你看到一些难懂可怕和低效的事情。例如大家会发出"当Sublime有了模糊查找功能为什么我一定要输入全路径才能够打开文件" "没有侧边栏显示目录树我怎样查看项目结构" 。但vim有了解决方案。这些方案不需要破坏vim的核心。我只需要经常修改vim配置与添加一些最新的插件这里有3个有用的插件可以让你像Sublime管理文件
- [CtrlP][1] 是一个跟Sublime的"Go to Anything"栏一样模糊查找文件.它快如闪电并且非常可配置性。我使用它最主要打开文件。我只需知道部分的文件名字不需要记住整个项目结构就可以查找了
- [The NERDTree][2]
这个一个文件管理夹插件它重复了很多编辑器的有的侧边文件管理夹功能。我实际上很少用它对于我模糊查找会更加快。对于你接手一个项目尝试学习项目结构与了解什么可以用是非常方便的NERDTree是可以自己定制配置安装它能够代替vim内置的目录工具。
- [Ack.vim][3] 是一个专为vim的代码搜索插件它允许你跨项目搜索文本。通过Ack 或 Ag 去高亮查找
[第二个极其好用的搜索工具][4],允许你在任何时候在你项目之间快速搜索跳转
在vim核心与它的插件生态系统之间vim 提供足够的工具允许你构建你想要得工作环境。文件管理是软件开发系统的最核心部分并且你值得拥有体验的权利
开始是需要通过很长的时间去理解它们,然后才找到你感觉舒服的工作流程之后才开始添加工具在上面。但依然值得你去使用,当你不需要头爆去理解如何去使用就能够轻易编写你的代码。
### 更多插件资源 ###
- [Seamlessly Navigate Vim & Tmux Splits][5] 这个插件需要每一个想使用它的人都要懂得实用[tmux][6],这个跟vim的splits 一样简单好用
- [Using Tab Pages][7] 它是一个vim的标签功能插件虽然它的名字用起来有一点疑惑但我不能说它是文件管理器。
对如何在有多个工作可视区使用"tab
pages" 在vim wiki 网站上有更好的概述
- [Vimcasts: The edit command][8] 一般来说 Vimcasts
是大家学习vim的一个好资源。这个屏幕截图与一些内置工作流程是很好描述之前说得文件操作方面的知识
### 订阅 ###
这篇文章通过第三个方面介绍如何通过一些好的手法学习vim。如果你喜欢这篇文章你可以通过[feed][8]来订阅或email我[mailing
list][10]。在这个星期javascript小插曲之后下星期我会继续介绍vim的配置方面的东西你可以先看基础篇使用vim
看我前2篇系列文章和vim与vi的语言
--------------------------------------------------------------------------------
via: http://benmccormick.org/2014/07/07/learning-vim-in-2014-working-with-files/
作者:[Ben McCormick][a]
译者:[译者ID](https://github.com/haimingfg)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://benmccormick.org/2014/07/07/learning-vim-in-2014-working-with-files/
[1]:https://github.com/kien/ctrlp.vim
[2]:https://github.com/scrooloose/nerdtree
[3]:https://github.com/mileszs/ack.vim
[4]:http://benmccormick.org/2013/11/25/a-look-at-ack/
[5]:http://robots.thoughtbot.com/seamlessly-navigate-vim-and-tmux-splits
[6]:http://tmux.sourceforge.net/
[7]:http://vim.wikia.com/wiki/Using_tab_pages
[8]:http://vimcasts.org/episodes/the-edit-command/
[9]:http://feedpress.me/benmccormick
[10]:http://eepurl.com/WFYon
[11]:http://benmccormick.org/2014/07/14/learning-vim-in-2014-configuring-vim/
[12]:http://benmccormick.org/2014/06/30/learning-vim-in-2014-the-basics/
[13]:http://benmccormick.org/2014/07/02/learning-vim-in-2014-vim-as-language/