So nutzen Sie Vim effizient
PHP中文网
PHP中文网 2017-05-16 16:42:38
0
18
1619

Neulinge sind neu bei Vim. Ich hoffe, Sie können einige Einführungs-Tutorials empfehlen. Jetzt verwende ich Vim einfach als normalen Editor. Es scheint etwas mühsam zu sein, zum normalen Modus zurückzukehren Gibt es eine einfache Möglichkeit? Zunächst einmal vielen Dank!

PHP中文网
PHP中文网

认证0级讲师

Antworte allen(18)
为情所困

用vim 快两年了 看过教程也不少,总的来说还是得自己多练习,当自己觉得有需要的时候,再添加功能。这里分享个看过的最好的教程,出自贴吧的某个朋友,写的很好

学会盲打

配置文件先从最简开始,在 伍级 前别考虑配置插件,千万别硬背命令,千万别直接取用别人的配置文件
基本还是长时间待在 insert mode 下,会觉得 vim 也不过尔尔,也不好用,

这个时候,编辑效率可能比用原来的一般编辑器还低,别人问使用什麼编辑器时,
多半会回答:vim 再配一个 nano, kate, kwrite, gedit, geany 或其他 IDE 之类的

养成习惯待在 normal mode(normal 不是白叫的),只有输入时才进入 insert mode,输入完马上 <ESC>
学习 normal mode 下的移动命令,这个时候输入文字标准流程:

  1. normal mode 移动命令准确定位光标(记住,搜索命令也是移动命令)
  2. 进入 insert mode 编辑(进入 insert mode 别只用 i,要习惯视乎情况,使用 I a A o O s C)
  3. <ESC> 返回 normal mode

这个时候,编辑效应会恢复到和你之前用的普通编辑器一样,甚至有少量提高

学习什麼是 operator(命令 d y c 等),什麼是 motion(所有能移动光标的命令,h j k l w e f t / ? 等等),
学习 operator + motion 的方式,如 ct. (将当前光标到 . (点) 之间的内容删除并进入 insert mode 准备修改)
学习基础的 Ex 命令,:s 什麼的

这个时候,编辑效率开始明显提高,在用其他一般编辑器时,会开始觉得不习惯和低效率

学习 text-objects,知道 operator + text-objects 的方法,可进行手术般精准的定位和修改,
既然你主要用在 c/c++,举一些在这个情况下有用的例子:

ci" (由 change operator 和 text-object i" 组成)

这个命令会找到当前光标所在行的下一个 " 括起来的字符串,清除引号裏面的内容,并进入 insert mode 以方便修改
用起来比解释起来简单,你可用 const char* hello = "Hello world."; 类似这样的代码来测试

yaB (由 yank operator 和 text-object aB 组成)

这个命令会将当前光标所在的代码块({} 括起来的内容,包括花括号本身)复制到默认 register,
方便在其他地方用 p 贴出来(当然,写代码不鼓励 copy and paste),你可用用任何一个 {} 来测试,然后找另外一个地方 p

gUiw (由 make uppercase operator 和 text-object iw 组成)

这个命令会将当前光标所在的 word 全部变成大写
如将 max_size 变成 MAX_SIZE

这个时候,开始知道为什麼 vim 精确高效,而且并不是因为全键盘无需鼠标

习惯 operator + motion 后,发现 . 命令很好用,多注意使用可重复的命令组合
练习使用书签定位,q 记录宏,使用多个 register,使用 args,使用 buffer
使用其他的 Ex 命令

这个时候,想不起没用 vim 之前的日子是怎麼过来的

开始 map 经常反覆使用的命令,开始写 vimscript,开始知道自己需要什麼样的插件
试推荐几个:
pathogen 或 vundle,tagbar, CtrlP, Gundo, UltiSnips,surround,Syntastic,Conque,ack.vim,vim-commentary,fugitive(如果是 git 用户)
还有不少,但多对 c/c++ 没直接帮助,就不提了

这个时候,对其他编辑器提不起兴趣,或许 emacs 除外

拥有完全个人化的 vimrc,基本进入化境,成为江湖上的传说
常有旁人观察你编辑后,激起雄心壮志想要学 vim,尝试几个小时候因为觉得热键太不"人性化”而放弃,
但偶尔会向人提起他见过江湖上有你这麼一号人物

仅有的幸福

我使用vim有一年了.日前正要写一个vim的cheat sheet,就提前在这里写下吧。

首先 vim != gvim

1.怎么编辑

任何时候按下ESC键会进入普通模式.普通模式下可以按下: 来输入命令.

普通模式按下i或a 进入插入模式,这时你可以编辑文本。

2.简单编辑

  • 移动光标 :你可以直接用方向键来移动光标, 更vim些的做法是hjkl
  • 保存文件,普通模式下 :w .退出编辑 :q ,强行保存 :w! 强行退出: :q!
  • 撤销操作 :u 或者普通模式下按下u

3.更快的编辑

现在你可以用vim写东西了.

我们需要更快的编辑

1.快速的定位光标:

  • ^ 跳到行首 (类似功能键Home)
  • $ 跳到行尾(类似功能键End)
  • :n 跳到第n行
  • :$ 跳到最后一行

2. 快速的编辑:
在普通模式下:

  • dd 删除一行
  • yy 复制一行
  • p 粘贴
  • r 单个字符替换

