佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1540|回复: 11

#vim

[复制链接]
发表于 7-5-2015 01:19 PM | 显示全部楼层 |阅读模式
本帖最后由 回到零點 于 8-5-2015 12:08 PM 编辑

相信使用 Linux/Unix 的人對 vim 這個 editor 應該不會陌生。我自己也使用了多年的 vim,但是最近才開始認真學習 “她”。哈
好吧,開這個帖主要的目的只是分享我學到的一些 vim tips 也希望這些 tips 能幫助到大家在日常 vim 的使用上。

我不曉得自己會堅持多久,所以暫時不做分類,純粹想到什麼就寫什麼。
如果能寫到一定的量,到時候才做分類吧。哈

===
目錄
===
Insert-Normal mode: 在 Insert mode 裡快速執行一個 Normal mode 的指令。
在 Insert mode 裡,delete word 或 line with Ctrl-W, Ctrl-U。
用 dot, 是的那個 . 來重複你之前的指令/動作。
用 f 或 F 來 search cursor 當下在的那行的一個 character。f 是往前尋找, F 是往後。

评分

参与人数 2积分 +40 人气 +10 收起 理由
reikyv + 5 谢谢分享
nick_khor + 40 + 5 原创,谢谢分享!

查看全部评分

回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 7-5-2015 01:27 PM | 显示全部楼层
本帖最后由 回到零點 于 7-5-2015 01:31 PM 编辑

1) 在 Insert mode 裡,如果只要執行一個 Normal mode 的指令,可以使用 Normal-Insert mode。
Normal-Insert mode 會讓你執行一個 normal mode 的指令,然後回 insert mode。


例子:
你在 Insert mode 裡 coding 到一半,突然想要把 windows 重刷 (Normal mode 裡的 zz 指令)。
你可以直接按 Ctrl-O 然後 zz, 然後繼續 coding 哈

回复

使用道具 举报

 楼主| 发表于 7-5-2015 02:00 PM | 显示全部楼层
2) 在 Insert mode 裡,delete word 或 line with Ctrl-W, Ctrl-U。

Ctrl-W delete cursor 前的 word
Ctrl-U delete cursor 前到 line

比如,你正在寫著東西,發覺寫的那個 word 錯了,instead of 用 backspace 去一個一個 delete 掉再重寫,你可以直接 Ctrl-W 把那個 delete。如果要把整行 delete 則可以用 Ctrl-U。

注:這兩個指令在 command line 也適用。
回复

使用道具 举报

 楼主| 发表于 7-5-2015 09:36 PM | 显示全部楼层
3) 用 dot, 是的那個 . 來重複你之前的指令/動作。

比如在 normal mode 裡,你用 dap 指令刪除整段 paragraph。
你要重複這個指令,只需要一直不斷地按 .

可以說是王牌 shortcut。哈
回复

使用道具 举报

 楼主| 发表于 8-5-2015 12:07 PM | 显示全部楼层
本帖最后由 回到零點 于 8-5-2015 12:10 PM 编辑

先謝謝版主的加分。哈。

4)用 f<char> 或 F<char> 來 search cursor 當下在的那行的一個 character。f 是往前尋找, F 是往後。

e.g. 你的 cursor 在這一行的第一個 f,然後你要跳到第二個 f:

function foo {

你可以在 Normal mode 下,直接按 ff 就可以了。
如果要繼續往起 search,就按 ;
往後search,就按 ,


注:這個只適用於 single line search。如果要做全文搜索:
/ forward search
? backward search
然後,用
n 往前繼續 search
N 往後繼續 search
回复

使用道具 举报

发表于 8-5-2015 10:49 PM | 显示全部楼层
回到零點 发表于 7-5-2015 02:00 PM
2) 在 Insert mode 裡,delete word 或 line with Ctrl-W, Ctrl-U。

Ctrl-W delete cursor 前的 word

或者是按 dd,直接 delete 整条 line
回复

使用道具 举报

Follow Us
 楼主| 发表于 9-5-2015 12:34 AM | 显示全部楼层
nick_khor 发表于 8-5-2015 10:49 PM
或者是按 dd,直接 delete 整条 line

不錯,dd 可以在 normal mode 裡把整行刪掉。

但是如果你現在正在 insert mode,比如打了這行:
I am a boy. You are a girl.
你的cursor在最後的.
你想把整行改成:
I am not a girl. You are a girl.
那麼你可以用以下steps:
Ctrl-O -> 進入 normal-insert mode
?Y -> 在 normal mode 裡做 backward search 'Y',自動切回 insert mode
Ctrl-U -> 把從 cursor 到最前那邊刪掉。(在 insert mode)
然後繼續輸入那幾個字。

當然有很多個方法可以完成以上的更改,不過我只是想示範如何在不 switch mode 的狀態下做簡單的刪除動作。

其實有時候還真的因人而異,有的人打字快。搞不好真行刪掉再重寫更加快。哈

评分

参与人数 1人气 +5 收起 理由
nick_khor + 5 我很赞同

查看全部评分

回复

使用道具 举报

发表于 17-6-2015 02:09 AM 来自手机 | 显示全部楼层
我用来用去都是那几个command罢了,懒惰人一个
回复

使用道具 举报


ADVERTISEMENT

发表于 29-6-2015 08:48 AM | 显示全部楼层
打岔一下, 說起vim, 當然不能不提這個遊戲 --> http://vim-adventures.com/

评分

参与人数 1人气 +10 收起 理由
nick_khor + 10 谢谢分享

查看全部评分

回复

使用道具 举报

发表于 29-6-2015 03:35 PM | 显示全部楼层
nsda 发表于 29-6-2015 08:48 AM
打岔一下, 說起vim, 當然不能不提這個遊戲 --> http://vim-adventures.com/

我按按几下就放弃了 lol
回复

使用道具 举报

发表于 29-6-2015 03:46 PM | 显示全部楼层
nick_khor 发表于 29-6-2015 03:35 PM
我按按几下就放弃了 lol

我應該是比你按多幾下而已
回复

使用道具 举报

发表于 1-7-2015 10:21 PM | 显示全部楼层
vim 我觉的最好用的就是 regexp pattern and search
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 28-10-2025 02:49 PM , Processed in 0.144954 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表