https://shaobin-jiang.github.io/blog/posts/neovim-beginner-guide/02/
h → left
j → down
k → up
l → right
There are three modes.
Command Mode, Insert Mode, and Normal Mode.
Type : to enter the command mode, type i to enter the insert mode.
Mac 配置代理
Note: The word “environment” is misspelled in the title. The correct spelling is “environment” (with an ‘n’ before ‘ment’).
为终端设置永久代理
每次启动终端时都自动设置代理,可以将代理配置添加到你的 shell 配置文件(如 .bash_profile, .zshrc, .bashrc 等)。
如果你使用 zsh,编辑 .zshrc 文件:
nano ~/.zshrc在文件末尾添加以下行:
export http_proxy=http://<代理服务器地址>:<端口>
export https_proxy=http://<代理服务器地址>:<端口>
export all_proxy=socks5://<代理服务器地址>:<端口>
按 Ctrl + X,然后按 Y 确认保存,最后按回车键退出。
执行以下命令使其生效:
source ~/.zshrc如果你使用 bash,编辑 .bash_profile 或 .bashrc 文件:
nano ~/.bash_profile在文件末尾添加以下行:
export http_proxy=http://<代理服务器地址>:<端口>
export https_proxy=http://<代理服务器地址>:<端口>
export all_proxy=socks5://<代理服务器地址>:<端口>
按 Ctrl + X,然后按 Y 确认保存,最后按回车键退出。
执行以下命令使其生效:
source ~/.bash_profile你可以使用以下命令来验证是否正确设置了代理:
使用 curl:
curl -I <https://www.google.com>
配置环境变量 Mac and Windows
如果你使用的是 zsh(默认的 shell 在 macOS 10.15+),打开 ~/.zshrc 文件:
nano ~/.zshrc在配置文件中添加你需要的环境变量。比如,如果你想设置 Neovim 的路径或某些特定的配置,可以添加如下内容:
export PATH="/Users/ferry/Documents/nvim-macos-arm64/bin/nvim:$PATH"在 nano 中,按 Ctrl + X,然后按 Y 保存文件,最后按 Enter 退出。
通过运行以下命令,使更改立即生效:
- 如果你编辑的是
~/.zshrc:
source ~/.zshrcwhich nvim
# 如果输入这个指令返可以回 Neovim 的安装路径,说明环境变量设置成功插入一个新行(newline)
| 命令 | 作用 |
|---|---|
o | 在当前行下面插入新行,并进入插入模式 |
O | 在当前行上面插入新行,并进入插入模式 |
A | 跳到行尾进入插入模式(不会新建行) |
I | 跳到行首第一个非空字符进入插入模式 |
Yank
| 操作 | 命令 | 说明 |
|---|---|---|
| 复制当前行 | yy | 最常用,复制当前整行 |
| 复制当前行 | Y | 在大多数 Vim 中等同于 yy |
| 复制 N 行 | 5yy | 从当前行开始复制 5 行 |
| 复制到文件末尾 | yG | 从当前行复制到最后一行 |
| 复制到行首 | y0 | 复制到行首(不包括当前字符前) |
| 复制到行尾 | y$ | 从光标复制到行尾 |
Move
| 命令 | 功能 |
|---|---|
w | 下一个单词开头 |
b | 上一个单词开头 |
e | 当前/下一个单词结尾 |
ge | 上一个单词结尾 |
Shift+Tab
In normal mode, just press shift+>
Obsidian tricks
ctrol + tab 可以快速切换标签页,这个快捷键可以同时在obdidian和浏览器中使用
选中括号内内容(不包括 [])
Visual 模式:
vi[
或
vi]
结果选中:
C, U
选中整个 [](包括括号)
va[
Obsidian 配置双链和代码快捷键
安装 vim motion插件后
在.obsidian文件新建init.lua
insert:
-- 双链 `[[ content ]]`
vim.keymap.set("v", "[[", 'c[[<C-r>"]]<Esc>', { remap = false })
-- 代码 `content`
vim.keymap.set("v", "`", 'c`<C-r>"`<Esc>', { remap = false })init.vimrc
" ==============================
" Obsidian Vim Markdown shortcuts
" ==============================
" Visual selection -> [[word]]
vnoremap [[ <Esc>`<i[[<Esc>`>a]]<Esc>
" Visual selection -> `word`
vnoremap ` <Esc>`<i`<Esc>`>a`<Esc>
" Visual selection -> *word*
vnoremap * <Esc>`<i*<Esc>`>a*<Esc>
" Visual selection -> **word**
vnoremap ** <Esc>`<i**<Esc>`>a**<Esc>latest version
" ==============================
" Obsidian Vim Markdown shortcuts
" ==============================
" Visual selection -> [[word]]
vnoremap [[ <Esc>`<i[[<Esc>`>a]]<Esc>
" Visual selection -> `word`
vnoremap ` <Esc>`<i`<Esc>`>a`<Esc>
" Visual selection -> *word*
vnoremap * <Esc>`<i*<Esc>`>a*<Esc>
" Visual selection -> **word**
vnoremap ** <Esc>`<i**<Esc>`>a**<Esc>
" Visual selection -> ==word==
vnoremap <leader>= <Esc>`<i==<Esc>`>a==<Esc>IDEA vim
| 快捷键 | 功能 |
|---|---|
gd | Go to Definition(定义) |
gD | Declaration |
gr | References(引用) |
gi | Implementation(实现类) |
gy | Type Definition |
Idea hybrid line number
Enable the option
You can switch lines by using j and k
10 j
10 k
搜索 /
搜索完成后,回到 Normal 模式
/keyword
<Enter>
输入完成后,按 Enter 就已经回到 Normal 模式了。
然后可以:
n:跳到下一个匹配
N:跳到上一个匹配
选中超链接
viW
切換標籤頁
in obsidian
go to nextTab
gtgo to previousTab
gT刪除當前行,保留内容
S or
cc更改单个字符
按 r +
[新字符]:将光标所在位置的字符替换为新字符,且依然保持在 Normal(普通)模式。
配置 EasyMotion
Obsidian
Install Vim Motion plugin, enable the feature
Flash-style f/F/t/T Show labels on all visible matches when pressing f/F/t/T.Single match auto- jumps.
Idea Vim
"" 1. Enable the built-in EasyMotion extension
set easymotion
"" 2. Map standard f/F/t/T to EasyMotion's 1-character jump commands
map f <Plug>(easymotion-f)
map F <Plug>(easymotion-F)
map t <Plug>(easymotion-t)
map T <Plug>(easymotion-T)Vscode Vim
{
// 1. Enable built-in EasyMotion
"vim.easymotion": true,
// 2. Remap f/F/t/T to EasyMotion 1-character jump
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["f"],
"after": ["<leader>", "<leader>", "f"]
},
{
"before": ["F"],
"after": ["<leader>", "<leader>", "F"]
},
{
"before": ["t"],
"after": ["<leader>", "<leader>", "t"]
},
{
"before": ["T"],
"after": ["<leader>", "<leader>", "T"]
}
],
// 3. Auto-jump to the target if there is only 1 match
"vim.easymotionJumpToAnywhereRegex": "\\b[a-zA-Z0-9]",
"vim.visualModeKeyBindings": [
{
"before": ["<", "<"],
"commands": [
"editor.action.outdentLines"
]
},
{
"before": [">", ">"],
"commands": [
"editor.action.indentLines"
]
}
]
分屏操作
1. 开启与关闭分屏
| 快捷键 / 命令 | 动作 | 说明 |
|---|---|---|
:sp [filename] | 上下分屏 | 水平拆分窗口(或在 Normal 模式按 Ctrl+w s) |
:vsp [filename] | 左右分屏 | 垂直拆分窗口(或在 Normal 模式按 Ctrl+w v) |
:q / Ctrl+w c | 关闭当前屏 | 关闭光标所在的当前分屏 |
:only / Ctrl+w o | 仅保留当前屏 | 关闭除了当前窗口以外的所有分屏 |
2. 在分屏间切换光标
所有窗口切换动作均以 Ctrl+w(即 Ctrl + w)开头:
Ctrl+w h:移动到 左 边窗口Ctrl+w j:移动到 下 边窗口Ctrl+w k:移动到 上 边窗口Ctrl+w l:移动到 右 边窗口Ctrl+w w:按顺序轮换切换到下一个窗口
3. 调整分屏大小与位置
调整窗口尺寸
Ctrl+w =:所有分屏等宽等高(最常用)Ctrl+w +/Ctrl+w -:增加 / 减少当前窗口高度Ctrl+w >/Ctrl+w <:增加 / 减少当前窗口宽度:res +5或:vertical res +5:通过命令行精准调整高度/宽度
移动窗口位置Ctrl+w H(大写):将当前窗口移到最左侧(变为全高左右分屏)Ctrl+w J(大写):将当前窗口移到最下方(变为全宽上下分屏)Ctrl+w K(大写):将当前窗口移到最上方Ctrl+w L(大写):将当前窗口移到最右侧Ctrl+w r:顺时针旋转互换窗口位置