---
title: "在任何 Vim 模式下快速上下移动整行"
description: "我在 vim 里经常上下移动代码行，所以创建了一些 mapping 让这件事更轻松。这些 mapping 对应 ⌘-j 往下移、⌘-k 往上移。在 normal、insert 和 visual 模式都能用。vim nnoremap <D-j> :m…"
canonical: https://oozou.com/til/quickly-move-lines-up-and-down-in-any-vim-mode-37
locale: zh-Hans
date: 2020-10-13
topic: vim
---

# 在任何 Vim 模式下快速上下移动整行

> 我在 vim 里经常上下移动代码行，所以创建了一些 mapping 让这件事更轻松。这些 mapping 对应 ⌘-j 往下移、⌘-k 往上移。在 normal、insert 和 visual 模式都能用。vim nnoremap <D-j> :m…

Published: 2020-10-13 · Topic: [vim](https://oozou.com/zh-Hans/til-topics/vim) ([markdown](https://oozou.com/zh-Hans/til-topics/vim.md))

我在 vim 里经常上下移动代码行，所以创建了一些 mapping 让这件事更轻松。
这些 mapping 对应 *⌘-j* 往下移、*⌘-k* 往上移。在 normal、insert 和 visual 模式都能用。
*vim
nnoremap `<D-j>` :m .+1`<CR>`==
nnoremap `<D-k>` :m .-2`<CR>`==
inoremap `<D-j>` `<Esc>`:m .+1`<CR>`==gi
inoremap `<D-k>` `<Esc>`:m .-2`<CR>`==gi
vnoremap `<D-j>` :m '>+1`<CR>`gv=gv
vnoremap `<D-k>` :m '\<-2`<CR>`gv=gv*
我用的是 MacVim，所以使用 *D(⌘)* 作为 modifier 键。若要在终端版的 vim 中使用，请改用其他 modifier，例如 *`<A-j>`*

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/zh-Hans/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
