6. Operators 1: Changing Letters and Lines
本节关注:剪切 (cut / delete)、拷贝 (copy / yank)、粘帖( paste / put)。
键
命令 (Command )
d
delete
c
change (delete and enter insert mode)
y
yank (copy)
u
undo
p
put (paste)
r
replace (with whatever character you press next)
键
命令 (Command )
dd
to change an entire line
cc
to delete an entire line
yy
to yank an entire line
To operate on a line from your cursor to the end you capitalize the command instead.
C
removes the line from your cursor onward and puts you in insert mode
Y
yanks all the words from your cursor forward, and so forth.
How to Instantly Make Your Life Easier with cc (or C )
场景:
写函数时,要将鼠标置于空行缩进处:
scope.awesome = function(arg){
};
一般做法:回车生成新行,再回去删除原行。
vim操作:cc
或C
,删除原有行并进入输入模式。
返回
7. Doing Things More Than Once
Using Counts
count + action
模式:3dw = dw + dw + dw
例外:12G
Using Text Objects
operator + count + motion
模式
d5l
the five characters to the right of the cursor make up a text object. Delete it.
d5j
the next five lines constitute a text object whose presence is no longer required.
快捷键
文本对象 (Text Object )
w
从当前鼠标到词尾
W
从当前鼠标到词尾(计入标点)
’ ‘’
在引号中的字符串
l
从当前鼠标到句尾
Behold The All-Powerful Dot
.
it repeats the last change you made to the text, but at your current position.
What is a “Change”?
A change is anything that alters the text between two normal mode commands.
返回
8. Moving Around in Vim: Dance Steps
Words and WORDS
Words 是被标点分离的词,WORDS是含标点的字符。
如: http://I.am.a.frog.com
是6个Word,是1个WORD
Inner and All
文本对象通常被特定字符包围:WORD被空白符包围;word被非字符包围;句子被句号或行结尾包围。
Who is John Galt?
鼠标在Galt
词上,则diw
删除该词,句子被修改为Who is John ?
,iw
意为inner of word
;若ciw
则替换该词。
若用a
,则daw
删除该词及其两边空白字符,句子被修改为Who is John?
。
“Hello there! (He| lied)”. Ted was always cheerful.
da(
删除括号中内容及括号变为:
“Hello there! |”. Ted was always cheerful.
闭合字符
含义
{
圆括号之间内容
[
方括号之间内容
<
尖括号之间内容
t
XML或HTML标签之间内容
Move by Counting
5w
代表向右移动5个词,6j
代表向下移动6行。
但重复数过多时,不如重复操作。
(Book)marks
vim标签分为两类:小写标签和大写标签。小写标签为文件内指向,大写标签为文件件指向。
m
+ [字母]:在正常模式下操作,设定一个以字母为名字的标签。
` + [字母] : 跳至以字母为名的标签处。
’ + [字母]:跳至以字母为名的标签外行首。
返回
wall-e
2021 年9 月 22 日 06:14
11
10. Plugins
插件是什么
插件即一个函数、快捷键、脚本集合,使用vim更加好用。
手工安装
下载插件(.zip文件)
解压文件并拷贝到$HOME/.vim
文件夹
重启vim
简易安装
Nate的偏好插件
额外找的插件
返回
wall-e
2021 年9 月 22 日 06:14
12
11. Operators: Moving and Changing at the Same Time
一个vim命令包含:
根据不同场景,以上三项均是可选。
4j
数字+移动
4p
数字+操作
editing by motion
场景
输入以下代码:
grunt.loadNpmTasks('grunt-contrib-jade');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-copy');
返回
wall-e
2021 年9 月 22 日 06:15
15
14. Text Origami. :h folding
:set foldmethod=indent ”按同级内缩折叠
:set foldmethod=syntax “按语法规则折叠
zc
:折叠
zo
:打开折叠
注:vim没有针对python语法的折叠功能,需要安装插件,本人安装的是SimpylFold 。
只有当以vim为主要开发工具时,才涉及到本节详细命令。故暂略去更多相关命令。
返回
wall-e
2021 年9 月 22 日 06:17
18
17. Doing Things at Vim Speed
解释了相对于其它编辑器,vim胜出的原因在于:其将大部分操作限制在常用键区域完成。
返回
wall-e
2021 年9 月 22 日 06:17
19
18. Mapping Keys
All the Key map Commands
nmap: 正常模式下映射
vmap: 可视模式下映射
imap: 插入模式下映射
示例:
nmap ea 将e 映射为 ea,移至词尾并进入插入模式
Take me to your Key!
设置新的引导键:
let mapleader=","
引导键+e 定义新功能:
nmap <Leader>e ea
返回
wall-e
2021 年9 月 22 日 06:17
20
19. Fancy Insert Mode Tricks
在插入模式中,有时需要在不离开插入模式的情况下进行文本操作。这样可以提高编辑效率。
命令
结果
<ctrl> w
删除鼠标之前的词
<ctrl> u
删除鼠标之前的行
<ctrl> t
增加行缩进
<ctrl> d
减少行缩进
<ctrl> n
找到下一个补全建议
<ctrl> x
<ctrl> r
插入寄取器内容,跟上一个寄取器名称
补全
vim会描扫已输入的词,当你键入 <ctrl> n
时vim会提示可能的匹配供选择。
返回