关于vim配置

vim是一个好用的编辑器,但是配置不好就像拿到了屠龙刀缺只会用来拍黄瓜一样,十分难受。小伙伴们有没有哪种可以直接抄作业的配置方案。

就…默认呗。

我都是在 ssh 里用的

默认是真的难受 :joy: 我自己接受不了,不知道你们咋用的

你需要啥功能啊,我的需求就是改改配置文件…

有没有对gb18030支持比较好的文本编辑器啊,
现在只找到cnbook、Textpro、wxMEdit这三个能直接打开就识别为18030,而不需要手动切换编码

事实上, 很多编辑器都是有 “自动识别编码” 的设定的.

姑且以 Visual Studio Code 为例. 可修改配置:

"files.autoGuessEncoding": true

当然了, 我不知道这个功能是否跟您的文本相容; 因为, 我不是您, 我没有 18030 文本.

我听说您想要维姆配置.

正如蛙蛙所言, 您无妨说说您的需求.

我跟他一样, 很少使用维姆本身. 我一般在别的编辑器使用维姆模式罢.


最近一直在打乳胶文本; 所以, 我就不切换标点为 “全角” 了.

为啥你的账号被ban了还能发言:joy:

我想, 您看到了下面的文字, 对罢.

:warning: The account is being banned

请您视其为符号; 它没有什么特殊意义; 我也没有被禁言.

github上挺多的,不妨搜寻一下

我现在用的是这个 GitHub - SpaceVim/SpaceVim: A community-driven modular vim/neovim distribution - The ultimate vimrc
但是我自己用的就只有补全和语法高亮,这个对我来说有一些臃肿,所以在找一些简单够用的配置

原来如此:joy:

gb18030相当于中文版的utf8,很多软件就算开启了自动识别,依然是无法真的识别的,好像是gb18030和utf8太像了

我需要这个功能是因为输入法码表是这个

我是拿这位大佬做的配置

改的,还不错。

2 Likes

文件 ~/.vimrc_vimrc,看需要添加,代码前后加上 mark 标记可以折叠和管理,方便删除。

  • 剪切板,使 y,d,x,p 和 ctrl-c 和 ctrl-v 一个效果,并且能互相混用。
Summary
" clipboard {{{
" y,d,x,p 和 ctrl-c和ctrl-v 一个效果,并且能互相混用。
" 生效前提:使用命令 vim --version 的结果中 Ex 命令中中有+clipboard,如果是-,表明不适用
" 但还是建议使用ctrl+insert复制,shift+insert粘贴,这个是通用的
set clipboard=unnamed
" }}}
  • 乱码问题,不同编辑器环境下,还要对应的做测试。
Summary
"encoding {{{
"set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set encoding=utf-8
"set termencoding=cp936
language messages zh_CN.UTF-8
"}}}
  • 设置颜色主题,还是从默认主题中选一个的好,主题插件会引起性能问题。
Summary
" 设置颜色主题 {{{
" 使用默认的主题
" color evening " 夜间主题
" 使用vimdiff (或者 vim -d)命令时, 颜色可能难以辨别, 此时换个主题就可以了 {{{
" 经测试, 亮色主题有shine, 暗色主题有pablo,
colorscheme pablo
" 这两个主题都能很好的显示出文件的不同之处 }}}
" }}}
  • 设置 gvim 显示字体
Summary
" GUI {{{
" 设置 gvim 显示字体 {{{
" https://stackoverflow.com/questions/3316244/set-gvim-font-in-vimrc-file
" let g:Powerline_colorscheme='solarized256'
" 以下字体搭配默认主题挺不错的, 还不卡顿...
if has("gui_running")
  if has("gui_gtk2")
    set guifont=Inconsolata\12
  elseif has("gui_macvim")
    set guifont=Menlo\ Regular:h14
  elseif has("gui_win32")
    set guifont=Consolas:h12:cANSI " 可以对数字进行调整来修改字体大小
  endif
endif
" }}}
  • 相对行号,方便上下跳转
Summary
" 显示行号 {{{
" Make the line number of the line where the cursor is not displayed as 0
set number
" show relative number 
"      直接查看代码片段占用多少行
"      使用比如 7j 和 7k 向下或者向上移动 7 行
"      使用比如 d7j 和 7dk 向下或者向上删除 7 行
set relativenumber
" }}}
  • 状态栏外观
Summary
" 总是显示状态栏
set laststatus=2
" 显示光标当前位置
set ruler

  • 文本渲染
Summary
" 开启语法高亮功能
syntax enable
" 允许用指定语法高亮配色方案替换默认方案
syntax on
" 在vimdiff命令时关闭语法高亮, 看得更清晰
if &diff
    syntax off
