mirror of
https://gitlab.com/wsdjeg/vim-galore-zh_cn.git
synced 2025-01-31 14:19:27 +08:00
Close #27
This commit is contained in:
parent
c75ea7a151
commit
b040a0f7a8
12
README.md
12
README.md
@ -162,7 +162,7 @@ Moolenaar](https://en.wikipedia.org/wiki/Bram_Moolenaar) 于 1991 年发布初
|
||||
|
||||
Vim 采用模式编辑的理念,即它提供了多种模式,按键在不同的模式下作用不同。你可以在 _普通模式_ 下浏览文件,在 _插入模式_ 下插入文本,在 _可视模式_ 下选择行,在 _命令模式_ 下执行命令等等。起初这听起来可能很复杂,但是这有一个很大的优点:不需要通过同时按住多个键来完成操作,大多数时候你只需要依次按下这些按键即可。越常用的操作,所需要的按键数量越少。
|
||||
|
||||
和模式编辑紧密相连的概念是“操作符”和“动作”。_操作符_开始一些行为,例如:修改,删除,或者选择文本。之后你要用一个_动作_来指定需要操作的文本区域。比如,要改变括号内的文本,需要执行 `ci(` (读做 _change inner parentheses_);删除整个段落的内容,需要执行 `dap` (读做:_delete
|
||||
和模式编辑紧密相连的概念是“操作符”和“动作”。_操作符_ 开始一些行为,例如:修改,删除,或者选择文本。之后你要用一个 _动作_ 来指定需要操作的文本区域。比如,要改变括号内的文本,需要执行 `ci(` (读做 _change inner parentheses_);删除整个段落的内容,需要执行 `dap` (读做:_delete
|
||||
around paragraph_)。
|
||||
|
||||
如果你能看见 Vim 老司机操作,你会发现他们使用 Vim 脚本语言就如同钢琴师弹钢琴一样。复杂的操作只需要几个按键就能完成。他们甚至不用刻意去想,因为这已经成为[肌肉记忆](https://en.wikipedia.org/wiki/Muscle_memory)了。这减少[认识负荷](https://en.wikipedia.org/wiki/Cognitive_load)并帮助人们专注于实际任务。
|
||||
@ -263,7 +263,7 @@ Vim 是一个文本编辑器。每次文本都是作为**缓冲区**的一部分
|
||||
|
||||
**窗口** 是缓冲区上一层的视窗。如果你想同时查看几个文件或者查看同一文件的不同位置,那样你会需要窗口。
|
||||
|
||||
请别把他们叫做_分屏_。你可以把一个窗口分割成两个,但是这并没有让这两个窗口完全_分离_。
|
||||
请别把他们叫做 _分屏_ 。你可以把一个窗口分割成两个,但是这并没有让这两个窗口完全 _分离_ 。
|
||||
|
||||
窗口可以水平或者竖直分割并且现有窗口的高度和宽度都是可以被调节设置的,因此,如果你需要多种窗口布局,请考虑使用标签。
|
||||
|
||||
@ -350,7 +350,7 @@ Vim 是一个文本编辑器。每次文本都是作为**缓冲区**的一部分
|
||||
|
||||
如果你敲击<kbd>a</kbd>,我们期望着光标回退到上一个单词,但是实际情况是“Foo”被输出到命令行里!因为在右边,`b` 已经被映射到别的行为上了,换句话说就是 `:echo "Foo"<cr>`。
|
||||
|
||||
解决此问题的正确方法是使用一种_非递归_的映射代替:
|
||||
解决此问题的正确方法是使用一种 _非递归_ 的映射代替:
|
||||
|
||||
```vim
|
||||
:nnoremap a b
|
||||
@ -1837,9 +1837,9 @@ Neovim 尝试把这些变得更顺畅,如果终端支持的话,它会自动
|
||||
|
||||
### 在终端中按 ESC 后有延时
|
||||
|
||||
如果你经常使用命令行,那么肯定要接触_终端模拟器_,如 xterm、gnome-terminal、iTerm2 等等(与实际的[终端](https://en.wikipedia.org/wiki/Computer_terminal)不同)。
|
||||
如果你经常使用命令行,那么肯定要接触 _终端模拟器_ ,如 xterm、gnome-terminal、iTerm2 等等(与实际的[终端](https://en.wikipedia.org/wiki/Computer_terminal)不同)。
|
||||
|
||||
终端模拟器与他们的祖辈一样,使用 [转义序列](https://zh.wikipedia.org/wiki/%E8%BD%AC%E4%B9%89%E5%BA%8F%E5%88%97) (也叫_控制序列_)来控制光标移动、改变文本颜色等。转义序列就是以转义字符开头的 ASCII 字符串(用[脱字符表示法](https://zh.wikipedia.org/wiki/%E8%84%B1%E5%AD%97%E7%AC%A6%E8%A1%A8%E7%A4%BA%E6%B3%95)表示成 `^[` )。当遇到这样的字符串后,终端模拟器会从[终端信息](https://en.wikipedia.org/wiki/Terminfo)数据库中查找对应的动作。
|
||||
终端模拟器与他们的祖辈一样,使用 [转义序列](https://zh.wikipedia.org/wiki/%E8%BD%AC%E4%B9%89%E5%BA%8F%E5%88%97) (也叫 _控制序列_ )来控制光标移动、改变文本颜色等。转义序列就是以转义字符开头的 ASCII 字符串(用[脱字符表示法](https://zh.wikipedia.org/wiki/%E8%84%B1%E5%AD%97%E7%AC%A6%E8%A1%A8%E7%A4%BA%E6%B3%95)表示成 `^[` )。当遇到这样的字符串后,终端模拟器会从[终端信息](https://en.wikipedia.org/wiki/Terminfo)数据库中查找对应的动作。
|
||||
|
||||
为了使用问题更加清晰,我会先来解释一下什么是映射超时。在映射存在歧义的时候就会产生映射超时:
|
||||
|
||||
@ -1854,7 +1854,7 @@ Neovim 尝试把这些变得更顺畅,如果终端支持的话,它会自动
|
||||
|
||||
- `<esc>` 作为返回普通模式或取消某个动作的按键而被大量使用
|
||||
- 光标键使用转义序列进行的编码
|
||||
- Vim 期望 <kbd>Alt</kbd> (也叫作 _Mate Key_)会发送一个正确的 8-bit 编码的高位,但是许多终端模拟器并不支持这个(也可能默认没有启用),而只是发送一个转义序列作为代替。
|
||||
- Vim 期望 <kbd>Alt</kbd> (也叫作 _Mate Key_ )会发送一个正确的 8-bit 编码的高位,但是许多终端模拟器并不支持这个(也可能默认没有启用),而只是发送一个转义序列作为代替。
|
||||
|
||||
你可以这样测试上面所提到的事情: `vim -u NONE -N` 然后输入 `i<c-v><left>` ,你会看到一个以 `^[` 开头的字符串,表明这是一个转义序列,`^[` 就是转义字符。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user