{"id":266,"date":"2024-07-03T01:49:21","date_gmt":"2024-07-03T01:49:21","guid":{"rendered":"https:\/\/codingismycraft.blog\/?p=266"},"modified":"2026-02-12T17:36:47","modified_gmt":"2026-02-12T17:36:47","slug":"arch-installing-vim-9-from-source-code","status":"publish","type":"post","link":"https:\/\/codingismycraft.blog\/index.php\/2024\/07\/03\/arch-installing-vim-9-from-source-code\/","title":{"rendered":"Arch: Installing vim 9 from source code"},"content":{"rendered":"<h2>Summary<\/h2>\n<p>The vim that is installed by default when installing arch does not support neither clipboard nor python. The same applies to the vim version that can be install from the remote repositories using <code>pacman<\/code>. The objective of the posting is to install vim 9 complied with clipboard and python support.<\/p>\n<p>See also: <a href=\"https:\/\/gist.github.com\/codingismycraft\/87f7d1bd6feb8e3b36a5246ec7a9255a\">install vim9 from source code<\/a><\/p>\n<h2>Check vim version<\/h2>\n<p>To check whether vim supports clipboard or python we can use the vim &#8211;version command and check the output as we can see here:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n[john@archlinux ~]$ vim --version\r\nVIM - Vi IMproved 9.1 (2024 Jan 02, compiled Jun 17 2024 22:29:09)\r\nIncluded patches: 1-496\r\nCompiled by Arch Linux\r\nHuge version without GUI.  Features included (+) or not (-):\r\n-clipboard         +keymap            +printer           +vertsplit\r\n+cmdline_compl     +lambda            +profile           +vim9script\r\n+cmdline_hist      +langmap           -python            +viminfo\r\n+cmdline_info      +libcall           +python3\/dyn       +virtualedit\r\n<\/pre>\n<p>Note the minus sign before the clipboard and the python features; this means that the installed version of vim does not support them and this is what we need to fix.<\/p>\n<h2>Installing vim from source code<\/h2>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nsudo pacman -S vim\r\n\r\ngit clone https:\/\/github.com\/vim\/vim.git\r\n\r\ncd vim\/src\r\n\r\n.\/configure --with-features=huge --enable-multibyte --enable-rubyinterp \\\r\n--enable-python3interp --with-python-config-dir=\/usr\/lib\/python3.12\/config-3.9-x86_64-linux-gnu \\\r\n--enable-perlinterp --enable-luainterp --enable-gui=gtk2 --enable-cscope \\\r\n--prefix=\/usr\r\n\r\nsudo make install\r\n\r\n<\/pre>\n<h2>Ubuntu: Installing vim from source code<\/h2>\n<p><script src=\"https:\/\/gist.github.com\/codingismycraft\/87f7d1bd6feb8e3b36a5246ec7a9255a.js\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary The vim that is installed by default when installing arch does not support neither clipboard nor python. The same applies to the vim version&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"footnotes":""},"categories":[7,6],"tags":[8,10,9],"class_list":["post-266","post","type-post","status-publish","format-standard","hentry","category-arch","category-programming","tag-arch","tag-clipboard","tag-vim"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":397,"url":"https:\/\/codingismycraft.blog\/index.php\/2026\/01\/30\/stop-trying-to-turn-vim-into-a-bloated-ide-youre-missing-the-point\/","url_meta":{"origin":266,"position":0},"title":"Stop trying to turn Vim into a bloated IDE. You\u2019re missing the point.","author":"john","date":"January 30, 2026","format":false,"excerpt":"As a programmer, I spend the better part of my life staring at a grid of pixels. Over the decades\u2014stretching back to the days of Turbo Pascal and Borland C++\u2014I\u2019ve used every heavyweight tool in the book. I\u2019ve been there for the \"Version 1.0\" launches of Visual Studio, Eclipse, and\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":221,"url":"https:\/\/codingismycraft.blog\/index.php\/2014\/05\/13\/the-best-programmers-editor\/","url_meta":{"origin":266,"position":1},"title":"The best programmer&#8217;s editor","author":"john","date":"May 13, 2014","format":false,"excerpt":"As a professional programmer, I spend thousands of hours in front of a computer screen every year and without a doubt the two tools I use the most are the operating system command prompt and my editor of choice. Here I will talk about the later, which happens to be\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":279,"url":"https:\/\/codingismycraft.blog\/index.php\/2024\/10\/03\/the-challenges-of-python-migration-lessons-from-c-and-beyond\/","url_meta":{"origin":266,"position":2},"title":"The Challenges of Python Migration: Lessons from C++ and Beyond","author":"john","date":"October 3, 2024","format":false,"excerpt":"One project that confirmed the need for caution and conservatism when estimating deadlines involved migrating a massive codebase of over 4,000 Python files and 250+ open-source libraries from Python 3.6 to 3.10. What was initially seen as a straightforward task, expected to take just a few weeks, ended up consuming\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":213,"url":"https:\/\/codingismycraft.blog\/index.php\/2017\/10\/04\/adding-descriptors-to-your-python-arsenal\/","url_meta":{"origin":266,"position":3},"title":"Adding descriptors to your python arsenal","author":"john","date":"October 4, 2017","format":false,"excerpt":"Python\u00a0provides a\u00a0 rich programming paradigm providing the ability to the programmer to express his solutions in a very concise and elegant way.\u00a0 One of the python features that is not in wide use although it gives the opportunity to simplify certain pieces of code,\u00a0is the descriptor protocol which is the\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":217,"url":"https:\/\/codingismycraft.blog\/index.php\/2014\/05\/26\/interface-driven-programming-in-python\/","url_meta":{"origin":266,"position":4},"title":"Interface Driven Programming In Python","author":"john","date":"May 26, 2014","format":false,"excerpt":"If it looks like a duck, quacks like a duck and walks like a duck, it's a duck Probably the greatest feature of python is its dynamic nature.\u00a0 By this we mean that variable names are not bound to types and they also can be assigned at run time, this\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":219,"url":"https:\/\/codingismycraft.blog\/index.php\/2014\/05\/23\/python-decorators-basics\/","url_meta":{"origin":266,"position":5},"title":"Python Decorators Basics","author":"john","date":"May 23, 2014","format":false,"excerpt":"Introduction to decorators Decorators introduce a programming paradigm that is not found in statically linked languages, like C++ or Java. Taking advantage of closures and the fact that functions are first class citizens of python, we can easily change the behaviour of them adding a single line of code. If\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts\/266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/comments?post=266"}],"version-history":[{"count":11,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts\/266\/revisions"}],"predecessor-version":[{"id":433,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts\/266\/revisions\/433"}],"wp:attachment":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/media?parent=266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/categories?post=266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/tags?post=266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}