3. 更精细的粘贴复制:

  • m,nd - 快速删除第m到第n行 (delete)
  • m,ny - 复制第m到第n行 (yank)
  • m,nmt - 第m行到第n行剪切到第t行(move)
  • m,ncot -第m行到第n行复制到第t行(copy to)

4. 搜索
普通模式下按下 / 向下搜索, 按下?向上搜索
5.对齐
gg=G 快速对齐整个文件
6.标签操作

  • :tabnew mytab 新建一个标签mytab
  • :tabn 跳到下一个标签
  • :tabp 跳到上一个标签
  • 用gt或gT在普通模式下跳转到下一个和上一个标签

7. 切割窗口操作

  • :split 水平方向切割一个窗口
  • :vsplit 竖直方向切割一个窗口
  • 用Ctrl-w+方向键 在各个切割窗口之间切换。

4.让vim更懂你

有没有注意到我们以上一直没有提到vimrc和插件。

现在到时候了。

比如,我们coding时喜欢显示行号:命令模式下:set nu或者 :set number

关于vimrc, 有很多值得研究商讨的地方,你可以参考下我的vimrc, 我都进行了详细的中文注释

5.关于插件和主题

vim 的配色有三个比较出名,solarized , molokai , badwolf

关于vim 的插件,只有这么几句需要说:

  • 一定要使用vundel来管理插件。
  • 不要修改别人的插件,要么你就自己fork了修改,然后bundle你的插件。
  • 可以研究下怎么用git submodule来管理你的插件。

好了,吃饭去。。到此。

伊谢尔伦

无他,唯手熟耳。

" Arrow keys are evil
map <up>    <nop>
map <down>  <nop>
map <left>  <nop>
map <right> <nop>

另外,Ctrl-[ 也可以退出编辑模式。

Peter_Zhu

嗨!我提供一個非常棒的方法:
玩 vim 遊戲!

如果你是使用 Ubuntu 系統,請輸入:

  1. sudo apt-get install vimtutor
  2. vimtutor

或者透過一個很酷的網頁 vim 遊戲:

vim 冒險家
http://vim-adventures.com/

为情所困

hey~! 我实在是不知道怎么用 vim, 只有我的手知道. (熟能生巧)

不喜欢用 esc 可以用 <c-c> 或者 <c-[> 效果一样.

多看 vim tips, 多学学各种 vim 插件.

话说回来了, 人家只是个文字编辑器而已, 别本末倒置了.

分割线

顺便推荐一个 vim 的插件集合, 叫做 Janus, 它对自己的定义是 Janus: Vim Distribution. 它提供了一个完整的, 必需的 vim 基本设置和大多数人都需要的插件, 以及继续自定义 vim 的解决方案. 多说无益, RTFM.

習慣沉默

用vim主要是自己定义各种功能,使用各种插件。 主要是配置vimrc, 你可以参考别人的vimrc,在github上搜索vimrc,比如https://github.com/search?q=vimrc&ref... ,看看别人是怎么配置的,改成自己的就ok了。

esc可以用jj 或者 jk 代替。

inoremap jk <ESC> 
为情所困

看完自带的教程(有中文的,下载链接,下载需要翻墙),但是不用死记硬背,只要记住有哪些功能就可以了。

遇到似乎可以用到这些功能的地方就开始查阅教程,然后慢慢的你查的会越来越少,越来越少,慢慢的你就会了。

举个例子:

Hello World foobar

如果你想删除foobar ,那么你可以用ffdw这个组合命令(f是在一行内查询,后面那个f就是foober 的首字母,这是命令的第一部分,将光标移到foobar这个单词上面,d是删除,w是选中一个词,组合起来就是删除一个词),非常快捷,而且都是简单命令的组合。

然后如果你想要处理比较复杂的场景,比如

foobar
foobar
foobar
foobar

只把前面的foo 删掉,留下那个bar,这时候虽然vim提供了处理的功能,但是我们不用管,用宏录制的功能(能保存你的操作,你可以简单的重复)把简单的命令组合起来,就可以做很多很复杂的工作了

比如上面这个例子(手头暂时没有Vim,凭记忆可能有错),

qa (将命令录制到a这个剪贴板上{vim有好多个剪贴板,比如abcdefg……})
3x (重复三遍删除操作,将foo删掉,其实也可以用f命令来搭配,对复杂的情况更适用)
0 (移动到行首)
j (移动到下一行)
q (停止录制)
3@a (重复三遍刚才录制的命令,3就是将命令重复3遍,@就是运行,a就是刚刚保存的那个剪贴板)

这就解决了。

Vim 根本不难,原因在于90%的状况都只要很简单的一些命令的灵活搭配。

剩下10%的状况查教程也很容易知道。你让一个会用Vim的人默写命令,在对比所有的命令,会发现人家只知道很小一部分。

我想大声告诉你

上面的人说的都很详细了,不过对于esc键建议用改键之类的换成Caps Lock这样按起来要方便很多。

据说RMS写Emacs的时候的键盘是这样的
很明显Esc和Control的距离要很舒服的,如果有钱也入一块HHKB吧。

阿神

伊谢尔伦

http://vim-adventures.com/
根据vim操作写的小游戏,游戏同时练习vim操作。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage