初始化WSL 2 + nodejs

发行版:Ubuntu 20.04

系统更新

# cat EOF 用法:https://blog.csdn.net/lym152898/article/details/83306993

mv /etc/apt/sources.list /etc/apt/sources.list.bak

sudo su
cat > /etc/apt/sources.list <<EOF
# 中科大 @see https://www.cnblogs.com/leeyazhou/p/12976814.html
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
EOF

exit

sudo apt update
sudo apt upgrade

编译安装vim

安装zsh

sudo apt install zsh

安装nvm&node

https://github.com/nvm-sh/nvm

下载install.sh,然后执行: bash install.sh

安装vim套件

mkdir Applications && cd Applications

git clone git@git.zhlh6.cn:vim/vim.git  # github加速插件提供的加速地址
git clone git@github.com:ilaipi/k-vim.git
git clone git@github.com:ilaipi/k-tmux.git

https://github.com/ohmyzsh/ohmyzsh/tree/master/tools
# 先下载 install.sh 然后执行
sh -c install.sh

git clone git@git.zhlh6.cn:ilaipi/dotfiles.git
cd dotfiles && sh -x intall.sh

git clone git@git.zhlh6.cn:tmux/tmux.git
# install tmux @see https://github.com/tmux/tmux

sudo apt install automake
sudo apt install build-essential
sudo apt-get install pkg-config
sudo apt install libevent-dev
sudo apt-get install ncurses-dev
sudo apt install bison

# install k-vim
# after install k-vim, need compile YouCompleteMe
cd ~/.vim/bundle/YouCompleteMe
python3 install.py --clang-completer --clangd-completer --ts-completer

# install k-tmux
clone and install (ln -s)
ln -sf tmux.conf ~/.tmux.conf

# install tmux tpm
# 需要先clone下来tpm包管理器才能安装其它插件
git clone git@git.zhlh6.cn:tmux-plugins/tpm.git ~/.tmux/plugins/tpm

Vim 编译安装 +python3支持

日常开发用vim,习惯了脱离鼠标写代码。

今天升级了一堆插件,然后打开Vim报错了,YouCompleteMe插件需要vim编译的时候支持python,所以重新编译vim。

从官方Repo clone代码:

# --depth=1 不拉log
git clone git@github.com:vim/vim.git --depth=1

参考

YouCompleteMe

https://github.com/wklken/k-vim

Configure

export PREFIX='/usr/local/vim8'

# 如果不是第一次安装,python版本升级过,可能需要执行这几条命令来清空缓存:
make mostlyclean
make clean
make distclean
make maintainer-clean
git clean -dnX

# mac (last build: 2020/11/26)
./configure --with-features=huge \
            --enable-multibyte \
            --enable-rubyinterp=dynamic \
            --with-ruby-command=/usr/local/opt/ruby/bin/ruby \
            --enable-python3interp=yes \
            --with-python3-config-dir=/usr/local/Cellar/python@3.9/3.9.0_2/Frameworks/Python.framework/Versions/Current/lib/python3.9/config-3.9-darwin \
            --enable-perlinterp=yes \
            --enable-luainterp=yes \
            --enable-gui=gtk2 \
            --enable-cscope \
            --prefix=$PREFIX

# mac (for new mac)
brew install python
brew install ruby
./configure --with-features=huge \
            --enable-multibyte \
            --enable-rubyinterp=dynamic \
            --with-ruby-command=/opt/homebrew/opt/ruby/bin/ruby \
            --enable-python3interp=yes \
            --with-python3-config-dir=/opt/homebrew/Frameworks/Python.framework/Versions/Current/lib/python3.9/config-3.9-darwin \
            --enable-perlinterp=yes \
            --enable-luainterp=yes \
            --enable-gui=gtk2 \
            --enable-cscope \
            --prefix=$PREFIX

# ubuntu (wsl2)
# 可能需要先执行这个命令安装一些依赖(没有验证哪些是必须的)。可以不执行,如果make install不成功再执行
# sudo apt install ncurses-dev libncurses5-dev     libgtk2.0-dev libatk1.0-dev  libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev python3-dev ruby-dev lua5.1  libperl-dev
./configure --with-features=huge \
        --enable-multibyte \
        --enable-rubyinterp \
        --enable-python3interp=yes \
        --with-python3-config-dir=/usr/lib/python3.8/config-3.8-x86_64-linux-gnu \
        --enable-perlinterp=yes \
        --enable-luainterp=yes \
        --enable-gui=auto \
        --enable-gtk2-check \
        --with-x \
        --enable-cscope \
        --with-compiledby="Billy Yang" \
        --prefix=$PREFIX

执行这个命令,设置–with-python3-command=为本机的python3可执行文件路径。

Make & Install

make
sudo make install

Update default vim

执行这个多行命令,更新默认的,会把“/vim/vi/gvim”全部改为新安装的vim。

sudo sh -c "update-alternatives --install /usr/bin/editor editor $PREFIX/bin/vim 1;
update-alternatives --set editor $PREFIX/bin/vim;
update-alternatives --install /usr/bin/vim vim $PREFIX/bin/vim 1;
update-alternatives --set vim $PREFIX/bin/vim;
update-alternatives --install /usr/bin/vi vi $PREFIX/bin/vim 1;
update-alternatives --set vi $PREFIX/bin/vim;
update-alternatives --install /usr/bin/gvim gvim $PREFIX/bin/gvim 1;
update-alternatives --set gvim $PREFIX/bin/gvim"

执行这个命令之后,如果执行vim仍然不是自己编译安装的,可以通过 whereis vim 查看当前有哪些vim命令,我自己电脑上多余的是 /usr/local/bin/vim ,删除了就可以了。

Check

打开vim,命令模式执行:echo has(“python3”),返回1,表示已启用python3

这时候,vim插件的错误应该都没有了,可以正常使用。

Compile YCM

python3 install.py --java-completer --ts-completer

# or
python3 install.py --clang-completer --go-completer --rust-completer --java-completer --ts-completer

vim 命令记录

参考: 简明 Vim 练级攻略

替换

把所有行的 search 替换为 replacement

其中,\rreplacement中表示换行

:%s/search/replacement
:10,20s/search/replacement    //指定10-20行之间匹配的进行替换

删除空行

把所有空白行删掉

//仅空白行
:g/^$/d
:v/./d
:10-20g/^$/d                  //指定10-20行之间,其它相同
//仅包含空白符也算空白行
:g/^\s*$/d
:v/\S/d

宏录制

记录一系列操作,快速重复

输入 qa 开始录制宏,记录在寄存器 a (命名为 a)

做任何需要的,完成后在 Normal 模式按 q 结束录制

@a 在当前光标下重复 a
@@ 在当前光标下重复 刚刚录制的宏
10@@ 在当前光标下重复10次刚刚录制的宏

多光标操作

标记多个相同的文本,统一操作。常用于局部某变量重命名

使用插件: terryma/vim-multiple-cursors

可以先使用 Visual Mode 选中需要操作的,然后Next Key (<C-m/n>) 选中下一个

处理csv文件

在mac上面很多csv文件用excel打开会乱码,这时候需要设置bomb,设置之后就正常了。用vim打开文件,然后命令模式执行::set bomb。如果有需要移除bomb,执行::set nobomb