endif
  • 设置 vim 文本折叠方式为 marker,并设置打开文件时自动跳转到上次退出编辑的位置。
    三个左右花括号配对出现,使用 zo, zc, zm 等快揵键折叠,或展开,前后可以加注释 (如 //{{{
    // }}}),所以不会影响原有代码。
Summary

image

" vim 文件折叠方式为 marker  : set foldmethod=marker {{{
set foldmethod=marker
augroup ft_vim
  au!
  autocmd FileType vim setlocal foldmethod=marker

  " 打开文件总是定位到上次编辑的位置
  autocmd BufReadPost *
    \ if line("'\"") > 1 && line("'\"") <= line("$") |
    \   exe "normal! g`\"" |
    \ endif
augroup END
" }}}
  • 设置 tab 键的大小为 2,并用空格替换 tab 制表符(对应的可以用vim 命令 :retab
Summary
" Format {{{
" 以下是设置tab的步长为2
set shiftwidth=2
set softtabstop=2
set tabstop=2 " 设置编辑时制表符占用空格数
set expandtab " 将制表符扩展为空格


" 禁止折行,折行
set nowrap
" 更加平滑的逐个字符扩展显示,在用 `l` 键右移超出屏幕显示范围时,显示效果会好一些。
set sidescroll=1
" }}}
  • F5 一键编译并运行代码
Summary

" Press F5 to run code {{{
" 按F5一键编译并运行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
  exec "w"
  if &filetype == 'c'
    exec "!g++ % -DLOCAL -o   %<"
    exec "! ./%<"
  elseif &filetype == 'cpp'
    exec "!g++ % -std=c++11 -DLOCAL -Dxiaoai -o    %<"
    exec "! ./%<"
  elseif &filetype == 'java'
    exec "!javac %"
    exec "! java %<"
  elseif &filetype == 'sh'
    :! bash %
  elseif &filetype == 'python'
    exec "! python %"
  endif
endfunc
" }}}

文名重命名时会打开一个文本缓冲区,类似 total commander 的批量重命名时的用编辑器编辑.

Summary
" Plugins {{{
" PlugInstall! and PlugUpdate
call plug#begin('~/.vim/plugged')

Plug 'yianwillis/vimcdoc'     " vim 中文文档
Plug 'lambdalisue/fern.vim'   " fern Tree,better than nerdtree
Plug 'maralla/completor.vim'  " code completion framework for vim8. https://github.com/maralla/completor.vim

" Initialize plugin system
set rtp+=~/.vim/

call plug#end()
" Plugins_end }}}

推荐这个:GitHub - amix/vimrc: The ultimate Vim configuration (vimrc)
GitHub排名第一,没有太复杂的框架配置,安装插件也很方便,属于不重不轻的配置,强烈推荐

1 Like

那就是说, 您只在特定的一个目录下有这个需求, 对吗?

如果这样, 您可以考虑局部地修改默认编码.

Visual Studio Code 有所谓的 “工作区”.

假如文件的扩展名是固定的, 您甚至可以只为特定的一类文件设置默认编码.

我用这个编辑器主要是界面较为现代与简洁.

我在用spacevim

请容许我稍微离题.

我一般使用 “维姆模拟器”:


不过, 我确实不太了解真维姆的配置; 所以, 您看看别人分享的配置罢.

假如有人对这个维姆模拟器的配置感兴趣, 我倒是可附上我的配置.

放置下面的 {} 内的文字到 settings.json 的最外层的 {} 内.

{
    "vim.easymotion": true,
    "vim.foldfix": true,
    "vim.hlsearch": true,
    "vim.insertModeKeyBindingsNonRecursive": [
        {
            "after": [
                "<Esc>"
            ],
            "before": [
                "j",
                "j"
            ]
        }
    ],
    "vim.normalModeKeyBindingsNonRecursive": [
        {
            "before": [
                "<leader>",
                "/"
            ],
            "commands": [
                ":noh"
            ]
        },
        {
            "before": [
                "<leader>",
                "1"
            ],
            "commands": [
                "workbench.action.showCommands"
            ]
        },
        {
            "before": [
                "<leader>",
                "b"
            ],
            "commands": [
                "workbench.action.toggleSidebarVisibility"
            ]
        }
    ],
    "vim.smartRelativeLine": true,
    "vim.sneak": true,
    "vim.useSystemClipboard": true,
    "vim.visualModeKeyBindingsNonRecursive": [
        {
            "after": [
                "p",
                "g",
                "v",
                "y"
            ],
            "before": [
                "p"
            ]
        },
        {
            "before": [
                "<leader>",
                "/"
            ],
            "commands": [
                ":noh"
            ]
        },
        {
            "before": [
                "<leader>",
                "1"
            ],
            "commands": [
                "workbench.action.showCommands"
            ]
        },
        {
            "before": [
                ">"
            ],
            "commands": [
                "editor.action.indentLines"
            ]
        },
        {
            "before": [
                "<"
            ],
            "commands": [
                "editor.action.outdentLines"
            ]
        }
    ]
}

放置下面的 [] 内的文字到 keybindings.json 的最外层的 [] 内. 参考这里.

[
    {
        "key": "up",
        "command": "cursorUp",
        "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode == 'Insert' && !suggestWidgetMultipleSuggestions && !suggestWidgetVisible"
    },
    {
        "key": "down",
        "command": "cursorDown",
        "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode == 'Insert' && !suggestWidgetMultipleSuggestions && !suggestWidgetVisible"
    }
]

對於編碼轉換,我覺的akelpad做的非常好,你可以在打開文件之後任意設置打開編碼及保存編碼。

你提到的cnbook、textpro,這兩款我都有用出bug,因此我後來就不用了。

wxMEdit沒用過。

手機上也有好幾款好用的文本編輯器,我最喜歡的是jota。